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.
| Tool | What it does |
|---|---|
list_projects | List projects in the current org, optionally filtered by team or status |
get_project | Read a project with embedded team + lead |
list_issues | List issues with filters (status, priority, assignee, project, sprint, label) |
get_issue | Read a single issue with full graph (assignee, project, custom fields) |
create_issue | Open an issue with title/description/priority/type/labels |
update_issue | Patch any issue field — status, priority, assignee, etc. |
search_issues | Full-text search across title and description |
create_comment | Post a comment on an issue |
list_agents | List configured AI agents in the org |
dispatch_agent | Dispatch an agent against an issue or repo (creates an execution) |
get_execution | Read an agent execution’s status, output, and metadata |
list_documents | List collaborative documents |
send_notification | Send an inbox notification to a user or team |
list_integrations | List 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:
| Field | Value |
|---|---|
| Name | proxifai |
| URL | https://your-proxifai-host/api/v1/mcp/sse |
| Auth header | Authorization: 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 gets403oncreate_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
Push events out and accept events in — the other half of the integration story.
The other built-in integration with bidirectional message flow.
How to mint and scope a PAT for an MCP client.
When you want events to flow into ProxifAI rather than tool calls — use these instead.