Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Push OpenAPI specs, build SDKs in ten languages, publish API docs, and triage production SDK errors.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
OCTRI_API_KEY, OCTRI_PROJECT_ID, OCTRI_PROFILE, HTTPS_PROXY, NO_PROXYValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"cli": {
"command": "npx",
"args": [
"-y",
"@octri/cli",
"mcp",
"serve"
],
"env": {
"OCTRI_API_KEY": "your-value",
"OCTRI_PROJECT_ID": "your-value",
"OCTRI_PROFILE": "your-value",
"HTTPS_PROXY": "your-value",
"NO_PROXY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add cli --env OCTRI_API_KEY=your-value --env OCTRI_PROJECT_ID=your-value --env OCTRI_PROFILE=your-value --env HTTPS_PROXY=your-value --env NO_PROXY=your-value -- npx -y @octri/cli mcp serveFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"cli": {
"command": "npx",
"args": [
"-y",
"@octri/cli",
"mcp",
"serve"
],
"env": {
"OCTRI_API_KEY": "your-value",
"OCTRI_PROJECT_ID": "your-value",
"OCTRI_PROFILE": "your-value",
"HTTPS_PROXY": "your-value",
"NO_PROXY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"cli": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@octri/cli",
"mcp",
"serve"
],
"env": {
"OCTRI_API_KEY": "your-value",
"OCTRI_PROJECT_ID": "your-value",
"OCTRI_PROFILE": "your-value",
"HTTPS_PROXY": "your-value",
"NO_PROXY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
OCTRI_PROJECT_ID envOCTRI_PROFILE envNO_PROXY envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified against the domain octri.dev (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: OCTRI_API_KEY, HTTPS_PROXY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.0.6) reached the registry 25 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, topo^alpin
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Avalanche bulletins and mountain weather forecasts for any place in the Alps.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
octri is the command line for your Octri project. It does what the dashboard does: push a spec, build SDKs, publish docs, and work through the errors those SDKs report from production.
Octri takes an OpenAPI spec and gives you a documentation site, client libraries in ten languages, an MCP server, and monitoring for the API behind all of it. See octri.dev.
Node 20 or newer.
npm install -g @octri/cli
octri --help
octri auth login
octri projects use octri specs push ./openapi.yaml
auth login prompts for your email and password, and for your authenticator code if you have two-factor on. projects use with no argument opens a picker.
specs push waits for the pipeline, not the upload. Your spec parses in about a second, then the doc pages, search index and changelog get written behind it. The spinner names the stage it is on.
octri sdk audit # what is costing you, scored
octri sdk build --lang go,typescript --download
In a terminal, sdk build draws a lane per language and repaints it through generating, verifying, packaging, installing, ready. Piped or under CI it prints append-only lines instead, and exits non-zero if any language fails, so it works as a build step with no extra flags.
sdk audit scores the spec and marks which findings the generator can fix on its own. octri sdk audit apply writes one in.
For a look at real generator output without spending a build:
octri sdk preview --lang go
octri sdk preview --lang go --show client.go
octri docs versions publish <specId>
octri docs versions label "Stable" octri docs domain set docs.example.com
docs domain prints the CNAME and TXT records to create, then docs domain verify checks them.
The site's structure is drafted like it is in the API Studio. Redirects, the home page and draft endpoints wait for a publish; nav buttons apply on save:
octri docs redirects add /old-guide /guides/install
octri docs home set octri docs nav publish
octri docs endpoints add POST /refunds --summary "Refund a payment" octri docs endpoints publish
octri docs components push ./components/Banner.jsx octri docs buttons add "Sign up" https://app.example.com --style primary
A component file holds the markup alone: one root element, HTML attribute names (class, not className), and props written as {name}.
The sidebar itself round-trips through a file, and is drafted like the rest:
octri docs nav --json > nav.json
octri docs nav set nav.json octri docs nav publish
Appearance, SEO, social links, page feedback, the API playground and custom code have no draft: each set is live when it returns. Keys are spelled as in the API, @file reads a value from a file, and an empty value clears a link:
octri docs theme set primaryColor=#ff6a00 colorScheme=dark codeTheme=nord
octri docs seo set metaDescription="Payments API reference" indexable=true octri docs socials set github=https://github.com/acme x= octri docs feedback on octri docs playground set enabled=true allowedOrigins=https://acme.com octri docs custom-code set css=@docs.css enabled=true
In Git Bash on Windows, a lone argument starting with / is rewritten into a Windows path before the CLI sees it. Set MSYS_NO_PATHCONV=1, or use PowerShell, for commands that take docs paths.
Reads and triage run on your session, so they need nothing but a login:
octri monitoring summary
octri monitoring issues --status unresolved octri monitoring issue octri monitoring resolve
monitoring issue prints the stack and marks which frames resolved against uploaded source maps. When none of them did, the release those errors came from has no symbols, and the CLI says so.
The two upload commands work differently. They talk to the monitoring service directly with an ingest token, because a CI job has one secret and no way to log in:
# CI
octri monitoring sourcemaps upload ./dist \ --url "$MONITORING_URL" --token "$MONITORING_TOKEN" \ --environment "$MONITORING_ENVIRONMENT" --release "$GIT_SHA"
octri monitoring sourcemaps upload ./dist
Run octri monitoring config for the three values to store as CI secrets. The release you upload under has to equal the release your SDK reports at runtime, or the service has nothing to pair a trace with.
| Group | What | ||||
|---|---|---|---|---|---|
auth | login · logout · whoami · token · profiles | ||||
config | list · set · use · path | ||||
projects | list · show · create · use · current | ||||
specs | list · push · import · status · delete · `convert [import\ | report]` | |||
sdk | languages · operations · `settings get\ | set · validate · audit [apply\ | ignore\ | source] · quickstart [set\ | unset] · preview · build · builds · watch · artifacts · download · retry · publish · repos · stats` |
docs | `pages [generate\ | regenerate\ | publish\ | title] · show · guides · nav · redirects · home · buttons · components · endpoints · versions · domain · changelog` | |
monitoring | status · enable · summary · issues · issue · `resolve\ | ignore\ | reopen\ | comment · logs · traces · performance · releases · alerts · checks · sourcemaps upload · sources upload · config` | |
orgs | list · show · switch · usage · billing · invoices · members · invites | ||||
keys | list · create · revoke | ||||
github | status · connect · sync · auto-sync · `docs [pull\ | sync]` | |||
webhooks | list · events · create · update · test · deliveries · delete | ||||
jobs | list · show | ||||
mcp | tools · permissions [set] · usage · calls · `package [download\ | publish] · serve` |
Run octri --help for one group on its own.
Global flags: --project , --profile , --api-url , --json, --quiet, --plain, --no-color.
| Mode | When | What you get |
|---|---|---|
| Interactive | A terminal | Colour, spinners, live build lanes, tables |
| Plain | Piped, or CI is set | Append-only lines, no escape sequences |
--json | You ask for it | One JSON document on stdout, errors on stderr |
--json is the one to script against:
octri sdk builds --json | jq '.[0].status'
octri monitoring issues --status unresolved --json | jq 'length'
NO_COLOR and FORCE_COLOR are both honoured.
State lives in ~/.octri/config.json, mode 0600, since it holds session tokens. OCTRI_CONFIG_DIR moves it.
Profiles keep environments side by side:
octri config use prod --api-url api.octri.dev
octri config set defaultLanguages go,rust,swift
Every value resolves flag first, then environment, then the stored profile.
| Variable | Effect |
|---|---|
OCTRI_PROFILE | Profile to use |
OCTRI_API_URL | API root (local is shorthand for :3001) |
OCTRI_TOKEN | Bearer token, bypassing the stored session |
OCTRI_API_KEY | API key for the public routes |
OCTRI_PROJECT_ID | Default project |
OCTRI_CONFIG_DIR | Where config and the artifact cache live |
OCTRI_DEBUG | Print stack traces on failure |
The CLI and octri mcp serve read the standard proxy variables, in upper or lower case, with no extra Node flag. https:// requests use HTTPS_PROXY, or HTTP_PROXY when that is the only one set. Hosts listed in NO_PROXY, and their subdomains, connect directly; * turns the proxy off.
export HTTPS_PROXY=http://user:password@proxy.internal:3128
export NO_PROXY=localhost,127.0.0.1,corp.example octri specs push ./openapi.yaml
If the proxy inspects TLS with its own certificate authority, point Node at that CA with NODE_EXTRA_CA_CERTS=/path/to/ca.pem.
MCP clients usually start servers with a minimal environment, so set these in the server's env block rather than relying on your shell.
octri mcp serve
This speaks MCP over stdio and offers the same commands as typed tools. An assistant can push a spec, wait for the build, read the generated Go, and then read the production error that build caused.
To add it to Cursor or VS Code in one click, through npx so no global install is needed:
The server uses the profile from octri auth login, so sign in first, or set OCTRI_API_KEY in its environment. An API key reaches the public routes only: the docs, webhook and MCP-management tools need the signed-in profile. Listed in the official MCP Registry as dev.octri/cli.
// Claude Desktop / Cursor
{ "mcpServers": { "octri": { "command": "octri", "args": ["mcp", "serve"] } } }
Credentials come from your stored profile and the assistant never sees them. Reads are open. The operations you cannot take back are refused unless you start the server with the flag for them:
octri mcp serve --allow-publish # publishing SDKs, your MCP package, or the drafted docs nav
octri mcp serve --allow-delete # deleting specs, components or webhooks
Tool failures come back as tool results rather than protocol errors, so an assistant can read the message and correct itself.
/ws/sdk socket authenticates from a header or cookie, which Node's built-in WebSocket cannot set, and a WebSocket dependency would buy about a second of latency on a build that takes minutes.tar and zip readers, so neither binary needs to be installed. Both refuse entries that would write outside the destination directory.@modelcontextprotocol/sdk is the only runtime dependency. Colour, spinners, progress bars, tables and prompts are all local.| 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. |
Node · Python · Go · Ruby · Rust · PHP · Java · Kotlin · Swift · Dart
Documentation · Pricing · Changelog
MIT licensed.