--- 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 `. --- ### Предварительная регистрация Если у вас есть учетные данные клиента от поставщика сервера 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. ```