Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
Authorization「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。
ターミナルでこれを実行します
claude mcp add --transport http gateway https://api.identark.io/v1/mcp/rpc --header 'Authorization: your-value'動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"gateway": {
"url": "https://api.identark.io/v1/mcp/rpc",
"headers": {
"Authorization": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"gateway": {
"type": "http",
"url": "https://api.identark.io/v1/mcp/rpc",
"headers": {
"Authorization": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
Authorization 秘密 必須 HTTP headerこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのツール一覧はまだ読み取っていません。エンドポイントは順番にチェックしています。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名はドメイン identark.io で確認済みです(レジストリがドメインの所有を確認しています)
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:Authorization
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.0)がレジストリに届いたのは4 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, FlyDocs
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ 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.
Spec-driven development workflow: your agent works issues, sessions and the status lifecycle.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
The AgentGateway Protocol — secure, scalable AI agent execution infrastructure.
When an AI agent can execute code, call APIs, or access files, it runs in a process. That process has an environment. That environment typically contains everything that can cause serious damage: LLM API keys, database credentials, AWS tokens.
The naive solution — run your agent on the same backend as your REST API — creates two problems at once:
identark solves both.
The SDK implements the AgentGateway Protocol — a clean interface between your agent logic and the outside world. Two implementations ship out of the box:
| Gateway | When to use | Credentials | History |
|---|---|---|---|
DirectGateway | Local development, CI evals | Your API key | In-memory |
ControlPlaneGateway | Production on IdentArk | Zero — none in the agent | Control plane DB |
Your agent code is identical in both environments. The switch is two lines.
pip install identark[openai]
import asyncio
from openai import AsyncOpenAI from identark import DirectGateway, Message, Role
async def main(): gateway = DirectGateway( llm_client=AsyncOpenAI(), # Your API key — not in the agent loop model="gpt-4o", )
response = await gateway.invoke_llm( new_messages=[Message(role=Role.USER, content="Hello, IdentArk!")] )
print(response.message.content) print(f"Cost: ${response.cost_usd:.6f}")
asyncio.run(main())
Change two lines. Your agent logic is untouched.
# Before (local)
from identark import DirectGateway gateway = DirectGateway(llm_client=AsyncOpenAI(), model="gpt-4o")
from identark import ControlPlaneGateway gateway = ControlPlaneGateway() # auto-detects env vars inside a IdentArk sandbox
The agent asks the control plane to act; the provider key (Stripe, Paystack, GitHub or AWS) stays in IdentArk. Grants, budgets and human approval apply before anything executes, and a reused idempotency key never acts twice.
request = await gateway.request_capability(
"payments.payment_link.create", "paystack", {"amount_minor": 1_500_000, "currency": "NGN", "customer_email": "buyer@example.com", "reference": "order-1001"}, idempotency_key="order-1001-link", )
execution = await gateway.get_capability_execution(request["request_id"])
# Core SDK only
pip install identark
pip install identark[openai]
pip install identark[anthropic]
pip install identark[gemini]
pip install identark[mistral]
pip install identark[all]
Requirements: Python 3.10+
Using TypeScript? The parity SDK ships as the zero-runtime-dependency identark npm package, with the same AgentGateway contract and structured credential sessions.
IdentArk is designed from the ground up to work with any LLM provider, including those that keep your data inside the UK or EU. The AgentGateway Protocol decouples your agent logic from the inference provider — switching providers requires changing one line.
from openai import AsyncOpenAI
from identark import DirectGateway
gateway = DirectGateway( llm_client=AsyncOpenAI( base_url="http://localhost:11434/v1", api_key="ollama", ), model="llama3.2", provider="local", # forces $0 cost tracking; inference stays on your machine )
Install Ollama: brew install ollama && ollama pull llama3.2 && ollama serve
from openai import AsyncOpenAI
from identark import DirectGateway
gateway = DirectGateway( llm_client=AsyncOpenAI( base_url="https://api.mistral.ai/v1", api_key="your-mistral-api-key", ), model="mistral-small-latest", # auto-detected as "mistral" provider )
Mistral AI is a French company. All inference runs in EU data centres, subject to EU data protection law (GDPR). Use this when UK/EU data governance requirements prohibit sending inference traffic to US-based cloud providers.
See examples/ for complete runnable scripts.
Any class implementing these four async methods is a valid gateway:
class AgentGateway(Protocol):
async def invoke_llm(self, new_messages, tools=None, tool_choice="auto") -> LLMResponse: ... async def persist_messages(self, messages) -> None: ... async def request_file_url(self, file_path, method="PUT") -> PresignedURL: ... async def get_session_cost(self) -> float: ...
Write your agent against the protocol. The implementation — local or production — is a runtime detail.
ControlPlaneGateway holds no API keys, database credentials, or cloud tokensinvoke_llm call returns cost_usd; get_session_cost() returns the running totalDirectGateway out of the boxpy.typed marker; works with mypy strict modefrom identark.testing import MockGateway
from identark.models import LLMResponse, Message, Role
async def test_my_agent(): mock = MockGateway() mock.queue_response(LLMResponse( message=Message(role=Role.ASSISTANT, content="The answer is 42."), cost_usd=0.001, model="mock", finish_reason="stop", ))
result = await my_agent(gateway=mock)
assert mock.invoke_llm_call_count == 1 assert mock.total_messages_sent == 1
| Provider | Data residency | DirectGateway | GeminiGateway | ControlPlaneGateway |
|---|---|---|---|---|
| OpenAI (gpt-4o, gpt-4o-mini, …) | US | ✓ | — | ✓ |
| Anthropic (Claude models) | US | ✓ | — | ✓ |
| Google Gemini | Varies | ✓* | ✓ | Roadmap |
| Mistral AI | Varies | ✓ | — | ✓ |
| Kimi / Moonshot | Varies | ✓* | — | ✓ |
| Azure OpenAI | Configured Azure region | ✓* | — | ✓ |
| AWS Bedrock | Configured AWS region | — | — | ✓ |
| OpenRouter | Provider-dependent | ✓* | — | ✓ |
| Ollama | Local 🏠 | ✓ | — | Not a hosted route |
| Any OpenAI-compatible endpoint | Varies | ✓ | — | ✓ (custom endpoint) |
*Via an OpenAI-compatible client/base URL. Use GeminiGateway for native Gemini SDK features.
from identark.exceptions import CostCapExceededError, RateLimitError, IdentArkError
try: response = await gateway.invoke_llm(new_messages=[...]) except CostCapExceededError as e: print(f"Cost cap of ${e.cap_usd} reached. Spent: ${e.consumed_usd}") except RateLimitError as e: await asyncio.sleep(e.retry_after_seconds) except IdentArkError as e:
raise
Full exception hierarchy: IdentArkError > GatewayError > ControlPlaneError > AuthenticationError | CostCapExceededError | SessionNotFoundError
┌─────────────────────────────────────┐
│ Your Agent Code │ │ (depends only on AgentGateway) │ └──────────────┬──────────────────────┘ │ ┌──────────▼──────────┐ │ AgentGateway │ ← Protocol (interface) │ Protocol │ └──────┬────────┬──────┘ │ │ ┌────────▼─┐ ┌───▼──────────────┐ │ Direct │ │ ControlPlane │ │ Gateway │ │ Gateway │ │ │ │ │ │ Local / │ │ Production │ │ Evals │ │ (zero secrets) │ └──────────┘ └────────┬─────────┘ │ HTTP ┌────────▼─────────┐ │ IdentArk │ │ Control Plane │ │ (holds creds) │ └──────────────────┘
Contributions are welcome. Please open an issue before submitting significant changes.
git clone https://github.com/identark/identark.git
cd identark pip install -e ".[dev]" pre-commit install pytest tests/unit/
See CONTRIBUTING.md for full guidelines.
IdentArkChatModel)IdentArkLLM)invoke_llm_stream)IdentArkNode, IdentArkStreamNode)identark-cli for one-command control plane deploymentThe IdentArk SDK is licensed under the MIT License — free for any use, including commercial and closed-source projects. See LICENSE.
The IdentArk control plane (hosted service) is proprietary. The SDK works with any AgentGateway backend, including fully self-hosted ones.
*Built on the control plane pattern described in How We Built Secure, Scalable Agent Sandbox Infrastructure.*