Skip to main content
Glama
gatefareio

gatefareio/mcp-server

Official

@gatefare/mcp

npm version npm downloads bundle size License: MIT CI MCP Registry Base

AI 에이전트에게 지갑과 마켓플레이스를 제공하세요.

@gatefare/mcp는 Claude Desktop, Cursor 또는 MCP 호환 에이전트를 Gatefare 유료 HTTP API 카탈로그에 연결하는 Model Context Protocol 서버입니다. 결제는 개방형 x402 표준을 통해 Base 네트워크에서 USDC로 정산되며, SaaS 키, 구독, 에스크로가 필요 없습니다. 비수탁 방식으로, 서명은 로컬에서 이루어지며 개인 키는 절대 기기를 벗어나지 않습니다.

Demo: install, list tools, real call against gatefare.io

┌─────────────┐                ┌──────────────┐                ┌─────────────────┐
│ Claude /    │   MCP stdio    │ @gatefare/mcp│  HTTP + x402   │ gatefare.io     │
│ Cursor /    │ ─────────────► │   (this repo)│ ─────────────► │ proxy +         │
│ your agent  │                │              │                │ catalog         │
└─────────────┘                └──────┬───────┘                └─────────────────┘
                                      │
                                      │ EIP-3009 sign
                                      ▼
                                ┌─────────────┐
                                │  Base USDC  │
                                └─────────────┘

빠른 시작

1. 클라이언트에 추가하기

Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 또는 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "gatefare": {
      "command": "npx",
      "args": ["-y", "@gatefare/mcp"]
    }
  }
}

Cursor~/.cursor/mcp.json 또는 프로젝트 수준의 .cursor/mcp.json:

{
  "mcpServers": {
    "gatefare": {
      "command": "npx",
      "args": ["-y", "@gatefare/mcp"]
    }
  }
}

클라이언트를 재시작하세요. 이제 에이전트가 검색 및 안전 관련 5가지 읽기 전용 도구를 사용할 수 있습니다. 다음을 시도해 보세요:

"Gatefare에서 날씨 API를 검색해 줘."

2. 유료 호출을 위한 지갑 추가

동일한 설정 파일에 env를 추가하세요:

{
  "mcpServers": {
    "gatefare": {
      "command": "npx",
      "args": ["-y", "@gatefare/mcp"],
      "env": {
        "WALLET_PRIVATE_KEY": "0xYOUR_KEY",
        "WALLET_BUDGET_USD": "5.00"
      }
    }
  }
}

구매자 도구(call_api, get_wallet_balance, estimate_cost)를 사용할 수 있게 됩니다. WALLET_BUDGET_USD 상한선은 런타임 안전 장치입니다. 엄격한 제한을 원하시면 지갑에 지출하려는 금액만큼만 충전하세요.

"지금 런던 날씨가 어때? 최대 $0.001까지 사용해."

3. (선택 사항) 나만의 API 게시하기

gatefare.io/dashboard/tokens에서 PAT를 발급받고 다음을 추가하세요:

"env": {
  "GATEFARE_PAT": "gfpat_..."
}

게시자 도구(register_api, list_my_apis, update_api, get_revenue, distribute)가 나타납니다.

"https://api.example.com/sentiment 에 있는 내 API를 호출당 $0.001에 게시해 줘."

도구

4개 영역에 걸친 13가지 도구입니다. 설정된 환경 변수에 따라 도구가 자동으로 등록되므로, 에이전트는 사용할 수 없는 도구를 보지 않습니다.

검색 — 항상 사용 가능

도구

설명

gatefare.search_apis

필터(가격, 카테고리, 정렬)를 사용하여 카탈로그 전체 텍스트 검색

gatefare.get_api

슬러그 또는 handle/urlName으로 API 상세 정보 조회

gatefare.list_categories

API 개수가 포함된 모든 카테고리 목록

gatefare.suggest

쿼리 문자열에 대한 자동 완성 제안

구매자 — WALLET_PRIVATE_KEY 필요

도구

설명

gatefare.call_api

유료 호출 수행. 402 응답 → 서명 → 재시도 자동 처리

gatefare.get_wallet_balance

Base 네트워크의 USDC + ETH 잔액 및 남은 런타임 예산 확인

gatefare.estimate_cost

N번의 계획된 호출에 대한 총 비용 추정

게시자 — GATEFARE_PAT 필요

도구

설명

gatefare.register_api

새로운 유료 API 게시

gatefare.list_my_apis

통계가 포함된 게시한 API 목록

gatefare.update_api

메타데이터, 가격, 대상 URL 수정

gatefare.get_revenue

수익 시계열 데이터 및 총액 조회

gatefare.distribute

온체인 distribute() 지급 트리거 (파괴적 작업)

안전 — 항상 사용 가능

도구

설명

gatefare.report_abuse

악의적이거나 도용된 API 신고 (DMCA, 사기, 악성코드 등)

설정

변수

기본값

필수 대상

GATEFARE_BASE_URL

https://gatefare.io

— (자체 호스팅 시 재정의)

WALLET_PRIVATE_KEY

모든 구매자 도구

WALLET_BUDGET_USD

무제한

선택적 지출 상한선

WALLET_NETWORK

eip155:8453

Sepolia 테스트넷의 경우 eip155:84532

GATEFARE_PAT

모든 게시자 도구

LOG_LEVEL

info

상세 로그 출력을 위해 debug 사용

예시

한 번에 검색 및 구매 (Claude Desktop)

사용자: 0.001달러 미만의 날씨 API를 찾아서 "도쿄"에 대해 호출해 줘.

