mcpField
E
establish-mcp

establish-mcp

github.com/iskron-aiAgent 工作流2134 次安装1 天前更新
代码仓库

关于 establish-mcp

establish-mcp 是 iskron 技能套件中的连接配置技能,用于在 Agent 会话中建立 iskron-bridge 到远程图谱服务的传输。它也指导检查、认证、切换服务地址和更新桥接程序。

主要功能

  1. 01检查桥接程序和连接配置
  2. 02通过 OAuth 或个人令牌认证
  3. 03选择远程服务地址
  4. 04安装或更新桥接程序
  5. 05验证图谱工具是否可用

适用场景

  1. 01新机器首次连接 iskron 服务
  2. 02排查 MCP 工具的传输或认证故障
  3. 03切换服务器并检查桥接版本

MCP 相关

技能通过本地 stdio MCP 桥接程序 iskron-bridge 连接远程 iskron 服务,并指导在不同 Agent 环境中安装和验证。桥接程序提供图谱工具的传输通道。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/iskron-ai/skills --skill establish-mcp

安装后在 Claude Code 中输入/establish-mcp确认已加载。

附带文件scripts/opencode-plugin.js

详细介绍

Establish MCP — транспорт до графа

Все прочие скиллы поставки предполагают, что тулы iskron_* уже в сессии. Этот скилл их туда приводит — и кончается сессией, в которой ответил вызов iskron_me(action="whoami") или iskron_orient; дальше — entry.

Когда звать

  • тулов iskron_* в сессии нет, или они есть и отказывают транспортом: не подключено, вход OAuth, токен отвергнут, молчание;
  • первый вход на машине — браузером или личным токеном;
  • записи уходят без автора и после повторного iskron_stand (standing, «Дерево починки») — тулы идут мимо моста или мост старой сборки;
  • смена сервера (русская или английская версия, другой экземпляр сервера), проверка или обновление поставки, вопрос «какая версия моста».

Когда не звать. Хоть один тул iskron_* в этой сессии ответил по существу — транспорт есть, вернись к задаче (кроме записей без автора выше). Отказ самого графа (нет узла, нет прав, 422) — не транспорт. Агенту, у которого тулы графа свои, а не из этой поставки, скилл не нужен.

Что стоит на машине

Сервер удалённый; на машину ставится только эта поставка, и она несёт свой транспорт — мост iskron-bridge: файл scripts/iskron.mjs рядом с этим скиллом (далее <мост>). Один файл несёт stdio-MCP-мост, сторожей стояния и служебные подкоманды; их перечень и флаги печатает node <мост> --help. Мост держит грант сам (один вход на всю машину) и привязку стояния: только он держит место, слух канала и подпись записей местом — без него записи агента уходят без автора. Прямое подключение сервера коннектором — запасной путь веб-клиента, и называется он всегда с ценой (ниже, «Мост не поднять»).

Мост приходит сам: плагин Claude Code и плагин Codex несут его записью MCP (claude mcp list → plugin:iskron:iskron; codex mcp list → iskron, command node, Auth: Unsupported — так и должно быть, грант у моста свой), в pi его поднимает расширение пакета, в OpenCode — плагин поставки. Где <мост> на этой машине: домашняя копия ~/.iskron-bridge/iskron-bridge.mjs (мост, однажды поднятый харнесом, кладёт её сам); путь, который печатает claude mcp list или codex mcp list; путь в блоке [iskron-bridge] ответа iskron_stand; в крайнем случае $SKILL_DIR/scripts/iskron.mjs ($SKILL_DIR печатается при загрузке скилла).

Первый ход — doctor

node ~/.iskron-bridge/iskron-bridge.mjs doctor      # или node <мост> doctor

