iikona-mcp-proxy
by andromanpro
README.md
# iikona-mcp-proxy
stdio MCP-посредник для runtime-MCP сервиса в ядре ИИконы.
Переводит MCP-протокол через stdio (как ожидают Claude Desktop, Cursor и другие MCP-клиенты) в HTTP-вызовы к `/iikona-mcp/rpc` опубликованного в 1С HTTPService.
## Установка
Требуется Node.js 18+.
```bash
git clone https://github.com/andromanpro/1c-ai-connector-mcp-proxy.git
cd 1c-ai-connector-mcp-proxy
npm install
npm test
```
Или через `npx` без установки (после публикации в npm):
```bash
npx iikona-mcp-proxy
```
## Конфигурация
Через переменные окружения:
| Переменная | Назначение | Пример |
|---|---|---|
| `IIKONA_MCP_URL` | URL JSON-RPC endpoint в 1С | `http://localhost/iikona-dev/hs/iikona-mcp/rpc` |
| `IIKONA_MCP_USER` | логин API ИИконы (HTTP Basic) | `mcp-client` |
| `IIKONA_MCP_PASS` | пароль API ИИконы (HTTP Basic) | `<...>` |
| `IIKONA_MCP_TIMEOUT_MS` | таймаут HTTP-запроса, мс (опционально) | `30000` |
## Авторизация и проверка подключения
`IIKONA_MCP_USER` и `IIKONA_MCP_PASS` — отдельные логин и пароль API,
сохраненные в форме «Сервер MCP: настройки» ИИконы. Прокси передает их
в HTTP-заголовке Basic Auth. Это не имя и пароль пользователя информационной базы.
Сервисный пользователь ИБ, под которым публикация открывает сеанс 1С,
настраивается в базе и веб-публикации. Ему нужны роль
`КИИ_СерверMCPДиагностика` и базовые права ИИконы. Настройка реквизитов API
не заменяет настройку пользователя ИБ и его прав.
В ИИконе 1.6.2 внутренний тест проверяет работу MCP в текущей базе.
Внешняя HTTP-проверка обращается к указанному адресу публикации и проверяет
маршрут подключения. Для прокси используйте адрес
`http(s)://<сервер>/<публикация>/hs/iikona-mcp/rpc`.
Ответ 401 означает отказ авторизации; при 404 проверьте адрес и публикацию
HTTP-сервиса. Для подключения через внешнюю сеть используйте HTTPS.
Подробнее — в [разделе руководства о MCP-сервере](https://github.com/andromanpro/1c-ai-connector-guide/tree/main/mcp-сервер).
## Использование с Claude Desktop
В `claude_desktop_config.json` добавить:
```json
{
"mcpServers": {
"iikona": {
"command": "node",
"args": ["<путь-к-клону>/src/index.js"],
"env": {
"IIKONA_MCP_URL": "http://localhost/iikona-dev/hs/iikona-mcp/rpc",
"IIKONA_MCP_USER": "mcp-client",
"IIKONA_MCP_PASS": "...",
"IIKONA_MCP_TIMEOUT_MS": "30000"
}
}
}
}
```
После рестарта Claude Desktop в чате будут доступны 6 tools (ИИкона 1.6.2): `ping`, `get_configuration_info`, `get_metadata_tree`, `get_object_structure`, `execute_query`, `generate_diagram` (рендер готового кода диаграммы через Kroki в SVG или PNG). Список инструментов посредник пересылает из `tools/list` сервиса 1С: что опубликовано в вашей версии ИИконы, то клиент и увидит.
## Отладка
stdio MCP transport ожидает полноценный MCP handshake от клиента, поэтому простой `echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node src/index.js` не является надежной ручной проверкой.
Для прямого smoke-теста HTTPService без Claude Desktop/Cursor используйте внутренний CLI:
```bash
node tools/test-call.js tools/list
node tools/test-call.js ping
node tools/test-call.js tools/call get_configuration_info
```
CLI использует те же переменные окружения `IIKONA_MCP_URL`, `IIKONA_MCP_USER`, `IIKONA_MCP_PASS` и `IIKONA_MCP_TIMEOUT_MS`.
## Архитектура
```
Claude Desktop / Cursor / другие MCP-клиенты
↕ stdio (MCP standard)
[iikona-mcp-proxy] ← тонкий stdio↔HTTP proxy
↕ HTTP + Basic auth
1С HTTPService /iikona-mcp/rpc (КИИ_СерверMCP)
↕ in-process
container-pattern dispatcher → 6 MCP-tools
```
## Лицензия
MIT — см. [LICENSE](./LICENSE).
## Связанные проекты
- [`1c-ai-connector`](https://github.com/andromanpro/1c-ai-connector) — ИИкона: расширение 1С с runtime-MCP сервисом
- [`1c-ai-connector-tests`](https://github.com/andromanpro/1c-ai-connector-tests) — YAxUnit-тесты
- [`1c-ai-connector-guide`](https://github.com/andromanpro/1c-ai-connector-guide) — руководство пользователя (раздел про MCP-сервер)
---
🌐 [androman.pro](https://androman.pro) · ✈ [Telegram](https://t.me/andromanpro1c)
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues