Files
opencode/packages/web/src/content/docs/ru/mcp-servers.mdx
2026-02-09 13:55:55 -06:00

512 lines
20 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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.
```