Одна команда, ничего не правящая: сборка, адрес сервера и его ответ, грант или токен, записи в конфигах харнесов и раздел «субагенты» — запись моста-спутника у каждого файла агента проекта и его пробный запуск. Зови его из каталога проекта: записи OpenCode и файлы агентов он ищет вверх по дереву от своего каталога. Делай, что он сказал: каждая его строка называет факт и путь, а расхождение — командой починки. Цитируй сборку из его первой строки (vX.Y.Z+хеш) в любом разговоре о поломке.

Моста или записи нет — поставь

Порядок по харнесам — ~/.iskron-bridge/SETUP.md (его кладёт update; нет файла — node <мост> update положит, или прочти SETUP.md в корне github.com/iskron-ai/skills). Штатный путь — плагин: Claude Code claude plugin marketplace add iskron-ai/skills и claude plugin install iskron@iskron; pi pi install git:github.com/iskron-ai/skills; Codex — ниже, своим разделом. После — новая сессия (в Claude Code можно /reload-plugins).

Без плагина мост ставится копией в устойчивый дом (никогда не ссылайся из конфига внутрь версионированного пути установки) и регистрируется stdio-сервером в пользовательском конфиге харнеса, не проектном — граф следует за человеком через все репозитории:

mkdir -p ~/.iskron-bridge && cp "$SKILL_DIR/scripts/iskron.mjs" ~/.iskron-bridge/iskron-bridge.mjs
claude mcp add --scope user iskron-bridge -- node ~/.iskron-bridge/iskron-bridge.mjs     # Claude Code

Прочие харнесы: { "mcpServers": { "iskron-bridge": { "command": "node", "args": ["/абс/путь/.iskron-bridge/iskron-bridge.mjs"] } } } — абсолютный путь, где ~ не раскрывается. Нужен Node 22+.

