docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api
uk/docs/api/mcp-bundle/installation.md
новий файл +133
−0
Встановлення MCP Bundle
Вимоги версії 1.x: PHP >= 8.4, Symfony ^7.2 або ^8.0, ufo-tech/json-rpc-bundle ^10.4.3, mcp/sdk ^0.8.1. Сервер JsonRpcBundle має бути вже встановлений.
Крок 1: Встановлення
composer require ufo-tech/mcp-bundle
Крок 2: Реєстрація бандла
Додайте бандл у config/bundles.php поруч із JsonRpcBundle:
return [
// ...
Ufo\JsonRpcBundle\UfoJsonRpcBundle::class => ['all' => true],
Ufo\McpBundle\UfoMcpBundle::class => ['all' => true],
];
Крок 3: Налаштування
Рецепта Symfony Flex для бандла поки немає: файли конфігурації копіюються вручну.
Скопіюйте vendor/ufo-tech/mcp-bundle/install/packages/ufo_mcp.yaml у config/packages/. Мінімальна конфігурація:
# config/packages/ufo_mcp.yaml
ufo_mcp:
enabled: true
mcp_server_info:
name: 'io.github.your-org/your-app'
title: 'Your App MCP Server'
Без файлу бандл працює на типових значеннях. Усі параметри — на сторінці Налаштування.
Крок 4: Реєстрація маршрутів
Скопіюйте vendor/ufo-tech/mcp-bundle/install/routes/ufo_mcp.yaml у config/routes/:
# config/routes/ufo_mcp.yaml
ufo_mcp:
resource: ../../vendor/ufo-tech/mcp-bundle/config/router.yaml
prefix: /mcp
defaults: { api_group: mcp }
Один імпорт — один MCP-ендпоінт, що обслуговує одну групу API (api_group). Щоб додати ще ендпоінт, імпортуйте той самий router.yaml ще раз з іншими prefix і api_group — див. Маршрути.
Крок 5: Методи для MCP
Додайте RPC-методи в групу ендпоінта атрибутом #[RPC\APIGroups]:
use Ufo\JsonRpcBundle\ApiMethod\Interfaces\IRpcService;
use Ufo\McpBundle\Attribute\McpTool;
use Ufo\RpcObject\RPC;
#[RPC\Info('Catalog')]
#[RPC\APIGroups(['mcp'], withDefault: false)] // лише /mcp, не /rpc
final class CatalogProcedure implements IRpcService
{
/** Search products by name. */
#[McpTool(readOnlyHint: true)]
public function search(string $query, int $limit = 10): array
{
// ...
}
}
withDefault: false прибирає методи з типової групи (/rpc); без нього методи доступні і в /rpc, і в /mcp.
#[McpTool] необов'язковий: він лише додає підказки для агента. Інструментом стає кожен метод групи — див. Інструменти.
Перевірка
| Запит | Що повертає |
|---|---|
POST /mcp |
MCP-ендпоінт (Streamable HTTP) |
GET /mcp/manifest/claude.json |
Конфігурацію підключення для Claude Code (також cursor, gemini, openai) |
GET /mcp/server.json |
Документ для MCP Registry |
Маніфест для Claude Code:
Request:
curl https://example.com/mcp/manifest/claude.json
Response:
{
"mcpServers": {
"mcp": {
"type": "http",
"url": "https://example.com/mcp",
"headers": {"Ufo-RPC-Token": "${UFO_MCP_TOKEN}"}
}
}
}
Якщо в JsonRpcBundle увімкнено protected_doc, додайте до запиту заголовок з токеном. Збережіть відповідь у .mcp.json проєкту і задайте змінну оточення UFO_MCP_TOKEN — Claude Code побачить інструменти групи.
Перелік інструментів без AI-клієнта — через MCP Inspector:
npx -y @modelcontextprotocol/inspector --cli https://example.com/mcp \
--transport http --header "Ufo-RPC-Token: change-me" --method tools/list
Що далі?
- Налаштування — кілька ендпоінтів, версії, сесії.
- Інструменти — як будуються схеми, тексти і результати.
- HTTP і безпека — токени, CORS, DNS rebinding.