server.json і маніфести клієнтів
Кожен ендпоінт віддає ще два види документів. Обидва захищені правилом токена для документації (protected_doc JsonRpcBundle), відповідають 404 так само, як сам ендпоінт, і беруть URL ендпоінта із запиту: <prefix>[/{ver}].
server.json — MCP Registry
GET <prefix>/server.json (або <prefix>/v2/server.json) — документ, який очікує MCP Registry під час публікації сервера (схема 2025-12-11). Клієнти не читають його для підключення.
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.your-org/your-app",
"title": "Your App MCP Server",
"description": "Exposes Your App RPC services as MCP tools.",
"version": "v1",
"websiteUrl": "https://api.example.com",
"icons": [{"src": "https://example.com/icon.png", "mimeType": "image/png", "sizes": ["128x128"]}],
"remotes": [{"type": "streamable-http", "url": "https://api.example.com/mcp"}]
}
name,title,description,icons— зmcp_server_infoгрупи (з fallback поле за полем на загальне налаштування, див. Налаштування); незадані поля не потрапляють у документ.version—{ver}запиту;websiteUrl— схема, хост і порт запиту;remotes[0].url— URL ендпоінта.
Маніфести клієнтів
GET <prefix>/manifest/{aiName}.json — готова конфігурація підключення. Токен лишається плейсхолдером: маніфест ніколи не містить справжнього токена. Ключ сервера в конфігурації — назва групи.
aiName |
Для чого | Формат |
|---|---|---|
claude |
Claude Code (.mcp.json) |
{"mcpServers": {"<group>": {"type": "http", "url": "…", "headers": {"Ufo-RPC-Token": "${UFO_MCP_TOKEN}"}}}} |
cursor |
Cursor (mcp.json) |
{"mcpServers": {"<group>": {"url": "…", "headers": {"Ufo-RPC-Token": "${env:UFO_MCP_TOKEN}"}}}} |
gemini |
Gemini CLI (settings.json) |
{"mcpServers": {"<group>": {"httpUrl": "…", "headers": {"Ufo-RPC-Token": "<UFO_MCP_TOKEN>"}}}} |
openai |
OpenAI Responses API | елемент tools[]: {"type": "mcp", "server_label": "<group>", "server_url": "…", "headers": {…}, "require_approval": "always"} |
- Claude Code і Cursor підставляють змінну оточення
UFO_MCP_TOKENсамі. - Gemini CLI не підставляє змінні в заголовках, а OpenAI API надсилає заголовки як є: замініть
<UFO_MCP_TOKEN>на токен вручну або у своєму коді. require_approval: "always"для OpenAI — консервативне значення, щоб бандл не дозволяв виклики без підтвердження; змініть його за потреби.- Назва заголовка —
ufo_json_rpc.security.token_name(типовоUfo-RPC-Token).
Невідомий aiName відповідає 404 {"error": "Unknown MCP client manifest \"…\"."}. Маніфест для іншого клієнта — див. Розширення.