MCP server
Use Epismo tools and resources from MCP clients, including setup, auth, sessions, and tool behavior.
The Epismo MCP server exposes pack and track operations as Model Context Protocol tools. AI clients can read reusable context from packs, then create or update task and goal tracks when work becomes actionable. The server also exposes context resources for the current user, projects, users, and agents so clients can choose the right IDs and scopes before mutating data.
When to use MCP
Use MCP when an AI client should operate Epismo directly.
| Goal | Why MCP fits |
|---|---|
| Let an agent find reusable context packs | It can call epismo_pack_search and epismo_pack_get |
| Let an agent break a plan into tasks | It can create multiple tracks with epismo_track_apply |
| Let ChatGPT or Claude read team context | OAuth and resources preserve user/workspace context |
| Let an agent update a workflow pack | Pack update tools use PATCH semantics |
Use the HTTP API for backend integrations, the CLI for local and CI workflows, and MCP for direct agent-client access.
Server identity and transport
- Server name:
epismo-mcp - Transport endpoint:
POST /for Streamable HTTP JSON-RPC - Session close:
DELETE / - Health checks:
GET /health,GET /healthz - OAuth protected resource metadata:
GET /.well-known/oauth-protected-resource - OAuth authorization server metadata:
GET /.well-known/oauth-authorization-server
Authentication
MCP clients authenticate with Authorization: Bearer <oauth_access_token>. The token must include the mcp scope. Server metadata advertises mcp and offline_access, allowing clients to refresh access tokens without forcing sign-in every time.
The client setup flow is:
- Register the Epismo MCP server URL in your MCP client.
- Complete OAuth and grant the
mcpscope. - Send the MCP initialize request.
- Store the returned session ID.
- Read resources before calling mutation tools.
Sessions
The first request is MCP initialize. The server returns an Mcp-Session-Id header and expects the client to send that header on later requests in the same session. Use DELETE / to close a session.
curl -i https://mcp.epismo.ai/ \
-H "content-type: application/json" \
-H "accept: application/json, text/event-stream" \
-H "authorization: Bearer <token>" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"0.1.0"}}}'Resources
Read resources before choosing IDs for tool calls.
| URI | Contents |
|---|---|
epismo://context/current_user |
Current user/account/workspace JSON |
epismo://context/projects |
Projects accessible in the selected workspace |
epismo://context/users |
Workspace users visible to the caller |
epismo://context/agents |
Installed agents available for assignment |
Task assignees can use user IDs or agent IDs. Workflow pack step assignees use human or agent IDs only.
See Resources for payload examples and access field rules.
Pack tools
| Tool | Purpose |
|---|---|
epismo_pack_create |
Create a workflow or context pack |
epismo_pack_update |
Patch a pack by UUID, alias, share URL, or hub URL |
epismo_pack_get |
Read outline, selected nested content, or full content |
epismo_pack_search |
Search workflow/context packs |
epismo_pack_like |
Like or unlike a pack |
epismo_pack_delete |
Delete a pack and aliases you own that point to it |
For large packs, start with epismo_pack_get in outline mode. Use contentIndex.stepIds or contentIndex.blockIds from the response to fetch only the nested content the agent needs. Use full=true only when the client truly needs the entire pack.
epismo_pack_search consumes credits. epismo_pack_get is still best used in outline-first mode for large packs so the client only hydrates the content an agent actually needs.
See Tools for example tool arguments.
Track tools
| Tool | Purpose |
|---|---|
epismo_track_create |
Create a task or goal |
epismo_track_update |
Patch a task or goal by UUID/URL |
epismo_track_get |
Read one track |
epismo_track_search |
Search tasks/goals with filters |
epismo_track_apply |
Bulk create/update/delete tracks |
epismo_track_delete |
Delete a track |
When an agent plans multiple tasks, epismo_track_apply is usually the best tool. Non-UUID draft IDs let the agent express dependencies within the same call.
epismo_track_search consumes credits. When an agent is exploring, narrow filters first and fetch detail only for tracks that matter.
Credit behavior
In MCP, agent usage and search calls consume credits. Credits are consumed from the current personal/workspace context resolved by the OAuth token. If the context does not have enough credits, the tool call may fail with a credit/payment error.
Alias tools
| Tool | Purpose |
|---|---|
epismo_alias_upsert |
Create or repoint an alias for a pack you own |
epismo_alias_delete |
Delete an alias you own |
Aliases point to packs only. Tracks are referenced by UUID or URLs containing a UUID.
Scopes and sharing
MCP mutation tools use the same access model as the API.
{ "scope": { "type": "personal" } }{ "scope": { "type": "projects", "ids": ["project-id"] } }Search tools accept scopes, an array of personal/project scopes. Mutation tools accept sharedWith with userIds and emails. On update, omitted access fields preserve the existing record's access settings.
Local development
The monorepo MCP service listens on port 8080 by default.
npm install
npm run mcp:devUseful environment variables are MCP_URL, API_URL, WEB_URL, and backend gRPC addresses. Production clients should use the hosted MCP URL rather than local development endpoints.