← axis mundi

mcp server

Model Context Protocol endpoint for cloud code agents

MCP 2025-03-26 JSON-RPC 2.0 Streamable HTTP

Axis Mundi exposes its full workspace registry — Google Keep, Docs, Sheets, Gmail, and Calendar — plus a seven-state workflow lifecycle to any MCP-compatible agent. Remote agents can read content, query statuses, and drive items through the pipeline in real time.

architecture data flow
Cloud Agent
    │
    ▼  POST /mcp (JSON-RPC 2.0)
┌──────────────┐
│  MCP Server  │──── Bearer Auth (MCP_API_KEY)
└──────┬───────┘
       │
  ┌────┴────┐
  ▼         ▼
Workspace  Status
Service    Manager
  │         │
  ▼         ▼
Google    SQLite +
APIs      SSE → TUI

Status changes propagate to all connected TUI clients via SSE in real time.

Quick start

Connect in three steps.

1 · Configure

Set an optional API key in your environment:

MCP_API_KEY=your-secret-key
2 · Start

The endpoint starts automatically with Axis Mundi:

go run ./cmd/axis
3 · Connect

Point your agent at the MCP endpoint:

POST http://localhost:8080/mcp

MCP Tools

Eleven tools across four domains.

Keep 3 tools
list_notes

List all Keep notes with titles and content snippets.

get_note

Retrieve the full content of a specific note by ID.

search_notes

Search notes by keyword across titles and content.

Docs · Sheets · Gmail · Calendar 4 tools
get_doc

Retrieve the plain text content of a Google Doc.

get_sheet

Read cell values from a Google Sheet with optional range.

get_gmail_thread

Retrieve the full conversation content of a Gmail thread.

get_calendar_event

Retrieve the details and description of a Google Calendar event.

Registry 1 tool
list_workspace

Unified registry across all item types. Returns ID, type, title, snippet, current status, and resource URI for every item.

Status 3 tools
get_status

Get the current workflow status of any workspace item.

set_status

Set an item's status. Broadcasts via SSE to all connected TUI clients.

list_statuses

List status of all tracked items and the allowed status values.

Workflow lifecycle

Seven states for every workspace item.

Pending

Not yet acted upon

Execute

Queued for execution

Active

Currently in progress

Blocked

Waiting on dependency

Review

Ready for review

Complete

Done

Error

Needs attention

Status changes made via MCP are persisted to SQLite, broadcast via SSE to all connected TUI clients, and reflected in the unified registry in real time. Agents and human operators share the same status state.

MCP Resources

Every workspace item is addressable by URI.

Type URI scheme
Keepkeep://notes/{id}
Docsdocs://documents/{id}
Sheetssheets://spreadsheets/{id}
Gmailgmail://threads/{id}
Calendarcalendar://events/{id}

MCP Methods

initialize Handshake — returns server info and capabilities
ping Health check
resources/list List all workspace items with status
resources/read Read full content by URI
tools/list List available tools
tools/call Invoke a tool

Example calls

Copy-paste curl commands to test the endpoint.

initialize Handshake with the server
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-secret-key-here" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "clientInfo": { "name": "my-agent", "version": "1.0.0" }
    }
  }'
list_workspace Get all items with statuses
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-secret-key-here" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": { "name": "list_workspace", "arguments": {} }
  }'
set_status Update a workflow status
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-secret-key-here" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "set_status",
      "arguments": { "id": "doc456", "status": "Review" }
    }
  }'
get_note Read a Keep note by ID
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-secret-key-here" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "get_note",
      "arguments": { "noteId": "abc123" }
    }
  }'
resources/read Read a resource by URI
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-secret-key-here" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "resources/read",
    "params": { "uri": "docs://documents/doc456" }
  }'

Agent configuration

Connect your agent in one config block.

VS Code / Copilot
{
  "servers": {
    "axis-mundi": {
      "type": "http",
      "url": "http://localhost:8080/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_KEY"
      }
    }
  }
}

Add to .vscode/mcp.json or user settings.

Claude Desktop
{
  "mcpServers": {
    "axis-mundi": {
      "type": "streamableHttp",
      "url": "http://localhost:8080/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_KEY"
      }
    }
  }
}

Add to claude_desktop_config.json.

Error codes

Standard JSON-RPC 2.0 error responses.

JSON-RPC 2.0
Code Meaning
-32700Parse error — malformed JSON
-32600Invalid request — bad JSON-RPC version
-32601Method not found
-32602Invalid parameters
-32603Internal error — API failure

Start building

Clone the repo and connect your first agent.