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.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
Authorizationค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ที่อยู่นี้ต้องใส่ key ใน header ของคำขอ ซึ่งเมนูเพิ่ม connector ใส่ให้ไม่ได้ ใช้ Claude Code, Cursor หรือ VS Code แทน
พิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http gateway https://api.identark.io/v1/mcp/rpc --header 'Authorization: ใส่ค่าของคุณ'เติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"gateway": {
"url": "https://api.identark.io/v1/mcp/rpc",
"headers": {
"Authorization": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"gateway": {
"type": "http",
"url": "https://api.identark.io/v1/mcp/rpc",
"headers": {
"Authorization": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ที่อยู่นี้ต้องใส่ key ใน header ของคำขอ ซึ่งเมนูเพิ่ม connector ใส่ให้ไม่ได้ ใช้ Claude Code, Cursor หรือ VS Code แทน
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
Authorization ความลับ จำเป็น HTTP headerค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
ยังไม่ได้อ่านรายการเครื่องมือของตัวนี้ เราตรวจ endpoint ทีละชุดวนไป
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันโดเมน identark.io แล้ว (registry ตรวจความเป็นเจ้าของโดเมน)
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: Authorization
รันบนคลาวด์ของผู้ทำ ต่อผ่านอินเทอร์เน็ตได้เลย ไม่ต้องลงโปรแกรม แต่ข้อมูลที่ส่งให้จะผ่านเซิร์ฟเวอร์ของผู้ทำ
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.0) เข้า registry 4 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, HotCodePush
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า 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.
Manage over-the-air (OTA) updates for React Native, Expo, Capacitor and Cordova apps.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ 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.*