docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api
uk/docs/api/mcp-bundle/installation.md
новий файл +133
−0
1
+
# Встановлення MCP Bundle
2
+
3
+
:::info
4
+
Вимоги версії 1.x: PHP >= 8.4, Symfony ^7.2 або ^8.0, `ufo-tech/json-rpc-bundle` ^10.4.3, `mcp/sdk` ^0.8.1. Сервер JsonRpcBundle має бути вже [встановлений](/docs/api/json-rpc-bundle/installation).
5
+
:::
6
+
7
+
## Крок 1: Встановлення
8
+
9
+
```bash
10
+
composer require ufo-tech/mcp-bundle
11
+
```
12
+
13
+
## Крок 2: Реєстрація бандла
14
+
15
+
Додайте бандл у `config/bundles.php` поруч із JsonRpcBundle:
16
+
17
+
```php
18
+
return [
19
+
// ...
20
+
Ufo\JsonRpcBundle\UfoJsonRpcBundle::class => ['all' => true],
21
+
Ufo\McpBundle\UfoMcpBundle::class => ['all' => true],
22
+
];
23
+
```
24
+
25
+
## Крок 3: Налаштування
26
+
27
+
:::warning
28
+
Рецепта Symfony Flex для бандла поки немає: файли конфігурації копіюються вручну.
29
+
:::
30
+
31
+
Скопіюйте `vendor/ufo-tech/mcp-bundle/install/packages/ufo_mcp.yaml` у `config/packages/`. Мінімальна конфігурація:
32
+
33
+
```yaml
34
+
# config/packages/ufo_mcp.yaml
35
+
ufo_mcp:
36
+
enabled: true
37
+
mcp_server_info:
38
+
name: 'io.github.your-org/your-app'
39
+
title: 'Your App MCP Server'
40
+
```
41
+
42
+
Без файлу бандл працює на типових значеннях. Усі параметри — на сторінці [Налаштування](/docs/api/mcp-bundle/config).
43
+
44
+
## Крок 4: Реєстрація маршрутів
45
+
46
+
Скопіюйте `vendor/ufo-tech/mcp-bundle/install/routes/ufo_mcp.yaml` у `config/routes/`:
47
+
48
+
```yaml
49
+
# config/routes/ufo_mcp.yaml
50
+
ufo_mcp:
51
+
resource: ../../vendor/ufo-tech/mcp-bundle/config/router.yaml
52
+
prefix: /mcp
53
+
defaults: { api_group: mcp }
54
+
```
55
+
56
+
Один імпорт — один MCP-ендпоінт, що обслуговує одну [групу API](/docs/api/json-rpc-bundle/functionality/groups) (`api_group`). Щоб додати ще ендпоінт, імпортуйте той самий `router.yaml` ще раз з іншими `prefix` і `api_group` — див. [Маршрути](/docs/api/mcp-bundle/config).
57
+
58
+
## Крок 5: Методи для MCP
59
+
60
+
Додайте RPC-методи в групу ендпоінта атрибутом `#[RPC\APIGroups]`:
61
+
62
+
```php
63
+
use Ufo\JsonRpcBundle\ApiMethod\Interfaces\IRpcService;
64
+
use Ufo\McpBundle\Attribute\McpTool;
65
+
use Ufo\RpcObject\RPC;
66
+
67
+
#[RPC\Info('Catalog')]
68
+
#[RPC\APIGroups(['mcp'], withDefault: false)] // лише /mcp, не /rpc
69
+
final class CatalogProcedure implements IRpcService
70
+
{
71
+
/** Search products by name. */
72
+
#[McpTool(readOnlyHint: true)]
73
+
public function search(string $query, int $limit = 10): array
74
+
{
75
+
// ...
76
+
}
77
+
}
78
+
```
79
+
80
+
`withDefault: false` прибирає методи з типової групи (`/rpc`); без нього методи доступні і в `/rpc`, і в `/mcp`.
81
+
82
+
:::info
83
+
`#[McpTool]` необов'язковий: він лише додає підказки для агента. Інструментом стає кожен метод групи — див. [Інструменти](/docs/api/mcp-bundle/tools).
84
+
:::
85
+
86
+
## Перевірка
87
+
88
+
| Запит | Що повертає |
89
+
| --- | --- |
90
+
| `POST /mcp` | MCP-ендпоінт (Streamable HTTP) |
91
+
| `GET /mcp/manifest/claude.json` | Конфігурацію підключення для Claude Code (також `cursor`, `gemini`, `openai`) |
92
+
| `GET /mcp/server.json` | Документ для MCP Registry |
93
+
94
+
Маніфест для Claude Code:
95
+
96
+
::::columns
97
+
:::col
98
+
**Request**:
99
+
```bash
100
+
curl https://example.com/mcp/manifest/claude.json
101
+
```
102
+
:::
103
+
104
+
:::col
105
+
**Response**:
106
+
```json
107
+
{
108
+
"mcpServers": {
109
+
"mcp": {
110
+
"type": "http",
111
+
"url": "https://example.com/mcp",
112
+
"headers": {"Ufo-RPC-Token": "${UFO_MCP_TOKEN}"}
113
+
}
114
+
}
115
+
}
116
+
```
117
+
:::
118
+
::::
119
+
120
+
Якщо в JsonRpcBundle увімкнено `protected_doc`, додайте до запиту заголовок з токеном. Збережіть відповідь у `.mcp.json` проєкту і задайте змінну оточення `UFO_MCP_TOKEN` — Claude Code побачить інструменти групи.
121
+
122
+
Перелік інструментів без AI-клієнта — через [MCP Inspector](https://github.com/modelcontextprotocol/inspector):
123
+
124
+
```bash
125
+
npx -y @modelcontextprotocol/inspector --cli https://example.com/mcp \
126
+
--transport http --header "Ufo-RPC-Token: change-me" --method tools/list
127
+
```
128
+
129
+
## Що далі?
130
+
131
+
* [Налаштування](/docs/api/mcp-bundle/config) — кілька ендпоінтів, версії, сесії.
132
+
* [Інструменти](/docs/api/mcp-bundle/tools) — як будуються схеми, тексти і результати.
133
+
* [HTTP і безпека](/docs/api/mcp-bundle/http_security) — токени, CORS, DNS rebinding.