---
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.
```
