@octri/mcp
An MCP server that turns your API documentation into tools an AI assistant cancall. Claude, Cursor, VS Code Copilot, and any other MCP client can search yourendpoints, open a guide, pull a ready-to-use SDK snippet in any supportedlanguage, and check the changelog for breaking changes, all from the sameOpenAPI spec your docs are built from.
Octri turns an OpenAPI spec into a documentation site, client SDKs for tenlanguages, an MCP server your AI assistant can call, and monitoring for theAPI behind them. This package is the MCP server. Seeoctri.dev/mcp.
Node 20 or newer. Runs over stdio for a local client, or Streamable HTTP whenyou host it.
Install
npx -y @octri/mcp
Most clients are configured with that command, so a global install is optional.The Installation section below has the exact config block for each one.
Or install it in one click. VS Code asks for your project ID; Cursor writesYOUR_PROJECT_ID into its mcp.json for you to replace.
Listed in the official MCP Registry as dev.octri/mcp.
Tools
| Tool | Description |
|---|---|
search_docs |
Search the API documentation for an endpoint or concept |
get_endpoint |
Get full documentation for a specific API endpoint |
list_endpoints |
List all available API endpoints, optionally filtered by section |
get_changelog |
Get recent API changes and breaking changes |
list_sdks |
List the available SDK client libraries (languages, versions, download links) |
get_guide |
Get the full content of a written guide by its slug |
get_sdk_methods |
Get ready-to-use SDK code snippets for each endpoint in every supported language |
Installation
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"my-api-docs": {
"command": "npx",
"args": ["@octri/mcp", "--project-id", "YOUR_PROJECT_ID"]
}
}
}
Cursor
Add to .cursor/mcp.json in your project root (or ~/.cursor/mcp.json globally):
{
"mcpServers": {
"my-api-docs": {
"command": "npx",
"args": ["@octri/mcp"],
"env": {
"OCTRI_PROJECT_ID": "YOUR_PROJECT_ID"
}
}
}
}
VS Code (Copilot / MCP extension)
Add to .vscode/mcp.json:
{
"servers": {
"my-api-docs": {
"type": "stdio",
"command": "npx",
"args": ["@octri/mcp", "--project-id", "YOUR_PROJECT_ID"]
}
}
}
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
OCTRI_PROJECT_ID |
Yes* | None | The project to connect to. Can also be set via --project-id CLI flag. |
OCTRI_API_URL |
No | https://api.octri.dev/api/v1 |
Override the API base URL (useful for self-hosted deployments). |
MCP_TRANSPORT |
No | stdio |
http for remote hosting (Streamable HTTP), or sse for the legacy transport. |
PORT |
No | 3000 |
HTTP port for the http and sse transports. |
MCP_HOST |
No | 127.0.0.1 |
Interface to bind. Widening it requires MCP_AUTH_TOKEN. |
MCP_ALLOWED_ORIGINS |
No | None | Comma-separated browser origins allowed to reach an HTTP transport. |
MCP_AUTH_TOKEN |
When MCP_HOST is not loopback |
None | Bearer token every HTTP request must send as Authorization: Bearer <token>. |
* Required unless every tool call passes projectId explicitly.
Credentials for the API being called
Operation tools call your real API, and these supply its credentials:
| Variable | Description |
|---|---|
OCTRI_API_BASE_URL |
Target API base for operation calls (falls back to the studio's Base URL). |
OCTRI_API_TOKEN |
Bearer / OAuth2 token. |
OCTRI_API_KEY (+ OCTRI_API_KEY_HEADER) |
API-key value, and the header it goes in (default X-API-Key). |
OCTRI_API_USERNAME / OCTRI_API_PASSWORD |
Basic-auth credentials. |
All of these are sent as HTTP headers. An API that takes its credentials inthe request body instead (Plaid's client_id and secret, for example) isnot served by them: those are ordinary body fields, so they appear as toolarguments and the agent passes them like any other field. SettingOCTRI_API_KEY for such an API adds a header it ignores.
Remote hosting
Use Streamable HTTP (MCP_TRANSPORT=http), the transport the MCP spec hasdefined for remote servers since revision 2025-03-26 and the one a currentclient tries first:
docker build -t octri-mcp .
docker run -p 3000:3000 \
-e MCP_TRANSPORT=http \
-e OCTRI_PROJECT_ID=YOUR_PROJECT_ID \
octri-mcp
It serves a single endpoint, POST /mcp, and runs statelessly, so requestscarry no session and any number of replicas can sit behind a load balancer.Point a remote MCP client at http://your-host:3000/mcp.
Legacy HTTP+SSE transport
MCP_TRANSPORT=sse serves the older 2024-11-05 design, kept so existingdeployments keep working. It exposes GET /sse to open a connection andPOST /messages?sessionId=<id> to relay client messages. Prefer http foranything new.
Binding and origins
Both HTTP transports bind 127.0.0.1 by default and refuse any request whoseOrigin is not listed in MCP_ALLOWED_ORIGINS, or whose Host is notloopback. This server holds your API credentials, and any page the browservisits can reach a loopback port.
Widening MCP_HOST puts those credentials on the network, so the server thenrefuses to start without MCP_AUTH_TOKEN, and every request must sendAuthorization: Bearer <token>. Configure the same header in your MCP client,and list browser origins explicitly.
Local development
# Build
pnpm build
# Run in stdio mode
OCTRI_PROJECT_ID=my-project node dist/index.js
# Run in Streamable HTTP mode (POST /mcp)
MCP_TRANSPORT=http OCTRI_PROJECT_ID=my-project node dist/index.js
# Run in the legacy SSE mode
MCP_TRANSPORT=sse OCTRI_PROJECT_ID=my-project node dist/index.js
Publishing
pnpm build
npm publish --access public
Requires an npm account with access to the @octri scope.
The rest of Octri
| Product | What it does |
|---|---|
| API Studio | Your OpenAPI spec becomes a hosted documentation site with a live request playground, editable page by page. |
| SDK Studio | The same spec becomes client libraries for ten languages, versioned and released together. |
| MCP | Your endpoints and docs become tools an AI assistant can call, generated from the same spec. |
| Monitoring | Errors, traces, uptime and releases for the API, joined to the SDK calls that reached it. |
Monitoring runtimes
Node ·Python ·Go ·Ruby ·Rust ·PHP ·Java ·Kotlin ·Swift ·Dart
Documentation ·Pricing ·Changelog
MIT licensed.