Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
A decision model for the calls that don't have a right answer. The better option, with a reason.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
Authorization「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。
ターミナルでこれを実行します
claude mcp add --transport http decider https://mcp.turingcorp.net/mcp --header 'Authorization: Bearer {agent_pass}'動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"decider": {
"url": "https://mcp.turingcorp.net/mcp",
"headers": {
"Authorization": "Bearer {agent_pass}"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"decider": {
"type": "http",
"url": "https://mcp.turingcorp.net/mcp",
"headers": {
"Authorization": "Bearer {agent_pass}"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
Authorization 秘密 必須 HTTP headerこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのツール一覧はまだ読み取っていません。エンドポイントは順番にチェックしています。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名はドメイン mcp.turingcorp.net で確認済みです(レジストリがドメインの所有を確認しています)
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:Authorization
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は–、最新バージョン(1.0.3)がレジストリに届いたのは41 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, LickityClick
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ 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.
Create, edit and track LickityClick short links, campaigns and click stats from your AI assistant.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A decision model for the calls that don't have a right answer. Your agent has two defensible options and has to pick one. Send both: a panel of models judges them together and returns the better one, how far apart it judged them (a calibrated confidence), and why.
https://mcp.turingcorp.net/mcphttps://mcp.turingcorp.net/ and https://mcp.turingcorp.net/mcp/https://mcp.turingcorp.net/healthzGET /mcp → 405 is normal.2026-07-28 (modern) and 2025-06-18 (legacy) — one route serves both.server/discover, tools/list) need no credentials — directory scanners can read the full tool list unauthenticated, by design.decide| In | task (string), optionA (string), optionB (string) — all required | |
| Out | job_id (string), betterOption ("option_A" \ | "option_B"), confidence (percentage string, e.g. "76.7%"), reason (string) |
| Annotations | readOnlyHint: true · openWorldHint: false · idempotentHint: false | |
| Timeout | Reserve 180–300 seconds — a decision is a long call. The timeout is a client/host setting, not a tool parameter: there is nothing to pass in the call. A 60s default cuts it off before the answer arrives; if that happens, do not call again — retrieve by job_id. | |
| Long calls | A client that declares the io.modelcontextprotocol/tasks extension gets a task handle back instead of holding one connection open for minutes, and polls tasks/get — see Retrieving a result. Clients that do not declare it see no change at all. |
A successful call returns the decision inline. job_id, betterOption, confidence and reason all arrive in the *same* tool result — there is nothing to poll and nothing to fetch afterwards. The job_id is only for the case where the call never came back (timeout, dropped connection, client gave up waiting).
confidence is this service's own judgement of how far apart the two options were — a reference for your decision-making, not an instruction, not a result, and not a prediction of how the choice turns out. As a rough reading: ≥90% clearly apart · 80–90% apart, less clearly · 70–80% a closer call · <70% close to evenly matched. These ranges are descriptive only. Choose your own threshold for your own use case; for high-stakes or irreversible decisions apply your own review policy. Observed accuracy for each range, and how it was measured, is published at https://api.turingcorp.net — that page is the authority on the bands and their measured accuracy.
⚠️ idempotentHint: false is an honest declaration: a retried call is a new call. Record the `job_id` the result returns — a decision you have already paid for can be collected for 7 days with the same credential (GET https://api.turingcorp.net/v1/jobs?job_id= ; without the id, GET https://api.turingcorp.net/v1/jobs lists the job ids for that credential). Retrieve instead of retrying.
task — state the decision neutrally, without leaning toward either side: *"Which email do I send?"*, not *"Should I send the honest one?"*optionA / optionB — one concrete option each, plus the case for it. Plain text or Markdown, any length; keep the two sides roughly comparable so the comparison is fair.{
"task": "Which version of the delivery-slip email do I send to a client we want to keep?", "optionA": "Short and direct: the integration took longer than planned, delivery moves to the 24th, everything else is unchanged.", "optionB": "Warmer and longer: thank them for the kickoff, explain that dependencies took more time, offer to walk through the details." }
More patterns — choosing the version you send, thresholding on the confidence, and writing the two options so the comparison is fair: [docs/COOKBOOK.md](docs/COOKBOOK.md).
Every call returns a job_id. A call that is allowed to finish returns the decision inline — the `job_id` is only for the case where it never came back.
⚠️ How to retrieve — use `get_result`. Retrieval needs the Agent Pass, and inside an MCP host the agent usually does not have it — so retrieval is a tool call, not a REST call: get_result is authenticated by the host, which attaches the pass for you. An agent never handles the pass, and the credential is deliberately not a tool argument (it would end up in prompts and transcripts).
readOnlyHint: true, idempotentHint: true).io.modelcontextprotocol/tasks extension can poll tasks/get instead. Most clients do not declare it yet, which is why get_result exists.Operator/host, with the pass (the same data over REST):
GET https://api.turingcorp.net/v1/jobs?job_id= using the same Agent Pass.GET https://api.turingcorp.net/v1/jobs lists the job ids that credential created in the last 7 days; then fetch one as above. The list carries only the job id, the product and a timestamp.job_id=0 placeholder: {"object":"list","window_seconds":604800,"data":[]}. Asking for 0 returns 404 No such job.Retrieval returns the job's status and, once it succeeded, the same body the call itself would have returned. A job that is not yours, or older than 7 days, is reported as unavailable. GET https://api.turingcorp.net/v1/account returns {"account_id":"…"}.
The practical answer is not to need retrieval: reserve 180–300 seconds so the call is allowed to finish.
There is no free tier, so we publish the evidence instead: 27 real decisions, recorded verbatim — the question, both options, which one was preferred, the confidence reported, and the reason. Nine domains, three cases each: Writing · Tech · Business · Research · Career · Money · People · Travel · Everyday.
→ [https://github.com/TuringCorp-net/poe-demo-public](https://github.com/TuringCorp-net/poe-demo-public) — dataset: examples.json
Read the confidence column first. On ordinary, closely matched questions it reports 70–90%, not 99% — and that is the point of a calibrated number rather than a decorative one: a high value means the comparison was decisive and the pick can be acted on, a low value means the two options really are close and the choice stays yours. In this set the range is 27.3%–88.3%, median 74.0%, none above 90%, because these are everyday close calls, not easy ones. What the bands deliver when they *are* decisive is published at https://api.turingcorp.net.
Send an Agent Pass: Authorization: Bearer .
Issued at [https://agent-pass.turingcorp.net](https://agent-pass.turingcorp.net) — self-service signup (email verification) → top up → get a pass. A pass is valid for 7 days and can be re-rolled. If a call is refused as an invalid credential, sign in there again and re-roll.
Errors fall into two classes, and they arrive in different places:
Credential problems are rejected before the call (HTTP 401 +
WWW-Authenticate). Business failures come back as a tool result withisError: trueplus a JSON block{error, http_status, action_url, message}—http_statusis the upstream status; the tool call itself is HTTP 200.
| Class | What comes back | Examples |
|---|---|---|
| Credential | HTTP 401 + WWW-Authenticate — no tool result is produced | no credential · expired or invalid pass (invalid_credential, with a re-login URL in the message) |
| Business | HTTP 200, tool result isError: true, plus a JSON block | insufficient balance (http_status 402, action_url pointing at top-up) · over quota (http_status 429) |
Branch on the HTTP status first: a 401 will not succeed on retry without a new credential, whereas a business failure was a call that ran and was declined — read the block for the reason and the next step. The detailed contract is under *Errors are machine-readable* below.
Entry rate limit: 120 requests / 60 s / client IP. This is flood damping, not a quota — the real per-key quota is enforced separately. The counter is approximate: it is maintained per edge location and is eventually consistent, so a brief overshoot is possible.
Authorization: Bearer yourself, and you can retrieve a job by id.⚠️ The part that catches people out: being able to call the tool through a host does not mean you can reach the REST API. The host may never hand you the underlying Agent Pass, so a job-retrieval call you make on your own can come back 401. If your host declares the Tasks extension, retrieve through the tool surface instead (see Retrieving a result); if it does not, retrieval may simply not be reachable from where you are.
You need an Agent Pass to call the tool. Discovery (tools/list) works without one — calling decide does not.
🔑 Where the pass lives matters. If your client can keep it out of the file, do that — VS Code's ${input:…}, Codex's bearer_token_env_var. A pass written in plain text inside mcp.json or any client config is readable by every agent and process that can read that file, and assistants do read their own config — one can print your pass straight into its output. Treat a client config as public within your machine.
Self-service at [https://agent-pass.turingcorp.net](https://agent-pass.turingcorp.net): sign up with an email address, verify it, add credit. The pass is shown once; it is valid for 7 days and can be re-rolled at any time. Agents can do the same thing over the API — see that site's /llms.txt.
Any client that reads a JSON config — Cursor, Windsurf, Claude Desktop:
{
"mcpServers": { "TuringCorp": { "type": "http", "url": "https://mcp.turingcorp.net/mcp", "headers": { "Authorization": "Bearer " } } } }
Keep the `"type": "htt
冒頭だけを表示しています。続きはリポジトリで読めます