MCP и интеграции
Если базовые встроенные инструменты OpenCode работают внутри репозитория, то MCP позволяет подключать внешние системы: документацию, issue tracker, observability, кодовый поиск, базы знаний и многие другие источники данных и действий. Но MCP нужно внедрять осознанно, потому что каждый сервер добавляет не только возможности, но и контекстную нагрузку.
Что такое MCP и зачем он вообще нужен
Model Context Protocol, или MCP, это открытый стандарт для подключения AI-приложений к внешним системам. В терминах практической разработки это означает, что агент может получать инструменты не только из самого OpenCode, но и из внешних источников: удаленных сервисов, локальных процессов, документационных серверов, поисковых систем, платформ вроде Sentry и так далее.
Хорошая интуиция из общей MCP-документации звучит так: MCP для AI-клиентов играет роль, похожую на USB-C для устройств. То есть это стандартный порт подключения внешних возможностей. Вместо того чтобы каждая AI-система изобретала свою интеграцию с каждым сервисом, используется единый протокол взаимодействия.
Как это выглядит в OpenCode
После добавления MCP-сервера его инструменты становятся доступны LLM рядом со встроенными инструментами OpenCode. С точки зрения агента это выглядит как появление новых tool-вызовов, которые он может использовать при решении задачи.
Когда MCP действительно полезен в OpenCode-проекте
- Нужно подключать внешнюю документацию или knowledge base.
- Нужно анализировать ошибки и инциденты в observability-системе.
- Нужно доставать информацию из удаленных систем, а не только из локального репозитория.
- Нужно дать агенту actions за пределами репозитория, но в контролируемой форме.
Например, MCP особенно уместен, если вы хотите, чтобы OpenCode умел искать актуальную документацию библиотек, смотреть ошибки в Sentry, искать похожий код по GitHub-примерам или работать с внутренними системами компании через совместимый MCP server.
Главное ограничение: MCP расходует контекст
Документация OpenCode отдельно предупреждает, что MCP-серверы добавляют контекст. Это не декоративная деталь, а очень практическое ограничение. Если вы бездумно подключите много тяжелых MCP-интеграций, агент будет тратить токены не на решение задачи, а на описание и обработку инструментов.
Особенно осторожно нужно быть с серверами, которые тянут большие схемы инструментов или возвращают шумные данные. Поэтому лучший MCP setup — не максималистский, а curated. Подключать стоит только те серверы, которые реально дают выгоду в конкретном проекте.
Как подключаются MCP-серверы в OpenCode
OpenCode настраивает MCP через секцию mcp в opencode.json. У каждого сервера должно быть уникальное имя. Дальше агент может ссылаться на него по этому имени, а конфиг определяет тип подключения и параметры.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"name-of-mcp-server": {
"enabled": true
}
}
}
Локальные MCP-серверы
Локальный MCP server запускается как локальный процесс. Это удобно, когда интеграция живет рядом с вашей машиной или проектом: например, локальный documentation index, локальный database bridge или тестовый MCP server.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-local-mcp": {
"type": "local",
"command": ["npx", "-y", "my-mcp-command"],
"enabled": true,
"environment": {
"MY_ENV_VAR": "value"
}
}
}
}
Важные параметры здесь: type, command, environment, enabled и timeout. По сути, вы говорите OpenCode, как запустить локальный MCP server и с каким окружением.
Удаленные MCP-серверы
Удаленный MCP server подключается по URL. Это полезно для SaaS-интеграций и удаленных сервисов, где сервер MCP уже хостится снаружи.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote",
"url": "https://my-mcp-server.com",
"enabled": true,
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}"
}
}
}
}
Удаленный сервер может использовать обычные HTTP-заголовки, API keys и OAuth. Это делает MCP хорошим способом подключать внешние сервисы без написания кастомных интеграций внутри самого репозитория.
OAuth в OpenCode MCP
Отдельный плюс OpenCode в том, что он умеет автоматически обрабатывать OAuth для удаленных MCP-серверов. Если сервер требует аутентификацию, OpenCode может инициировать OAuth-поток и сохранить токены для дальнейшей работы.
Для многих серверов специальная конфигурация не нужна: достаточно указать удаленный MCP server, и при первой необходимости OpenCode предложит пройти авторизацию. При желании можно заранее задать clientId, clientSecret и scope.
opencode mcp auth my-oauth-server
opencode mcp list
opencode mcp logout my-oauth-server
Это очень удобно для сервисов вроде Sentry или других платформ, где доступ должен проходить через нормальную авторизацию, а не через хардкод токенов в конфиге.
Как управлять MCP так, чтобы не перегружать проект
Необязательно делать каждый MCP-сервер доступным каждому агенту. Напротив, хороший паттерн — отключать MCP глобально и включать их только в нужных агентах. Это снижает контекстный шум и делает orchestration более осмысленным.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"enabled": true
}
},
"tools": {
"context7*": false
},
"agent": {
"system-analyst": {
"tools": {
"context7*": true
}
}
}
}
Такой подход особенно полезен, если MCP нужен только части ролей. Например, analyst- или docs-oriented агентам может понадобиться documentation search, а data-engineer-агенту это будет просто лишним шумом.
Практические MCP-сценарии для OpenCode-проекта
| Сценарий | Какой MCP полезен | Зачем |
|---|---|---|
| Поиск актуальной документации библиотек | Context7 | Помогает получать свежие примеры и docs outside the repo. |
| Разбор production errors и issue streams | Sentry MCP | Дает агенту доступ к проблемам, stack traces и связанным проектам. |
| Поиск похожих решений по open-source коду | Grep by Vercel / grep.app MCP | Позволяет искать внешние кодовые примеры, когда локальной информации недостаточно. |
| Внутренние сервисы компании | Локальный или удаленный корпоративный MCP | Можно безопасно стандартизировать доступ агента к внутренним системам. |
MCP, пользовательские инструменты и skills: как не перепутать
Эти три слоя легко спутать, но роли у них разные:
- MCP подключает внешние системы и внешние инструменты через стандартный протокол.
- Пользовательские инструменты — это ваши собственные JS/TS-инструменты внутри экосистемы OpenCode.
- Skills — это не инструменты, а инструкции и playbooks для мышления и workflow.
Если задачу нужно решать через внешний сервис или внешний источник данных — это обычно MCP. Если нужно просто дать агенту новую внутреннюю функцию, которую вы контролируете кодом, — это custom tool. Если нужно дать способ мышления или набор правил — это skill.
Практический совет
Начинайте с малого. В большинстве проектов разумно сначала подключить один-два действительно полезных MCP-сервера, а не строить «зоопарк интеграций». Иначе выгоду от новых возможностей быстро съест контекстный шум.