MCP Server — Overview & Install

AxHub's MCP server apphub-mcp. Call 26 tools plus resources, prompts, and tasks over JSON-RPC 2.0, secured with OAuth Bearer.

What can you do with it?

From MCP-compatible AI agents like Claude and Cursor, you can drive AxHub's apps, deployments, DB, APIs, and GitHub in one place. 26 tools across 5 categories are ready to go.

The server is named apphub-mcp, and it speaks JSON-RPC 2.0.

Where the server lives

POST /mcp — send requests here

All tool calls and methods go to a single HTTPS endpoint /mcp as JSON-RPC 2.0 POSTs.

Terminal
$ curl -X POST https://api.jocodingax.ai/mcp \
  -H "Authorization: Bearer $AX_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Mcp-Session-Id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

GET /mcp — server push notifications here

Server-to-client pushes (resource changes, task progress) flow through an SSE stream on the same path. Just open GET with Accept: text/event-stream.

Keepalive pings every 30 seconds. If the connection drops and you reconnect, pass Last-Event-ID — we'll replay what you missed.

Protocol facts

  • Protocol version: 2025-11-25 (latest). Legacy 2025-03-26 still accepted.
  • Server name: apphub-mcp
  • Server version: APP_VERSION env var at deploy time, or dev locally.

Capabilities

initialize response (excerpt)
{
  "protocolVersion": "2025-11-25",
  "capabilities": {
    "tools": {},
    "resources": { "listChanged": true, "subscribe": true },
    "prompts":   { "listChanged": true },
    "tasks": {
      "list":   {},
      "cancel": {},
      "requests": { "tools": { "call": {} } }
    }
  },
  "serverInfo": { "name": "apphub-mcp", "version": "1.0.0" },
  "sessionId": "sess_abc123..."
}

How sessions work

Call initialize first — the server creates a session and hands back sessionId. Include it in the Mcp-Session-Id header on every follow-up call. The server double-checks the session owner matches the token owner.

If the session isn't yours

When Mcp-Session-Id doesn't match the token's owner (tenantID + userID), we drop the session ID and return forbidden on resource/tasks calls. Just re-initialize to get a fresh session.

Supported methods

MethodWhat it doesAuth
initializeCreates the session and agrees on protocolOAuth or guard
tools/listLists tools you can useOAuth + scope filter
tools/callActually runs a toolscope + per-app perms
prompts/list · prompts/getPrompt templatesOAuth
resources/list · resources/readDiscover and read deployment/app resourcesOAuth only
resources/subscribe · resources/unsubscribeTurn live notifications on/offOAuth + session
tasks/get · tasks/result · tasks/list · tasks/cancelManage long-running async workOAuth
notifications/initialized · pingConnection keepaliveopen

Tool categories (26 total)

CategoryCountTools
App10register_app, list_my_apps, get_app_url, manage_app, manage_ci, import_and_deploy, whats_next, set_app_spec, manage_oauth_client, env_vars
Deploy6deploy_app, rollback_deploy, preflight_check, list_deployments, restart_app, tail_deploy_logs
GitHub1connect_repo
Table4manage_table, records, search_table, alter_table
API5list_apis, get_api_schema, test_api, manage_api_key, discover_apis

Full per-tool schemas and examples live in the Tools Reference.