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.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 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": "your-value",
"WALLET_BUDGET_USD": "your-value",
"WALLET_NETWORK": "your-value",
"GATEFARE_PAT": "your-value",
"GATEFARE_BASE_URL": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add gatefareio --env WALLET_PRIVATE_KEY=your-value --env WALLET_BUDGET_USD=your-value --env WALLET_NETWORK=your-value --env GATEFARE_PAT=your-value --env GATEFARE_BASE_URL=your-value -- npx -y @gatefare/mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"gatefareio": {
"command": "npx",
"args": [
"-y",
"@gatefare/mcp"
],
"env": {
"WALLET_PRIVATE_KEY": "your-value",
"WALLET_BUDGET_USD": "your-value",
"WALLET_NETWORK": "your-value",
"GATEFARE_PAT": "your-value",
"GATEFARE_BASE_URL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"gatefareio": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@gatefare/mcp"
],
"env": {
"WALLET_PRIVATE_KEY": "your-value",
"WALLET_BUDGET_USD": "your-value",
"WALLET_NETWORK": "your-value",
"GATEFARE_PAT": "your-value",
"GATEFARE_BASE_URL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
WALLET_BUDGET_USD envWALLET_NETWORK envGATEFARE_BASE_URL env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 gatefareio 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:WALLET_PRIVATE_KEY, GATEFARE_PAT
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(1.1.0)于6个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, SuperCollider
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况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.
Make sound with SuperCollider: synths, drums, chords, melodies and soundscapes over OSC.
按原文从作者的仓库复制。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
只显示了开头部分;其余内容请在仓库中阅读