What MCP gives you
An MCP server exposes tools (callable functions) and resources (readable data) to BOR. Install the GitHub MCP and BOR can manage your repos; install the Postgres MCP and it can query your database; install the filesystem MCP and it can work across a directory. MCP is how you extend BOR’s reach into your other systems.Looking for Gmail, Calendar, Slack, and the other everyday services? Those have their own one-click flow — the connectors gallery — which wires them up as MCP servers for you automatically. The marketplace is for everything beyond that.
The pieces
- The runtime (
server/runtime/mcp.js) — discovers configured servers, connects to them (stdio, SSE, or streamable-HTTP), and dispatches tool/resource calls. - The config (
.bor/mcp.json, per-presence) — the{ "mcpServers": { … } }map of servers. The AI reads and writes this; the marketplace installs into it. - The marketplace (a window in the presence) — browse, search, AI-find, and install servers from a hosted catalog. See Marketplace.
The MCP tools
BOR calls MCP through these tools (server/protocol/handlers/agent.js):
So a typical flow is:
list_mcp_servers → list_mcp_tools (on the one you want) → use_mcp_tool with the right arguments.
Transports
server/runtime/mcp.js supports the standard MCP transports:
- stdio — BOR spawns the server as a subprocess and talks over stdin/stdout (the most common; e.g. an
npxserver). - SSE — connect to a server over Server-Sent Events.
- streamable-http — connect over streamable HTTP (e.g. a hosted/cloud server with an
Authorizationheader).
Per-presence
MCP config is per-presence: each presence has its own.bor/mcp.json and its own set of servers. Your “work” presence can have the GitHub + Jira servers while your “home” presence has none. See Multi-presence.
Where to go next
- Marketplace — discover and install servers.
- Ask AI — describe a need and let the AI pick matching servers.
- Configuring servers — the
.bor/mcp.jsonformat and manual setup.