GitHub
Concept

MCP Server

ProxifAI exposes its core APIs as Model Context Protocol tools — connect Claude Desktop, Cursor, or any MCP-compatible client to drive ProxifAI from outside.

ProxifAI ships an MCP server out of the box. It speaks JSON-RPC 2.0 over Server-Sent Events at /api/v1/mcp/sse (with /api/v1/mcp/message for the request channel) and exposes 14 tools that wrap ProxifAI’s most-used APIs. Any MCP-compatible client — Claude Desktop, Cursor, the Gemini CLI, custom agents — can connect and drive your workspace as if it were a tool palette.

The direction matters: ProxifAI is an MCP server. It does not connect to external MCP servers. The platform’s own agents talk to ProxifAI directly via the pfai CLI — there’s no MCP layer in that path. Use the MCP server when an external client wants to use ProxifAI as a tool.

How it works

External AI client                                  ProxifAI
(Claude Desktop, Cursor,                            ──────────
 Gemini CLI, …)                                     internal/integrations/mcp
       │                                              │
       │  POST /api/v1/mcp/message  (JSON-RPC 2.0)    │
       ├─────────────────────────────────────────────►│  mcp.Server.HandleMessage
       │                                              │       ├── initialize
       │  GET  /api/v1/mcp/sse                        │       ├── tools/list
       │◄────────────────────────────────────────────►│       └── tools/call
       │  text/event-stream of tool responses         │             │
       │                                              │             ▼
       │                                              │   Hits the same internal handlers
       │                                              │   the web UI uses

The protocol version is 2024-11-05. The server identifies as proxifai/1.0.0 (internal/integrations/mcp/server.go).

Available tools

All 14 tools are defined in tools.go and wrap ProxifAI’s REST surface. Each tool returns the same JSON shape the corresponding API returns.

ToolWhat it does
list_projectsList projects in the current org, optionally filtered by team or status
get_projectRead a project with embedded team + lead
list_issuesList issues with filters (status, priority, assignee, project, sprint, label)
get_issueRead a single issue with full graph (assignee, project, custom fields)
create_issueOpen an issue with title/description/priority/type/labels
update_issuePatch any issue field — status, priority, assignee, etc.
search_issuesFull-text search across title and description
create_commentPost a comment on an issue
list_agentsList configured AI agents in the org
dispatch_agentDispatch an agent against an issue or repo (creates an execution)
get_executionRead an agent execution’s status, output, and metadata
list_documentsList collaborative documents
send_notificationSend an inbox notification to a user or team
list_integrationsList configured integrations and their state

Each tool’s inputSchema is JSON-Schema and includes parameter types, defaults, and descriptions — the MCP client uses these for autocomplete and validation.

Connecting a client

The MCP server reads its identity from the standard Authorization: Bearer <token> header. Use a PAT with appropriate scopes — the tools obey the same RBAC as direct API calls, so a read-scoped token will only see the read tools usefully.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your platform:

{
  "mcpServers": {
    "proxifai": {
      "url": "https://your-proxifai-host/api/v1/mcp/sse",
      "headers": {
        "Authorization": "Bearer pfai_a1b2c3..."
      }
    }
  }
}

Restart Claude Desktop and proxifai shows up in the tool palette with all 14 tools available.

Cursor

In Settings → MCP → Add Server:

FieldValue
Nameproxifai
URLhttps://your-proxifai-host/api/v1/mcp/sse
Auth headerAuthorization: Bearer pfai_a1b2c3...

Custom client

Any client speaking MCP 2024-11-05 over SSE works. The minimum handshake:

POST /api/v1/mcp/message
Content-Type: application/json
Authorization: Bearer pfai_…

{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
  "protocolVersion":"2024-11-05",
  "capabilities":{},
  "clientInfo":{"name":"my-client","version":"1.0"}
}}

Then tools/list to enumerate, tools/call to invoke. Server-pushed events arrive on the SSE channel.

Permissions and audit

Tool calls hit the same handlers as REST calls and pass through the same authorization stack:

  • The PAT’s scope determines which tools succeed (a read-only token gets 403 on create_issue, etc.)
  • All actions appear in the org’s audit log under the PAT’s owner
  • Per-org feature flags gate access — disabling Workflows hides agent dispatch/execution tools

See also