Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Marketplace of paid HTTP APIs. USDC micropayments via x402 on Base. Non-custodial.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
WALLET_PRIVATE_KEY, WALLET_BUDGET_USD, WALLET_NETWORK, GATEFARE_PAT, GATEFARE_BASE_URLค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"gatefareio": {
"command": "npx",
"args": [
"-y",
"@gatefare/mcp"
],
"env": {
"WALLET_PRIVATE_KEY": "ใส่ค่าของคุณ",
"WALLET_BUDGET_USD": "ใส่ค่าของคุณ",
"WALLET_NETWORK": "ใส่ค่าของคุณ",
"GATEFARE_PAT": "ใส่ค่าของคุณ",
"GATEFARE_BASE_URL": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add gatefareio --env WALLET_PRIVATE_KEY='ใส่ค่าของคุณ' --env WALLET_BUDGET_USD='ใส่ค่าของคุณ' --env WALLET_NETWORK='ใส่ค่าของคุณ' --env GATEFARE_PAT='ใส่ค่าของคุณ' --env GATEFARE_BASE_URL='ใส่ค่าของคุณ' -- npx -y @gatefare/mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"gatefareio": {
"command": "npx",
"args": [
"-y",
"@gatefare/mcp"
],
"env": {
"WALLET_PRIVATE_KEY": "ใส่ค่าของคุณ",
"WALLET_BUDGET_USD": "ใส่ค่าของคุณ",
"WALLET_NETWORK": "ใส่ค่าของคุณ",
"GATEFARE_PAT": "ใส่ค่าของคุณ",
"GATEFARE_BASE_URL": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"gatefareio": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@gatefare/mcp"
],
"env": {
"WALLET_PRIVATE_KEY": "ใส่ค่าของคุณ",
"WALLET_BUDGET_USD": "ใส่ค่าของคุณ",
"WALLET_NETWORK": "ใส่ค่าของคุณ",
"GATEFARE_PAT": "ใส่ค่าของคุณ",
"GATEFARE_BASE_URL": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
WALLET_BUDGET_USD envWALLET_NETWORK envGATEFARE_BASE_URL envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub gatefareio ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: WALLET_PRIVATE_KEY, GATEFARE_PAT
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.1.0) เข้า registry 6 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, TF Rooms
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.
Live room availability, rates and stay quotes for 12 New Leaf motels in Twin Falls, Idaho.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Give your AI agent a wallet and a marketplace.
@gatefare/mcpis a Model Context Protocol server that connects Claude
Desktop, Cursor, or any MCP-compatible agent to the
Gatefare catalog of paid HTTP APIs. Payments
settle as USDC on Base via the open x402 standard
— no SaaS keys, no subscriptions, no escrow. Non-custodial: signing
happens locally; the private key never leaves your machine.
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Claude / │ MCP stdio │ @gatefare/mcp│ HTTP + x402 │ gatefare.io │ │ Cursor / │ ─────────────► │ (this repo)│ ─────────────► │ proxy + │ │ your agent │ │ │ │ catalog │ └─────────────┘ └──────┬───────┘ └─────────────────┘ │ │ EIP-3009 sign ▼ ┌─────────────┐ │ Base USDC │ └─────────────┘
Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": { "gatefare": { "command": "npx", "args": ["-y", "@gatefare/mcp"] } } }
Cursor — ~/.cursor/mcp.json or project-level .cursor/mcp.json:
{
"mcpServers": { "gatefare": { "command": "npx", "args": ["-y", "@gatefare/mcp"] } } }
Restart the client. The agent now has 5 read-only tools — discovery + safety. Try:
*"Search Gatefare for weather APIs."*
Add env to the same config:
{
"mcpServers": { "gatefare": { "command": "npx", "args": ["-y", "@gatefare/mcp"], "env": { "WALLET_PRIVATE_KEY": "0xYOUR_KEY", "WALLET_BUDGET_USD": "5.00" } } } }
Buyer tools (call_api, get_wallet_balance, estimate_cost) become available. The WALLET_BUDGET_USD cap is a runtime safety net — for a hard cap, fund the wallet with only what you're willing to spend.
*"What's London's weather right now? Spend up to $0.001."*
Get a PAT at gatefare.io/dashboard/tokens and add:
"env": {
"GATEFARE_PAT": "gfpat_..." }
Publisher tools (register_api, list_my_apis, update_api, get_revenue, distribute) appear.
*"Publish my API at https://api.example.com/sentiment for $0.001 per call."*
13 tools across 4 domains. Tools auto-register based on which env vars are set — the agent never sees a tool it can't use.
| Tool | Description |
|---|---|
gatefare.search_apis | Full-text search the catalog with filters (price, category, sort) |
gatefare.get_api | Full details for one API by slug or handle/urlName |
gatefare.list_categories | All categories with API counts |
gatefare.suggest | Autocomplete suggestions for a query string |
WALLET_PRIVATE_KEY| Tool | Description |
|---|---|
gatefare.call_api | Make a paid call. Handles 402 → sign → retry automatically |
gatefare.get_wallet_balance | USDC + ETH on Base, plus remaining runtime budget |
gatefare.estimate_cost | Project total cost for N planned calls |
GATEFARE_PAT| Tool | Description |
|---|---|
gatefare.register_api | Publish a new paid API |
gatefare.list_my_apis | Your published APIs with stats |
gatefare.update_api | Edit metadata, price, target URL |
gatefare.get_revenue | Revenue time series + totals |
gatefare.distribute | Trigger on-chain distribute() payout (destructive) |
| Tool | Description |
|---|---|
gatefare.report_abuse | Report a malicious / stolen API (DMCA, fraud, malware…) |
| Var | Default | Required for |
|---|---|---|
GATEFARE_BASE_URL | https://gatefare.io | — (override for self-hosted) |
WALLET_PRIVATE_KEY | — | Any buyer tool |
WALLET_BUDGET_USD | unlimited | Optional spend cap |
WALLET_NETWORK | eip155:8453 | eip155:84532 for Sepolia testnet |
GATEFARE_PAT | — | Any publisher tool |
LOG_LEVEL | info | debug for verbose stderr |
You: *Find me a sub-$0.001 weather API and call it for "Tokyo".*
Claude: *Calling
gatefare.search_apiswithmax_price: 0.001…*
*Found
demo-weatherby @alice at $0.001/call.*
*Calling
gatefare.call_apiwithslug: "demo-weather",query: {city: "Tokyo"}…*
*Tokyo is 22°C, partly cloudy. Paid 0.001 USDC. Receipt:
settled-tx-0x9a…*
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
server = StdioServerParameters( command="npx", args=["-y", "@gatefare/mcp"], env={"WALLET_PRIVATE_KEY": "0x...", "WALLET_BUDGET_USD": "1.00"}, )
async with stdio_client(server) as (r, w): async with ClientSession(r, w) as s: await s.initialize() result = await s.call_tool( "gatefare.call_api", arguments={"slug": "demo-weather", "query": {"city": "Tokyo"}}, ) print(result.content[0].text)
See examples/ for runnable variants: Claude Desktop, Cursor, Python, TypeScript, and a pure-discovery walkthrough.
If you want to pay for x402 APIs from a backend (no agent), use Coinbase's official x402 SDKs — x402-python (PyPI), coinbase/x402/go, …/java, or @x402/fetch. They handle the payment flow; you don't need this MCP server.
If you want to browse the Gatefare catalog from any language, hit the REST API directly: gatefare.io/api/catalog (OpenAPI 3.1 spec).
Full breakdown of which tool fits which use case in docs/integrations.md.
# Run the server in foreground; talks JSON-RPC over stdio.
npx -y @gatefare/mcp
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | \ npx -y @gatefare/mcp
Tool results include isError: true and a structured body { error: , message: , details?: }. Codes are stable — agents can switch on them for retry / surfacing logic.
| Code | Meaning |
|---|---|
INVALID_INPUT | Input failed zod validation |
WALLET_NOT_CONFIGURED | Set WALLET_PRIVATE_KEY for buyer tools |
PAT_NOT_CONFIGURED | Set GATEFARE_PAT for publisher tools |
BUDGET_EXHAUSTED | Runtime budget cap hit |
INSUFFICIENT_BALANCE | Wallet doesn't have enough USDC |
PRICE_TOO_HIGH | Server's price exceeds your max_price |
API_NOT_FOUND | Slug doesn't exist or is suspended |
UPSTREAM_ERROR | Paid API returned non-2xx, or its 402 was malformed |
RATE_LIMITED | Gatefare rate-limited the request |
NETWORK_ERROR | Could not reach Gatefare |
GATEFARE_API_ERROR | Gatefare returned a 4xx / 5xx |
gatefare.call_api { slug: "demo-weather", … }.GET https://gatefare.io/p/demo-weather (no payment yet).accepts: [{network, payTo, maxAmountRequired, …}].transferWithAuthorization for that exact amount and recipient on the configured network.X-Payment header (base64-encoded JSON, x402 v2).The signature is single-use, time-bounded, and never leaves your machine for any purpose other than this exact transfer to this exact payTo. The private key is never logged.
Date.now()-based collisions.^[a-z0-9_-]+$ and URL-encoded; no path traversal. targetUrl blocks file://, localhost, cloud metadata IPs, .local, and .internal hosts at registration time.git clone https://github.com/gatefareio/mcp-server.git
cd mcp-server npm install npm run typecheck npm test # 138 unit tests npm run test:e2e # 10 e2e tests against live gatefare.io (set GATEFARE_E2E=1) npm run build
To use a local checkout in your client config:
npm link
src/
├── index.ts # entry — wires stdio transport ├── server.ts # McpServer instance + tool registration ├── config.ts # env parsing, capability detection ├── client.ts # REST client (wraps fetch) ├── x402.ts # 402 parsing + EIP-3009 signing ├── types.ts # shared types + GatefareError └── tools/ ├── discovery.ts # search_apis, get_api, list_categories, suggest ├── buyer.ts # call_api, get_wallet_balance, estimate_cost ├── publisher.ts # register_api, list_my_apis, update_api, get_revenue, distribute └── safety.ts # report_abuse
tests/
├── config.test.ts # env parsing edges ├── client.test.ts # HTTP client error mapping ├── x402.test.ts # signing + parsing primitives ├── x402-flow.test.ts # full 402 → sign → retry handshake (mocked fetch) ├── server.test.ts # capability-driven tool registration ├── init.test.ts # subprocess: bootstrap, env crashes, secret leakage ├── stdio-protocol.test.ts # stdout pollution + recovery from tool errors ├── stability.test.ts # 100 con
ตัดมาแค่ช่วงต้น อ่านต่อใน repo