Claude Desktop — скиллы в нём загружены в приложение, и файла моста рядом на диске нет: мост скачивается из последнего выпуска, не с main (TAG=$(curl -fsSI https://github.com/iskron-ai/skills/releases/latest | tr -d '\r' | sed -n 's|^[Ll]ocation: .*/releases/tag/||p'), затем curl -fsSL --create-dirs "https://raw.githubusercontent.com/iskron-ai/skills/$TAG/skills/establish-mcp/scripts/iskron.mjs" -o ~/.iskron-bridge/iskron-bridge.mjs; на Windows — PowerShell-рецепт SETUP.md с curl.exe), запись выше вписывается в claude_desktop_config.json (путь по системе — SETUP.md, ветка Claude Desktop), приложение перезапускается. Оболочки у тебя нет — продиктуй это человеку.

OpenCode — не запись mcp в конфиге (она переименует тулы и смешает сессии), а плагин поставки, вторым файлом тем же ходом:

mkdir -p ~/.config/opencode/plugins && cp "$SKILL_DIR/scripts/opencode-plugin.js" ~/.config/opencode/plugins/iskron.js

Плагин поднимает мост из домашней копии на Bun самого OpenCode (Node не нужен); пока входа нет, тул iskron_bridge называет адрес входа. Запись mcp, которую назвал doctor, убирает человек правкой названного файла.

Проверяй вызовом, не конфигом: перезапусти MCP-слой харнеса и позови iskron_me(action="whoami") или iskron_realm(action="list"). Ответил — подключено; всё меньшее — нет.

Codex

codex plugin marketplace add https://github.com/iskron-ai/skills
codex plugin add iskron@iskron

Манифест плагина несёт запись MCP iskron — сам мост: node ./skills/establish-mcp/scripts/iskron.mjs от корня плагина. Копировать и править config.toml не нужно. Проверка — codex mcp list: iskron с command node и Auth: Unsupported. Это норма, а не поломка: грант держит мост (вход — ниже, «Вход»), codex mcp login здесь не нужен. После первого запуска мост лежит и домашней копией ~/.iskron-bridge/iskron-bridge.mjs — по ней зови doctor и update. Первый вызов тула в сессии Codex — проверка, как и везде.

  • Без плагина: после копии в дом — codex mcp add iskron-bridge -- node "$HOME/.iskron-bridge/iskron-bridge.mjs".
  • codex exec: вызовы MCP требуют одобрения, и без него отбиваются словами approval policy is never — тулы видны, но не зовутся. Живьём вызов прошёл с --dangerously-bypass-approvals-and-sandbox — он снимает и песочницу, только для внешне изолированной среды; более узкий --approve-for-me есть в codex exec --help, но с тулами графа не проверялся.
  • Обновление плагина: codex plugin marketplace upgrade iskron, затем codex plugin remove iskron@iskron (без @iskron отказывает) и codex plugin add iskron@iskron; новая сессия.
  • Слух канала: сторож node "<мост>" watchdog-codex <ключ> из оболочки сессии Codex. Ему нужна дверь — демон codex app-server и песочница треда, пускающая к ~/.iskron-bridge: ход человека до запуска сессии, порядок — SETUP.md; открыта ли — говорит doctor. Код 2 и держание сторожа — standing, «Выбор сторожа».

登录

OAuth。 首次调用时,如果没有授权,服务会返回一个带登录链接的错误——链接指向桥接程序本身:http://127.0.0.1:ПОРТ/login;桥接程序会尝试自行打开浏览器。把链接交给用户,用户登录后重试调用。此链接供整台机器使用,只要还有一个桥接程序在监听,就有效。没有浏览器时,设置 ISKRON_BRIDGE_NO_BROWSER=1 或使用 --no-browser:桥接程序只会打印链接。此链接仅在桥接程序所在的机器上有效。如果服务器支持设备码登录,同一错误中还会附带第二个链接——设备码登录页面(… or sign in from another device: <ссылка> (code …, valid until … UTC …)):将完整链接(包括截止时间)交给用户;用户可在任意设备上打开,手机也可以,桥接程序会自动获取授权。设备码会在指定时间前有效,在此之前每次调用都会返回同一个码;只有到期后的调用才会生成新码——届时请把新码交给用户。桥接程序显示 no sign-in by code: … — 授权服务器没有设备码登录客户端:将此情况告知用户,作为服务器操作员处理;不要自行绕过。没有设备码登录页面时,使用 ssh -L ПОРТ:127.0.0.1:ПОРТ <хост> 并访问同一个本地链接,或者使用个人令牌。授权会存入 ~/.iskron-bridge/,之后会自动刷新。

使用个人令牌代替 OAuth——适用于无头机器、CI,或反复登录失败的情况。令牌由用户在图谱的 Web 界面中生成并交给你;不要编造、猜测或拿别人的令牌。

mkdir -p ~/.iskron-bridge && (umask 077; printf '%s\n' "$ISKRON_TOKEN" > ~/.iskron-bridge/token)
node ~/.iskron-bridge/iskron-bridge.mjs doctor      # скажет, принят ли токен

也可以在桥接程序进程的环境中设置 ISKRON_BRIDGE_TOKEN——其优先级高于文件。使用令牌时,桥接程序完全不会打开浏览器;如果令牌被拒绝,请用户在错误中指定的位置提供新令牌;移除令牌后,桥接程序会恢复使用 OAuth。令牌绝不会写入配置文件或 URL。

服务器:use

未提供参数时,桥接程序会连接 https://mcp.iskron.ru。如果用户不懂俄语,在首次登录前询问一次是否希望使用英文版 Искрон:

node ~/.iskron-bridge/iskron-bridge.mjs use en      # mcp.iskron.ai; use ru — обратно; use <url> — другой сервер

选择会写入 ~/.iskron-bridge/server,并在未提供参数时传递给插件。桥接程序按地址分别保存授权;更改地址就需要重新登录。ISKRON_BRIDGE_URL 或 URL 参数的优先级高于文件。不要猜测非默认服务器地址——向用户询问,或从仓库的 AGENTS.md 中获取。

更新

在官方地址(mcp.iskron.ru、mcp.iskron.ai)上,桥接程序会自动更新,并在工具响应中通过 ПОСТАВКА ОТСТАЛА 一行提示有新版本——请将这行信息告知用户。使用 use <url> 切换到其他服务器后,桥接程序不会主动检查更新,只有用户要求时才检查:

node ~/.iskron-bridge/iskron-bridge.mjs update

此命令会将最新版桥接程序、OpenCode 插件(如果已安装)和 SETUP.md 放入主目录,并打印“接下来”:技能会通过工作流渠道根据最新版 SETUP.md 更新,然后重启会话——旧版本桥接程序会一直运行到会话结束。查看当前安装的版本:node <мост> --version。

无法启动桥接程序

没有 stdio 服务的 Web 客户端(claude.ai、浏览器中的 ChatGPT)无法启动桥接程序——备用方案是直接配置 MCP 客户端连接器。由用户在客户端设置中添加:地址填写根路径 https://mcp.iskron.ru/(英文版为 https://mcp.iskron.ai/),不要填写 app.* 页面或测试环境;无需手动填写 OAuth 字段——客户端会根据元数据自行查找授权服务器;删除旧连接器并重新添加,不要修改旧连接器。在 claude.ai 和 Claude Desktop 中,服务器会以未授权状态添加——点击 Install 后,再在 Connectors 选项卡中点击 Connect。工具有响应后,说明限制:没有空间、频道帧无法送达、记录使用的是没有空间的用户密钥签名,案例中也没有可感知的等待状态;要正常工作,请在带有 stdio 服务的工作流中使用包含桥接程序的插件(见上文“没有桥接程序或记录——安装一个”)。

没有可用路径——既没有桥接程序,也没有连接器:机器没有 Node 22+(OpenCode 除外,它使用自带的 Bun 运行桥接程序),客户端不支持 stdio,也没有连接器,且没有用于登录的浏览器或个人令牌。请直接告诉用户缺少什么,以及如何解决;问题解决后,重新连接。

Ошибки моста

Мост не отвечает тишиной: каждая его ошибка называет iskron-bridge, сборку, причину и вердикт — что делать. Читай его слово и делай, что оно велит; вердикт «исход неизвестен» после пишущего вызова значит «перечитай цель, прежде чем повторять». Вызовы висят без всякой ошибки — харнес говорит не с этим мостом: сверь doctor и процесс, который конфиг реально запустил. Сборка в ошибке старше релиза — сперва update и перезапуск сессий, потом разбор. История гранта словами сервера — ~/.iskron-bridge/grant.log.

Чего мост не советует сам:

  • session recovery failed — сервер перезапустился и отверг переинициализацию: перезапусти MCP-соединение харнеса (переподключение сервера или новая сессия).
  • all candidate callback ports … are held — мост просит освободить порт. Найди держателя: lsof -iTCP:ПОРТ -sTCP:LISTEN (Windows: netstat -ano | findstr :ПОРТ). Если это мост с незакрытым входом, SIGTERM (pkill) снимает его сразу, пока его локальную ссылку никто не открывал: запись входа остаётся, и следующий мост подхватит этот вход и отдаст тот же код. Ссылку уже открыли — он ждёт клика человека до пяти минут; не ждать — только kill -9, и начатый по ней клик пропадёт, ссылку откроют заново.
  • Все агенты машины разом просят вход — обычно живы процессы моста прежней сборки, они не берут общий замок обновления и гасят грант. Найди их: ps ax | grep -E 'iskron-bridge|iskron\.mjs' (у плагинного моста версия стоит в пути). Затем update и перезапуск сессий со старой сборкой.
  • В браузере после пароля — «в ссылке для входа не хватает обязательных параметров» (Windows; в ошибке моста этого нет): вкладку открыл мост прежней сборки и обрезал адрес. Открой ссылку моста из ответа тула целиком — http://127.0.0.1:ПОРТ/login?k=…, — затем update.

评论

支持 Markdown