Pi has no built-in MCP; this adds a bridge extension + declarative registry.
- config/mcp.json: jira/confluence/gitlab servers, all enabled:false; URLs from
company.json ({config:...}), tokens from env ({env:...}) — nothing hardcoded
- extensions/mcp-bridge.ts: resolves env templates, and for enabled servers
connects via MCP SDK (dynamic import) and registers their tools; /mcp-status
command; graceful no-op when disabled or SDK absent
- docs/mcp.md: how to enable, prerequisites (VPN, tokens, uvx/npx, SDK), security
- package.json: @modelcontextprotocol/sdk as optionalDependency; ignore package-lock
Verified offline: extension loads, /mcp-status lists 3 servers (disabled), env
resolver builds gitlab API URL from company.json gitHost + GITLAB_TOKEN. Live
connect needs VPN + a token + authorization to run the server package.
48 lines
2.9 KiB
Markdown
48 lines
2.9 KiB
Markdown
# MCP-интеграции (Jira / Confluence / GitLab)
|
||
|
||
Pi не имеет встроенного MCP — его добавляет расширение `extensions/mcp-bridge.ts`. Оно читает
|
||
`config/mcp.json`, поднимает **включённые** серверы (stdio) и регистрирует их инструменты в pi.
|
||
**По умолчанию все серверы выключены.** Статус — команда `/mcp-status`.
|
||
|
||
## Как устроено
|
||
|
||
- Серверы объявлены в `config/mcp.json`. URL берутся из `config/company.json` (`{config:trackerUrl}`,
|
||
`{config:docsUrl}`, `{config:gitHost}`), токены — из окружения (`{env:JIRA_TOKEN}` и т.д.).
|
||
В коде и конфиге нет захардкоженных адресов и секретов.
|
||
- Bridge подставляет значения при запуске сервера. Если URL/токен не заданы — сервер помечается
|
||
`missing-env` и пропускается.
|
||
|
||
## Предпосылки (нужны только при включении)
|
||
|
||
- **VPN** и доступ к `jira.mvideo.ru` / `wiki.mvideo.ru` / `gitlab.tech.mvideo.ru`.
|
||
- MCP SDK: `npm i @modelcontextprotocol/sdk` в пакете (в `optionalDependencies`; ставится только
|
||
при включении MCP).
|
||
- Лаунчеры серверов: `uvx` (для `mcp-atlassian`) и/или `npx` (для `@zereight/mcp-gitlab`).
|
||
- Токены в окружении (см. `~/.config/pi-kit/env.sh`).
|
||
|
||
## Включение
|
||
|
||
1. В `config/mcp.json` поставь `"enabled": true` нужному серверу.
|
||
2. Задай токен в окружении:
|
||
- Jira: `JIRA_TOKEN` (PAT Server/DC).
|
||
- Confluence: `CONFLUENCE_TOKEN` (PAT Server/DC).
|
||
- GitLab: `GITLAB_TOKEN` (scope `api`).
|
||
3. Установи SDK (если ещё нет): `npm i @modelcontextprotocol/sdk`.
|
||
4. Перезапусти `pi`. Проверь: `/mcp-status` → `connected` и число tools.
|
||
|
||
## Серверы
|
||
|
||
| Сервер | Пакет | URL из | Токен |
|
||
|---|---|---|---|
|
||
| `jira` | `mcp-atlassian` (uvx) | `trackerUrl` | `JIRA_TOKEN` |
|
||
| `confluence` | `mcp-atlassian` (uvx) | `docsUrl` | `CONFLUENCE_TOKEN` |
|
||
| `gitlab` | `@zereight/mcp-gitlab` (npx) | `gitHost` → `/api/v4` | `GITLAB_TOKEN` |
|
||
|
||
<!-- TODO: сверить с корпоративной политикой — какие MCP-серверы одобрены, разрешён ли uvx/npx
|
||
на машинах, или нужен предустановленный/зеркалированный образ. -->
|
||
|
||
## Безопасность
|
||
|
||
MCP-серверы — сторонние процессы с полным доступом к твоим токенам. Включай только одобренные
|
||
образы. Инструменты MCP проходят через guardrails pi (permission-gate/audit) как обычные вызовы.
|