{"_id":"@ai-agents-hub/mcp-bridge","_rev":"3-086d53a068e96df4ab8bc6e821948902","name":"@ai-agents-hub/mcp-bridge","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@ai-agents-hub/mcp-bridge","version":"0.1.0","license":"MIT","_id":"@ai-agents-hub/mcp-bridge@0.1.0","maintainers":[{"name":"ruslan-it-ivanov","email":"ruslan4432013@gmail.com"}],"bin":{"agents-hub-bridge":"dist/index.js"},"dist":{"shasum":"cfdaa1a4da920c34bd4f41777d8687c332c85e59","tarball":"https://registry.npmjs.org/@ai-agents-hub/mcp-bridge/-/mcp-bridge-0.1.0.tgz","fileCount":8,"integrity":"sha512-vC+tMwUc2DSpNf7K1S1TZSf1a21gzzC7ie6HjT165QP0w/LuVAKST4IW1N++2nlwmm+kC2hO9G/BS++hekdvOg==","signatures":[{"sig":"MEQCIBlmqFpJFMe6dgHyHvQVStDu2MmGECjBSHbAWr4KTUpLAiABxtj+93o2GrTDHVe9dh8lQqYWbCU0d72IeujEPkd+0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24446},"type":"module","engines":{"node":">=20"},"gitHead":"c83ddf8f84f464b1f7943ae85e94e13fb859cbbf","scripts":{"dev":"tsc -b && node dist/index.js","build":"tsc -b","prepublishOnly":"npm run build"},"_npmUser":{"name":"ruslan-it-ivanov","email":"ruslan4432013@gmail.com"},"_npmVersion":"11.6.0","description":"Мост между локальными MCP-серверами и AI Agent Hub: агент в мессенджере зовёт инструменты на вашем компьютере","directories":{},"_nodeVersion":"24.8.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-bridge_0.1.0_1788816803243_0.4231120154141492","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ai-agents-hub/mcp-bridge","version":"0.1.1","license":"MIT","_id":"@ai-agents-hub/mcp-bridge@0.1.1","maintainers":[{"name":"ruslan-it-ivanov","email":"ruslan4432013@gmail.com"}],"bin":{"agents-hub-bridge":"dist/index.js"},"dist":{"shasum":"4b22a4feae51c262cfd45130205aeb576fd716cc","tarball":"https://registry.npmjs.org/@ai-agents-hub/mcp-bridge/-/mcp-bridge-0.1.1.tgz","fileCount":8,"integrity":"sha512-GXCHkwKJZ7U6fRpNZrSFAXSBowwxGp2ezVSBJxWVes9Ju+vWg655DZJHmfFe//xMj1xOst14KfNocyTN4+H0PQ==","signatures":[{"sig":"MEUCIQCAZbGQE9aCnhagxtuutpNLC5hOS6uai6YHjjXWMdzcNQIgP93NYCUl/X5mIyuwrSoXVhyoIipdzEw0glnWx/0jINU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26929},"type":"module","engines":{"node":">=20"},"gitHead":"ba4c790acdc8ab8411b5d3eccce270b36358166d","scripts":{"dev":"tsc -b && node dist/index.js","build":"tsc -b","prepublishOnly":"npm run build"},"_npmUser":{"name":"ruslan-it-ivanov","email":"ruslan4432013@gmail.com"},"_npmVersion":"11.6.0","description":"Мост между локальными MCP-серверами и AI Agent Hub: агент в мессенджере зовёт инструменты на вашем компьютере","directories":{},"_nodeVersion":"24.8.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-bridge_0.1.1_1788819275747_0.2635746078671348","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"_id":"@ai-agents-hub/mcp-bridge@0.1.2","bin":{"agents-hub-bridge":"dist/index.js"},"dist":{"shasum":"48603e0d7d3a35138a629aa989764beeb8d8080d","tarball":"https://registry.npmjs.org/@ai-agents-hub/mcp-bridge/-/mcp-bridge-0.1.2.tgz","fileCount":8,"integrity":"sha512-myOklslfVSXfH25QbNMTCy/6UmUQHoyBtgK56gOTEPt9F3m23GK9bqNUJ67lcvjXZrUEnQhZUIz+3PtovRYnig==","signatures":[{"sig":"MEQCIFMxu/Y5Qo/qG+Q/yRZupU9eBeuFzc7s1x7EpRrYAZTkAiAr32DLgIRxLpumHor6RvURrMUQNFyJdnYoUiCHK/JEMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDlxasOg/7OHV7oyJxMCp+j9bTVotexzn5KoAEfUDfI6gIhAMaArK9pvHyOqFxs/GMUWMvz2+LV6B0bNmwpg/lhXhdi"}],"unpackedSize":28216},"name":"@ai-agents-hub/mcp-bridge","type":"module","engines":{"node":">=20"},"gitHead":"7b62fe0a09ee0ee793b26708a5b710d40ac36124","license":"MIT","scripts":{"dev":"tsc -b && node dist/index.js","build":"tsc -b","prepublishOnly":"npm run build"},"version":"0.1.2","_npmUser":{"name":"ruslan-it-ivanov","email":"ruslan4432013@gmail.com"},"_npmVersion":"11.6.0","description":"Мост между локальными MCP-серверами и AI Agent Hub: агент в мессенджере зовёт инструменты на вашем компьютере","directories":{},"maintainers":[{"name":"ruslan-it-ivanov","email":"ruslan4432013@gmail.com"}],"_nodeVersion":"24.8.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-bridge_0.1.2_1789937228793_0.9313854582652927"}}},"time":{"created":"2026-09-07T21:33:23.100Z","modified":"2026-09-20T20:47:09.040Z","0.1.0":"2026-09-07T21:33:23.382Z","0.1.1":"2026-09-07T22:14:35.880Z","0.1.2":"2026-09-20T20:47:08.866Z"},"license":"MIT","description":"Мост между локальными MCP-серверами и AI Agent Hub: агент в мессенджере зовёт инструменты на вашем компьютере","maintainers":[{"name":"ruslan-it-ivanov","email":"ruslan4432013@gmail.com"}],"readme":"# @ai-agents-hub/mcp-bridge\n\nМост между вашими локальными MCP-серверами и агентами в [AI Agent Hub](https://ai-agent-hub-personal.ru).\n\nАгент живёт в облаке, ваш компьютер — за NAT. Мост решает это тем, что подключается **сам**:\nисходящее соединение с вашей машины к хабу. Открывать порты, поднимать туннель или получать\nбелый IP не нужно.\n\n```\nваш компьютер                                облако\n┌──────────────────────┐                ┌──────────────────┐\n│ MCP-серверы (stdio)  │                │  агент в чате    │\n│        ↑ запускает   │  исходящий WS  │        ↕         │\n│      мост  ──────────┼───────────────►│   AI Agent Hub   │\n└──────────────────────┘                └──────────────────┘\n```\n\n## Запуск\n\n```bash\n# первый раз — с кодом из приложения (Настройки → Мои компьютеры)\nnpx @ai-agents-hub/mcp-bridge mcp_7f3k2q9x\n\n# дальше просто\nnpx @ai-agents-hub/mcp-bridge\n```\n\nКод действует 10 минут и срабатывает один раз. После сопряжения токен лежит в\n`~/.config/ai-agents-hub/bridge.json` (режим 0600).\n\n## Конфигурация серверов\n\nФормат — тот же `mcp.json`, что у других программ с поддержкой MCP. Ищется в\n`--config <path>`, затем `./mcp.json`, затем `~/.config/ai-agents-hub/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/Users/me/work\"],\n      \"expose\": [\"read_*\", \"list_*\"],\n      \"deny\": [\"write_file\"]\n    }\n  }\n}\n```\n\n`expose` / `deny` — глобы по именам инструментов. По умолчанию выставляются все.\n\n**Конфиги Claude Desktop, Cursor и VS Code мост сам не читает.** Молча выставить в облако\nвсё, что вы когда-либо настраивали, вместе с ключами в `env`, — не то, чего ждут от одной\nкоманды. Перенести существующий конфиг можно явно: `--import claude`.\n\n## Ключи\n\n| Ключ | Что делает |\n| --- | --- |\n| `--config <path>` | конкретный файл с серверами |\n| `--hub <url>` | другой адрес хаба (по умолчанию прод) |\n| `--read-only` | наружу идут только инструменты с `readOnlyHint`; сервер без аннотаций не выставляется |\n| `--import claude` | взять серверы из конфига Claude Desktop |\n\n## Безопасность\n\nАгент с подключённым мостом может всё, что умеют разрешённые серверы, — прямо из переписки.\nПри первом запуске мост показывает список инструментов каждого сервера и спрашивает\nразрешение; оно запоминается по имени сервера **и** хешу командной строки, поэтому подмена\nкоманды под тем же именем спросит заново.\n\nКаждый входящий вызов печатается в терминал с аргументами и временем — это единственное\nместо, где видно, что агент делает с вашей машиной. Закрыли окно — доступа больше нет.\n\n## Разработка\n\n```bash\nnpm install\nnpm run build\nnode dist/index.js --hub http://localhost:8000 --config ./mcp.json\n```\n\nКадры протокола описаны в `src/protocol.ts` и обязаны совпадать с `src/mcp/protocol.py`\nв репозитории хаба — они лежат в одном репозитории именно поэтому.\n","readmeFilename":"README.md"}