Claude: max_price: 0.001gatefare.search_apis 호출 중… @alice의 demo-weather를 호출당 $0.001에 찾았습니다. slug: "demo-weather", query: {city: "Tokyo"}gatefare.call_api 호출 중… 도쿄는 22°C이며 부분적으로 흐립니다. 0.001 USDC를 지불했습니다. 영수증: settled-tx-0x9a…

프로그래밍 방식 — Python 에이전트

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)

실행 가능한 변형(Claude Desktop, Cursor, Python, TypeScript 및 순수 검색 가이드)은 examples/를 참조하세요.

AI 에이전트를 구축하지 않나요? 올바른 도구 선택하기

(에이전트 없이) 백엔드에서 x402 API 비용을 지불하려면 Coinbase의 공식 x402 SDK(x402-python (PyPI), coinbase/x402/go, …/java 또는 @x402/fetch)를 사용하세요. 이들은 결제 흐름을 처리하므로 이 MCP 서버가 필요하지 않습니다.

어떤 언어에서든 Gatefare 카탈로그를 탐색하려면 REST API를 직접 호출하세요: gatefare.io/api/catalog (OpenAPI 3.1 사양).

각 도구가 어떤 사용 사례에 적합한지에 대한 전체 분석은 docs/integrations.md를 참조하세요.

직접 CLI (디버깅용)

# Run the server in foreground; talks JSON-RPC over stdio.
npx -y @gatefare/mcp

# In another terminal, send a frame:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | \
  npx -y @gatefare/mcp

오류

도구 결과에는 isError: true와 구조화된 본문 { error: <code>, message: <human>, details?: <any> }가 포함됩니다. 코드는 고정되어 있으므로 에이전트가 이를 기반으로 재시도 또는 표시 로직을 전환할 수 있습니다.

코드

의미

INVALID_INPUT

입력값이 zod 유효성 검사 실패

WALLET_NOT_CONFIGURED

구매자 도구를 사용하려면 WALLET_PRIVATE_KEY 설정 필요

PAT_NOT_CONFIGURED

게시자 도구를 사용하려면 GATEFARE_PAT 설정 필요

BUDGET_EXHAUSTED

런타임 예산 상한선 도달

INSUFFICIENT_BALANCE

지갑에 USDC 잔액 부족

PRICE_TOO_HIGH

서버 가격이 사용자의 max_price를 초과함

API_NOT_FOUND

슬러그가 존재하지 않거나 일시 중단됨

UPSTREAM_ERROR

유료 API가 2xx 이외의 응답을 반환했거나 402 응답이 잘못됨

RATE_LIMITED

Gatefare가 요청 속도를 제한함

NETWORK_ERROR

Gatefare에 연결할 수 없음

GATEFARE_API_ERROR

Gatefare가 4xx / 5xx 오류를 반환함

작동 원리 (30초 요약)

  1. 에이전트가 gatefare.call_api { slug: "demo-weather", … }를 호출합니다.

  2. GET https://gatefare.io/p/demo-weather를 수행합니다 (아직 결제 전).

  3. Gatefare 프록시가 accepts: [{network, payTo, maxAmountRequired, …}]와 함께 402 Payment Required를 반환합니다.

  4. 설정된 네트워크에서 해당 금액과 수신자에 대해 EIP-3009 transferWithAuthorization 서명을 생성합니다.

  5. 서명된 X-Payment 헤더(base64 인코딩된 JSON, x402 v2)를 포함하여 요청을 재시도합니다.

  6. Gatefare가 서명을 확인하고 USDC 이체를 정산한 뒤, 업스트림 API로 호출을 프록시합니다.

  7. 업스트림 응답(및 결제 영수증)을 에이전트에게 전달합니다.

서명은 일회용이며 시간 제한이 있고, 이 특정 수신자(payTo)에 대한 정확한 이체 목적 외에는 절대 기기를 벗어나지 않습니다. 개인 키는 절대 로그에 기록되지 않습니다.

보안

  • 비수탁(Non-custodial). 개인 키는 환경 변수에 저장되며 서명은 로컬에서 이루어집니다. Gatefare 서비스는 절대 키를 볼 수 없습니다.

  • 네트워크 혼동 방지. 메인넷 사용자에게 Sepolia 전용 요구 사항을 반환하는 악의적인 게이트웨이는 거부됩니다. 사용자가 설정하지 않은 체인에 대해서는 절대 서명하지 않습니다.

  • 암호학적으로 안전한 난수(nonce). Date.now() 기반의 충돌이 없습니다.

  • 유효 기간 제한. 서버가 더 긴 시간을 요청하더라도 유효 기간은 1시간으로 제한됩니다.

  • 엄격한 입력 유효성 검사. 슬러그는 ^[a-z0-9_-]+$로 제한되며 URL 인코딩됩니다. 경로 탐색(path traversal)은 불가능합니다. targetUrl은 등록 시 file://, localhost, 클라우드 메타데이터 IP, .local, .internal 호스트를 차단합니다.

  • 비밀 정보 보호. 테스트를 통해 개인 키와 PAT가 stderr/stdout에 절대 노출되지 않음을 보장합니다.

개발

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

클라이언트 설정에서 로컬 체크아웃을 사용하려면:

npm link
# in claude_desktop_config.json:
#   "command": "gatefare-mcp"

아키텍처

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 concurrent calls, memory baseline, ReDoS
├── tools/
│   ├── discovery.test.ts
│   ├── buyer.test.ts
│   ├── buyer-flow.test.ts
│   ├── publisher.test.ts
│   └── safety.test.ts
└── integration/
    └── e2e.test.ts        # real gatefare.io, gated by GATEFARE_E2E=1

기여

이슈와 PR은 언제나 환영합니다. 워크플로우, 스타일 가이드 및 새로운 도구 추가 방법은 CONTRIBUTING.md를 참조하세요.

라이선스

MIT © Gatefare

링크

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gatefareio/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server