Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
MCP server that fronts any OpenAPI service: discover operations from its spec and call them
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"openapix": {
"command": "uvx",
"args": [
"mcp-openapix"
]
}
}
}ターミナルでこれを実行します
claude mcp add openapix -- uvx mcp-openapixプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"openapix": {
"command": "uvx",
"args": [
"mcp-openapix"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"openapix": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-openapix"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント alyiox で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.2.1)がレジストリに届いたのは38 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Rystic
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
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.
Start, seed, clock, inspect and diff Rystic API simulators from your agent.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
MCP server that fronts any OpenAPI service behind four generic tools.
An agent finds operations in each deployment's OpenAPI document and calls them; the server resolves the URL, obtains a bearer token, and builds the request. Discovery is list_platforms, list_endpoints and describe_endpoint; execution is the generic proxy call_endpoint.
example / us / items / prod
│ │ │ └── env ......... which deployment URL a call reaches │ │ └───────── service ..... one backend, one OpenAPI spec │ └─────────────── region ...... a geographic deployment └───────────────────── platform .... the product or API family
uvconfig.json describing the deployments you hold credentials forSet up your config (see Configuration), then run the server:
# Run directly with uvx (no clone needed)
npx -y @modelcontextprotocol/inspector@latest uvx mcp-openapix
# Or run from source
npx -y @modelcontextprotocol/inspector@latest uv run mcp-openapix
config.json MUST live at ~/.config/mcp-openapix/config.json (%USERPROFILE%\.config\… on Windows). config.example.json is a full template.
{
"headers": { "accept": "application/json" }, "defaults": { "platform": "example", "region": "us", "service": "items", "env": "prod" }, "platforms": { "example": { "regions": { "us": { "services": { "token_helper": "us", "items": { "desc": "Catalogue and inventory API", "spec_path": "/swagger/v1/swagger.json", "canonical_env": "prod", "envs": { "prod": { "url": "https://api.example.com/items" }, "dev": { "url": "https://api-dev.example.com/items" } } } } } } } }, "token_helpers": { "us": { "command": "token-helper", "args": ["issue"] } } }
platformsA hierarchy of platform → region → services → service → env. Each service declares:
| Field | Notes |
|---|---|
spec_path | Required. The OpenAPI JSON endpoint relative to the service URL |
canonical_env | Required when more than one env is configured — the env whose URL the spec is fetched from |
envs | Required. One entry per deployment environment, each carrying a full base url |
desc | Optional. A short description surfaced by list_platforms |
token_helper | Optional. The token helper this level binds to |
The services object may also contain a token_helper default applying to all services in that region. A service or environment can override it.
token_helpersNamed token helpers, in the same shape as an MCP server entry:
| Field | Required | Default | Notes |
|---|---|---|---|
command | yes | — | Resolved on PATH; never run through a shell |
args | no | [] | Passed verbatim |
timeout | no | 60 | Seconds before the helper's process group is killed; at most 300 |
The config names a command and nothing else, so config.json holds no secrets. The complete helper invocation and output contract is documented in docs/token-protocol.md.
Which helper a call uses is resolved most-specific-first:
env.token_helper → service.token_helper → services.token_helper
→ region.token_helper → platform.token_helper → defaults.token_helper
If no level declares a helper, the deployment is unauthenticated. Omit token_helper for public deployments.
headersConstant headers added to every API call — for APIs that require a tenant, product or locale header:
"headers": { "accept": "application/json", "x-product": "example" }
defaultsMakes every tool argument optional: a call falls back to defaults.platform, .region, .service, .env, .username and .token_helper when they are omitted.
| Field | Default | Notes |
|---|---|---|
truncate_threshold | 4096 | Response bytes returned inline before truncating to a preview |
response_cache_ttl | 3600 | Seconds a truncated body stays readable at its resource URI |
spec_refresh | {"auto": true, "interval": 7} | Background spec refresh; interval is days and MAY be fractional |
A stray comma while editing one platform takes down every platform: a parse failure precedes per-platform validation. The config MAY therefore be split into drop-in files under config.d/, in the style of an nginx conf.d. The recommended layout keeps server-wide settings in config.json and gives each platform its own file, named after it:
~/.config/mcp-openapix/
├── config.json # defaults, headers, token_helpers, top-level options └── config.d/ ├── acme.json # {"platforms": {"acme": …}} └── public.json # {"platforms": {"public": …}}
A typo then costs one platform, and a platform can be handed over, or removed, as a single file. Token helpers stay in config.json because they are usually shared across platforms; a helper only one platform uses MAY live beside it in that platform's file.
The layout is a convention, not a rule:
config.json is read first, then every *.json directly in config.d/ in sorted order. Subdirectories, .bak and editor swap files are ignored; no config.d/ means no change in behavior.config.json may, and config.json MAY be nearly empty.envs.prod.url or one defaults field.A file that fails to parse costs only what it declares; the rest keep working. A malformed platform, in any file, MUST NOT stop the others loading, and neither does a missing token helper it names: its error lists any files that were skipped, since the helper may be declared in one. list_platforms shows a platform that failed with no regions and the loader's error, and a skipped file as {"file", "error"}; calling into a failed platform returns the same message. Defaults that point into a failed platform are ignored. An invalid setting outside platforms still stops the server, and the message names the file that set it.
A fix needs a restart. Check the config first, without starting the server; it also lists every value a later file overrode:
uvx mcp-openapix --check-config
| Tool | Purpose |
|---|---|
list_platforms | Every platform with its regions, services, and envs |
list_endpoints | A service's operations, filtered by query, tag or method |
describe_endpoint | One operation plus the transitive closure of the schemas it references |
call_endpoint | Execute an operation, or a raw method + path absent from the spec |
Many OpenAPI documents omit operationId, so the server synthesizes one as " ":
POST /api/items
└─┬─┘ └───┬───┘ method path as the spec declares it
Where a spec does declare an operationId, that value wins.
Specs are not bundled. Each deployment's document is fetched on demand — an unauthenticated GET — and cached under ~/.cache/mcp-openapix/{platform}/{region}/{service}.json.
A document MUST declare at least one operation before it is installed, so a deployment answering 200 with an error body cannot replace a working snapshot with one that serves nothing.
Cached specs refresh in the background: once at startup, then every spec_refresh.interval days. Set auto to false to stop it; the manual lever still works:
uvx mcp-openapix --refresh
| Resource URI | Description |
|---|---|
openapi://responses/{request_id} | Full body of a truncated call_endpoint response |
openapi://curl/{request_id} | Equivalent curl command for a call_endpoint request |
Both expire response_cache_ttl seconds after the call. The curl command may embed a short-lived token.
Tokens are cached in memory and, when expiry metadata is available, under ~/.cache/mcp-openapix/tokens/ (mode 0600) keyed by the token-helper declaration and username. This lets client sessions share a login without spawning a helper each. A 401 retires the cached token so the next call obtains a fresh one. To clear them all:
uvx mcp-openapix --logout
Cursor / Claude Code
{
"mcpServers": { "openapi": { "command": "uvx", "args": ["mcp-openapix"] } } }
Codex
[mcp_servers.openapi]
command = "uvx" args = ["mcp-openapix"]
uv sync --extra dev
uv run ruff check . uv run ruff format --check . uv run pyright uv run pytest
All four MUST pass; see AGENTS.md. Tests use respx to mock HTTP and real subprocesses for token helpers, so no live API access is required.
MIT.