Skip to main content
Glama
gatefareio

gatefareio/mcp-server

Official

@gatefare/mcp

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

Дайте своему ИИ-агенту кошелек и доступ к маркетплейсу.

@gatefare/mcp — это сервер протокола Model Context Protocol (MCP), который подключает Claude Desktop, Cursor или любого другого агента, совместимого с MCP, к каталогу платных HTTP API Gatefare. Платежи осуществляются в USDC в сети Base через открытый стандарт x402 — без SaaS-ключей, подписок и эскроу. Без кастодиального хранения: подписание происходит локально; закрытый ключ никогда не покидает ваш компьютер.

Демо: установка, список инструментов, реальный вызов к 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

Получите PAT на gatefare.io/dashboard/tokens и добавьте:

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

Появятся инструменты издателя (register_api, list_my_apis, update_api, get_revenue, distribute).

"Опубликуй мой API по адресу https://api.example.com/sentiment за $0.001 за вызов."

Инструменты

13 инструментов в 4 доменах. Инструменты автоматически регистрируются в зависимости от того, какие переменные окружения установлены — агент никогда не увидит инструмент, который не может использовать.

Поиск — всегда доступно

Инструмент

Описание

gatefare.search_apis

Полнотекстовый поиск по каталогу с фильтрами (цена, категория, сортировка)

gatefare.get_api

Полная информация об одном API по слагу или handle/urlName

gatefare.list_categories

Все категории с количеством API

gatefare.suggest

Автодополнение для поискового запроса

Покупатель — требуется WALLET_PRIVATE_KEY

Инструмент

Описание

gatefare.call_api

Совершить платный вызов. Автоматически обрабатывает 402 → подпись → повтор

gatefare.get_wallet_balance

Баланс USDC + ETH в сети Base, плюс оставшийся бюджет

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

— (переопределите для self-hosted)

WALLET_PRIVATE_KEY

Любой инструмент покупателя

WALLET_BUDGET_USD

без ограничений

Опциональный лимит расходов

WALLET_NETWORK

eip155:8453

eip155:84532 для тестовой сети Sepolia

GATEFARE_PAT

Любой инструмент издателя

LOG_LEVEL

info

debug для подробного вывода в stderr

Примеры

Поиск и покупка за один раз (Claude Desktop)

Вы: Найди мне API погоды дешевле $0.001 и вызови его для "Токио".

Claude: Вызываю gatefare.search_apis с max_price: 0.001 Найден demo-weather от @alice по цене $0.001/вызов. Вызываю gatefare.call_api с slug: "demo-weather", query: {city: "Токио"} В Токио 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)

Смотрите examples/ для запускаемых вариантов: Claude Desktop, Cursor, Python, TypeScript и пошаговое руководство по поиску.

Не создаете ИИ-агента? Выбор правильного инструмента

Если вы хотите оплачивать API стандарта x402 из бэкенда (без агента), используйте официальные SDK x402 от Coinbase — 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 ошибку

Как это работает (кратко)

  1. Агент вызывает gatefare.call_api { slug: "demo-weather", … }.

  2. Мы делаем GET https://gatefare.io/p/demo-weather (оплаты пока нет).

  3. Прокси Gatefare возвращает 402 Payment Required с accepts: [{network, payTo, maxAmountRequired, …}].

  4. Мы подписываем EIP-3009 transferWithAuthorization на точную сумму и получателя в настроенной сети.

  5. Мы повторяем запрос с подписанным заголовком X-Payment (JSON в base64, x402 v2).

  6. Gatefare проверяет подпись, проводит перевод USDC и проксирует вызов к целевому API.

  7. Мы передаем ответ (и квитанцию об оплате) обратно агенту.

Подпись одноразовая, ограничена по времени и никогда не покидает ваш компьютер для любых целей, кроме этого конкретного перевода этому конкретному payTo. Закрытый ключ никогда не логируется.

Безопасность

  • Без кастодиального хранения. Закрытые ключи находятся в вашем окружении, подписание происходит локально, ни один сервис Gatefare их не видит.

  • Устойчивость к путанице сетей. Запросы от вредоносного шлюза, требующего Sepolia для пользователя основной сети, отклоняются — мы никогда не подписываем транзакции для сети, которую пользователь не настраивал.

  • Криптографически случайные нонсы. Никаких коллизий на основе Date.now().

  • Окно валидности ограничено 1 часом, даже если сервер запрашивает больше.

  • Строгая валидация ввода. Слаги имеют вид ^[a-z0-9_-]+$ и URL-кодируются; никакой навигации по путям. 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