512 lines
20 KiB
Plaintext
512 lines
20 KiB
Plaintext
---
|
||
title: MCP-серверы
|
||
description: Добавьте локальные и удаленные инструменты MCP.
|
||
---
|
||
|
||
Вы можете добавить внешние инструменты в OpenCode, используя _Model Context Protocol_ или MCP. OpenCode поддерживает как локальные, так и удаленные серверы.
|
||
|
||
После добавления инструменты MCP автоматически становятся доступными для LLM наряду со встроенными инструментами.
|
||
|
||
---
|
||
|
||
#### Предостережения
|
||
|
||
Когда вы используете сервер MCP, он добавляет контекст. Это может быстро сложиться, если у вас много инструментов. Поэтому мы рекомендуем быть осторожными с тем, какие серверы MCP вы используете.
|
||
|
||
:::tip
|
||
Серверы MCP добавляются к вашему контексту, поэтому будьте осторожны с тем, какие из них вы включаете.
|
||
:::
|
||
|
||
Некоторые серверы MCP, такие как сервер MCP GitHub, имеют тенденцию добавлять много токенов и могут легко превысить ограничение контекста.
|
||
|
||
---
|
||
|
||
## Давать возможность
|
||
|
||
Вы можете определить серверы MCP в своем [OpenCode Config](https://opencode.ai/docs/config/) в разделе `mcp`. Добавьте каждому MCP уникальное имя. Вы можете обратиться к этому MCP по имени при запросе LLM.
|
||
|
||
```jsonc title="opencode.jsonc" {6}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"name-of-mcp-server": {
|
||
// ...
|
||
"enabled": true,
|
||
},
|
||
"name-of-other-mcp-server": {
|
||
// ...
|
||
},
|
||
},
|
||
}
|
||
```
|
||
|
||
Вы также можете отключить сервер, установив для `enabled` значение `false`. Это полезно, если вы хотите временно отключить сервер, не удаляя его из конфигурации.
|
||
|
||
---
|
||
|
||
### Переопределение удаленных настроек по умолчанию
|
||
|
||
Организации могут предоставлять серверы MCP по умолчанию через свою конечную точку `.well-known/opencode`. Эти серверы могут быть отключены по умолчанию, что позволяет пользователям выбирать те, которые им нужны.
|
||
|
||
Чтобы включить определенный сервер из удаленной конфигурации вашей организации, добавьте его в локальную конфигурацию с помощью `enabled: true`:
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"jira": {
|
||
"type": "remote",
|
||
"url": "https://jira.example.com/mcp",
|
||
"enabled": true
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Значения вашей локальной конфигурации переопределяют удаленные значения по умолчанию. Дополнительную информацию см. в [config Priorce](/docs/config#precedence-order).
|
||
|
||
---
|
||
|
||
## Местный
|
||
|
||
Добавьте локальные серверы MCP с помощью `type` в `"local"` внутри объекта MCP.
|
||
|
||
```jsonc title="opencode.jsonc" {15}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"my-local-mcp-server": {
|
||
"type": "local",
|
||
// Or ["bun", "x", "my-mcp-command"]
|
||
"command": ["npx", "-y", "my-mcp-command"],
|
||
"enabled": true,
|
||
"environment": {
|
||
"MY_ENV_VAR": "my_env_var_value",
|
||
},
|
||
},
|
||
},
|
||
}
|
||
```
|
||
|
||
Эта команда запускает локальный сервер MCP. Вы также можете передать список переменных среды.
|
||
|
||
Например, вот как можно добавить тестовый сервер [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP.
|
||
|
||
```jsonc title="opencode.jsonc"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"mcp_everything": {
|
||
"type": "local",
|
||
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
|
||
},
|
||
},
|
||
}
|
||
```
|
||
|
||
И чтобы использовать его, я могу добавить `use the mcp_everything tool` в свои подсказки.
|
||
|
||
```txt "mcp_everything"
|
||
use the mcp_everything tool to add the number 3 and 4
|
||
```
|
||
|
||
---
|
||
|
||
#### Параметры
|
||
|
||
Вот все варианты настройки локального сервера MCP.
|
||
|
||
| Вариант | Тип | Необходимый | Описание |
|
||
| ------------- | ------------------- | ----------- | ------------------------------------------------------------------------------------- |
|
||
| `type` | Нить | Да | Тип подключения к серверу MCP должен быть `"local"`. |
|
||
| `command` | Множество | Да | Команда и аргументы для запуска сервера MCP. |
|
||
| `environment` | Объект | | Переменные среды, которые необходимо установить при запуске сервера. |
|
||
| `enabled` | логическое значение | | Включите или отключите сервер MCP при запуске. |
|
||
| `timeout` | Число | | Тайм-аут в мс для получения инструментов с сервера MCP. По умолчанию 5000 (5 секунд). |
|
||
|
||
---
|
||
|
||
## Удаленный
|
||
|
||
Добавьте удаленные серверы MCP, установив для `type` значение `"remote"`.
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"my-remote-mcp": {
|
||
"type": "remote",
|
||
"url": "https://my-mcp-server.com",
|
||
"enabled": true,
|
||
"headers": {
|
||
"Authorization": "Bearer MY_API_KEY"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
`url` — это URL-адрес удаленного сервера MCP, а с помощью параметра `headers` вы можете передать список заголовков.
|
||
|
||
---
|
||
|
||
#### Параметры
|
||
|
||
| Вариант | Тип | Необходимый | Описание |
|
||
| --------- | ------------------- | ----------- | ------------------------------------------------------------------------------------- |
|
||
| `type` | Нить | Да | Тип подключения к серверу MCP должен быть `"remote"`. |
|
||
| `url` | Нить | Да | URL-адрес удаленного сервера MCP. |
|
||
| `enabled` | логическое значение | | Включите или отключите сервер MCP при запуске. |
|
||
| `headers` | Объект | | Заголовки для отправки с запросом. |
|
||
| `oauth` | Объект | | Конфигурация аутентификации OAuth. См. раздел [OAuth](#oauth) ниже. |
|
||
| `timeout` | Число | | Тайм-аут в мс для получения инструментов с сервера MCP. По умолчанию 5000 (5 секунд). |
|
||
|
||
---
|
||
|
||
## OAuth
|
||
|
||
OpenCode автоматически обрабатывает аутентификацию OAuth для удаленных серверов MCP. Когда серверу требуется аутентификация, OpenCode:
|
||
|
||
1. Обнаружьте ответ 401 и инициируйте поток OAuth.
|
||
2. Используйте **Динамическую регистрацию клиента (RFC 7591)**, если это поддерживается сервером.
|
||
3. Надежно храните токены для будущих запросов
|
||
|
||
---
|
||
|
||
### Автоматический
|
||
|
||
Для большинства серверов MCP с поддержкой OAuth не требуется никакой специальной настройки. Просто настройте удаленный сервер:
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"my-oauth-server": {
|
||
"type": "remote",
|
||
"url": "https://mcp.example.com/mcp"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Если сервер требует аутентификации, OpenCode предложит вам пройти аутентификацию при первой попытке его использования. Если нет, вы можете [вручную запустить поток ](#authenticating) с помощью `opencode mcp auth <server-name>`.
|
||
|
||
---
|
||
|
||
### Предварительная регистрация
|
||
|
||
Если у вас есть учетные данные клиента от поставщика сервера MCP, вы можете их настроить:
|
||
|
||
```json title="opencode.json" {7-11}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"my-oauth-server": {
|
||
"type": "remote",
|
||
"url": "https://mcp.example.com/mcp",
|
||
"oauth": {
|
||
"clientId": "{env:MY_MCP_CLIENT_ID}",
|
||
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
|
||
"scope": "tools:read tools:execute"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Аутентификация
|
||
|
||
Вы можете вручную активировать аутентификацию или управлять учетными данными.
|
||
|
||
Аутентификация с помощью определенного сервера MCP:
|
||
|
||
```bash
|
||
opencode mcp auth my-oauth-server
|
||
```
|
||
|
||
Перечислите все серверы MCP и их статус аутентификации:
|
||
|
||
```bash
|
||
opencode mcp list
|
||
```
|
||
|
||
Удалить сохраненные учетные данные:
|
||
|
||
```bash
|
||
opencode mcp logout my-oauth-server
|
||
```
|
||
|
||
Команда `mcp auth` откроет ваш браузер для авторизации. После того как вы авторизуетесь, OpenCode надежно сохранит токены в `~/.local/share/opencode/mcp-auth.json`.
|
||
|
||
---
|
||
|
||
#### Отключение OAuth
|
||
|
||
Если вы хотите отключить автоматический OAuth для сервера (например, для серверов, которые вместо этого используют ключи API), установите для `oauth` значение `false`:
|
||
|
||
```json title="opencode.json" {7}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"my-api-key-server": {
|
||
"type": "remote",
|
||
"url": "https://mcp.example.com/mcp",
|
||
"oauth": false,
|
||
"headers": {
|
||
"Authorization": "Bearer {env:MY_API_KEY}"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
#### Параметры OAuth
|
||
|
||
| Вариант | Тип | Описание |
|
||
| -------------- | -------------- | --------------------------------------------------------------------------------------------- |
|
||
| `oauth` | Object \| false | Объект конфигурации OAuth или `false`, чтобы отключить автообнаружение OAuth. |
|
||
| `clientId` | String | OAuth client ID. Если не указан, будет выполнена динамическая регистрация клиента. |
|
||
| `clientSecret` | String | OAuth client secret, если этого требует сервер авторизации. |
|
||
| `scope` | String | OAuth scopes для запроса во время авторизации. |
|
||
|
||
#### Отладка
|
||
|
||
Если удаленный сервер MCP не может аутентифицироваться, вы можете диагностировать проблемы с помощью:
|
||
|
||
```bash
|
||
# View auth status for all OAuth-capable servers
|
||
opencode mcp auth list
|
||
|
||
# Debug connection and OAuth flow for a specific server
|
||
opencode mcp debug my-oauth-server
|
||
```
|
||
|
||
Команда `mcp debug` показывает текущий статус аутентификации, проверяет соединение HTTP и пытается выполнить поток обнаружения OAuth.
|
||
|
||
---
|
||
|
||
## Управлять
|
||
|
||
Ваши MCP доступны в виде инструментов OpenCode наряду со встроенными инструментами. Таким образом, вы можете управлять ими через конфигурацию OpenCode, как и любым другим инструментом.
|
||
|
||
---
|
||
|
||
### Глобальный
|
||
|
||
Это означает, что вы можете включать или отключать их глобально.
|
||
|
||
```json title="opencode.json" {14}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"my-mcp-foo": {
|
||
"type": "local",
|
||
"command": ["bun", "x", "my-mcp-command-foo"]
|
||
},
|
||
"my-mcp-bar": {
|
||
"type": "local",
|
||
"command": ["bun", "x", "my-mcp-command-bar"]
|
||
}
|
||
},
|
||
"tools": {
|
||
"my-mcp-foo": false
|
||
}
|
||
}
|
||
```
|
||
|
||
Мы также можем использовать шаблон glob, чтобы отключить все соответствующие MCP.
|
||
|
||
```json title="opencode.json" {14}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"my-mcp-foo": {
|
||
"type": "local",
|
||
"command": ["bun", "x", "my-mcp-command-foo"]
|
||
},
|
||
"my-mcp-bar": {
|
||
"type": "local",
|
||
"command": ["bun", "x", "my-mcp-command-bar"]
|
||
}
|
||
},
|
||
"tools": {
|
||
"my-mcp*": false
|
||
}
|
||
}
|
||
```
|
||
|
||
Здесь мы используем шаблон `my-mcp*` для отключения всех MCP.
|
||
|
||
---
|
||
|
||
### За агента
|
||
|
||
Если у вас большое количество серверов MCP, вы можете включить их только для каждого агента и отключить глобально. Для этого:
|
||
|
||
1. Отключите его как инструмент глобально.
|
||
2. В вашей [конфигурации агента](/docs/agents#tools) включите сервер MCP в качестве инструмента.
|
||
|
||
```json title="opencode.json" {11, 14-18}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"my-mcp": {
|
||
"type": "local",
|
||
"command": ["bun", "x", "my-mcp-command"],
|
||
"enabled": true
|
||
}
|
||
},
|
||
"tools": {
|
||
"my-mcp*": false
|
||
},
|
||
"agent": {
|
||
"my-agent": {
|
||
"tools": {
|
||
"my-mcp*": true
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
#### Шаблоны глобусов
|
||
|
||
Шаблон glob использует простые шаблоны подстановки регулярных выражений:
|
||
|
||
- `*` соответствует нулю или более любого символа (например, `"my-mcp*"` соответствует `my-mcp_search`, `my-mcp_list` и т. д.).
|
||
- `?` соответствует ровно одному символу.
|
||
- Все остальные символы совпадают буквально
|
||
|
||
:::note
|
||
Инструменты сервера MCP регистрируются с именем сервера в качестве префикса, поэтому, чтобы отключить все инструменты для сервера, просто используйте:
|
||
|
||
```
|
||
"mymcpservername_*": false
|
||
```
|
||
|
||
:::
|
||
|
||
---
|
||
|
||
## Примеры
|
||
|
||
Ниже приведены примеры некоторых распространенных серверов MCP. Вы можете отправить PR, если хотите документировать другие серверы.
|
||
|
||
---
|
||
|
||
### Часовой
|
||
|
||
Добавьте [сервер Sentry MCP](https://mcp.sentry.dev) для взаимодействия с вашими проектами и проблемами Sentry.
|
||
|
||
```json title="opencode.json" {4-8}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"sentry": {
|
||
"type": "remote",
|
||
"url": "https://mcp.sentry.dev/mcp",
|
||
"oauth": {}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
После добавления конфигурации пройдите аутентификацию с помощью Sentry:
|
||
|
||
```bash
|
||
opencode mcp auth sentry
|
||
```
|
||
|
||
Откроется окно браузера для завершения процесса OAuth и подключения OpenCode к вашей учетной записи Sentry.
|
||
|
||
После аутентификации вы можете использовать инструменты Sentry в своих подсказках для запроса данных о проблемах, проектах и ошибках.
|
||
|
||
```txt "use sentry"
|
||
Show me the latest unresolved issues in my project. use sentry
|
||
```
|
||
|
||
---
|
||
|
||
### Контекст7
|
||
|
||
Добавьте [сервер Context7 MCP](https://github.com/upstash/context7) для поиска в документах.
|
||
|
||
```json title="opencode.json" {4-7}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"context7": {
|
||
"type": "remote",
|
||
"url": "https://mcp.context7.com/mcp"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Если вы зарегистрировали бесплатную учетную запись, вы можете использовать свой ключ API и получить более высокие ограничения скорости.
|
||
|
||
```json title="opencode.json" {7-9}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"context7": {
|
||
"type": "remote",
|
||
"url": "https://mcp.context7.com/mcp",
|
||
"headers": {
|
||
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Здесь мы предполагаем, что у вас установлена переменная среды `CONTEXT7_API_KEY`.
|
||
|
||
Добавьте `use context7` в запросы на использование сервера Context7 MCP.
|
||
|
||
```txt "use context7"
|
||
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
|
||
```
|
||
|
||
Альтернативно вы можете добавить что-то подобное в свой файл [AGENTS.md](/docs/rules/).
|
||
|
||
```md title="AGENTS.md"
|
||
When you need to search docs, use `context7` tools.
|
||
```
|
||
|
||
---
|
||
|
||
### Греп от Верселя
|
||
|
||
Добавьте сервер MCP [Grep от Vercel](https://grep.app) для поиска по фрагментам кода на GitHub.
|
||
|
||
```json title="opencode.json" {4-7}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mcp": {
|
||
"gh_grep": {
|
||
"type": "remote",
|
||
"url": "https://mcp.grep.app"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Поскольку мы назвали наш сервер MCP `gh_grep`, вы можете добавить `use the gh_grep tool` в свои запросы, чтобы агент мог его использовать.
|
||
|
||
```txt "use the gh_grep tool"
|
||
What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
|
||
```
|
||
|
||
Альтернативно вы можете добавить что-то подобное в свой файл [AGENTS.md](/docs/rules/).
|
||
|
||
```md title="AGENTS.md"
|
||
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
|
||
```
|