Portal SDK overview
Drive the Fabric portal from agents via the MCP server — identity, workspaces, documents, projects, agents, workflows.
@fabric/mcp-server is a separate SDK from @fabricorg/integrations. Where the Integrations SDK lets your agents call out to vendor APIs (Slack, Stripe, etc.), the Portal SDK lets them drive the Fabric portal itself — managing the documents, projects, features, workflows, and agents that live inside your workspace.
It's distributed as an MCP server, so any MCP-aware client (Claude Desktop, Cursor, Zed, the Fabric portal's own chat) can call its tools.
Install
pnpm add -g @fabric/mcp-server
# now `fabric-mcp` is on your PATHConfigure Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your OS:
{
"mcpServers": {
"fabric": {
"command": "fabric-mcp",
"env": {
"FABRIC_API_KEY": "fab_...",
"FABRIC_API_URL": "https://app.fabric.pro"
}
}
}
}Restart Claude Desktop. The fabric tools will appear in the model's tool list automatically.
Authentication
The MCP server reads a long-lived API key from FABRIC_API_KEY. Generate one from your portal:
Settings → API Keys → New Key
Scope the key narrowly — each key inherits the issuing user's organization access and respects the same authority/RBAC checks the portal applies in the UI. Keys are revocable from the same settings page.
What the tools do
The server exposes ~20 tools grouped by resource. Same names appear in your MCP client's tool list:
| Group | Tools | Purpose |
|---|---|---|
| Identity | fabric_get_identity, fabric_list_organizations, fabric_switch_organization | Who am I, what orgs do I have, which org am I acting as |
| Workspaces | fabric_list_workspaces, fabric_get_workspace, fabric_query_workspace, fabric_upload_workspace_document | List + RAG-query knowledge bases |
| Documents | fabric_list_documents, fabric_get_document, fabric_create_document, fabric_update_document | CRUD on portal documents |
| Projects | fabric_list_projects, fabric_get_project, fabric_create_project | Project lifecycle |
| Agents | fabric_list_agents, fabric_get_agent_capabilities, fabric_chat_with_agent | Trigger agents conversationally |
| Workflows | fabric_list_workflows, fabric_get_workflow, fabric_execute_workflow, fabric_get_workflow_execution | Run + poll Temporal workflows |
Each page below documents the tool's input shape, what it returns, and a representative natural-language prompt you can run against it.
Why MCP and not a TypeScript SDK?
The portal SDK is what agents talk to — and agents speak MCP. By distributing as an MCP server we get a uniform contract across Claude, Cursor, Zed, and any future agentic client. The underlying HTTP API is also published as oRPC procedures (@repo/api) if you need to build a TypeScript client; see the GitHub repo for that surface.