Skip to main content

alice-mcp

MCP 热启动网关(不写客户端 config,agent 经网关直接调用 MCP 工具;自检/添加/移除/热开关/目录包装/工具目录发现)。触发词:mcp自检/添加mcp/移除mcp/mcp管理/mcp工具/包装工具目录。

Informações da origem

Repositório
alicewe1/alice_skill
Última atividade na origem
25 de setembro de 2026 às 18:44
Idioma detectado do SKILL.md
chinês
Estrelas
40
Forks
6

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
alice-mcp
description
MCP 热启动网关(不写客户端 config,agent 经网关直接调用 MCP 工具;自检/添加/移除/热开关/目录包装/工具目录发现)。触发词:mcp自检/添加mcp/移除mcp/mcp管理/mcp工具/包装工具目录。
x-alice-class
assist
x-alice-domain
routing-skill-engineering
# alice-mcp — MCP 热启动网关(agent 层调用,零客户端配置) > 架构(硬性理解): > - MCP server **不写入任何客户端 config**(codex/dsh/claude/workbuddy/pi 一律不写)。 > - `mcp_gateway.py` 按 registry 直接 spawn server 进程(stdio JSON-RPC),取工具目录、 > 转发调用,结果以普通命令输出喂给 agent —— **即加即用,无需重启客户端**。 > - 热开关:registry `disabled=true/false` 即时生效(gateway 每次调用现读)。 > - 兼容回退:`--client-sync` 可选把 registry 编译进当前客户端配置(默认不用)。 ## 脚本与入口 | 命令 | 作用 | |:--|:--| | `mcp_manager.py --check` | 环境自检:registry / mcpRoot / server 健康与生效提示 | | `mcp_manager.py --add <名> --cmd X --args "..." [--cwd D] [--env K=V]` | 添加 stdio server(**即加即用**) | | `mcp_manager.py --add <名> --url U [--headers "K=V"]` | 添加 http server | | `mcp_manager.py --remove <名>` | 移除 | | `mcp_manager.py --disable <名>` / `--enable <名>` | **热关/热开**(即时生效) | | `mcp_manager.py --test <名>` | server 进程握手验证 | | `mcp_manager.py --wrap <目录> [--name S]` | 目录内可执行文件 → 一个 MCP server(每文件一个 `run_<名>` 工具) | | `mcp_gateway.py list` | **agent 工具目录发现入口**(所有启用 server 的工具清单) | | `mcp_gateway.py list <server> --json` | 单 server 工具目录(JSON) | | `mcp_gateway.py call <server> <tool> '{"k":"v"}'` | 调用工具(stdout 即结果) | | `mcp_gateway.py ping [server]` | 批量握手存活 | | `mcp_gateway.py start/stop/status` | 常驻池预热/关闭/状态 | 脚本位置:`<技能根>/aliceskill/scripts/`。退出码 0/2/3/4。 ## AI 执行流程 ### 工具发现(每个任务开始时,动态) ```bash python "<技能根>/aliceskill/scripts/mcp_gateway.py" list ``` - 输出形如 `mcp__<server>__<tool> — 描述`;**以这条命令的实时输出为准**,不凭记忆假设有哪些 server。 - 调用: ```bash python "<技能根>/aliceskill/scripts/mcp_gateway.py" call <server> <tool> '{"参数": "值"}' --timeout 300 ``` ### 添加(吸收)MCP 1. 问清四件事:名字、stdio(本地命令)还是 http(远程 URL)、**归属分类**(crack/reverse/pentest/game/ai/assist,可多选——决定出现在哪些路由页)、一句话说明。 2. stdio:`--add <名> --cmd <命令> --args "<参数>" --cwd <工作目录> --classes <类,类> --desc "<说明>"`(相对参数自动转绝对;`--classes` 决定该 server 出现在哪些路由页)。 3. http:`--add <名> --url <URL> --headers "Authorization=Bearer xxx" --classes <类,类>`。**网关双传输**:stdio(本地进程)与 Streamable HTTP(远程 MCP,如 github `https://api.githubcopilot.com/mcp/`)都已实现——registry 里有 `url` 自动走 HTTP,无 `url` 走 stdio;认证失败报 `HTTP 401/400` 并指向检查 headers。 4. 从 GitHub 装:先验证仓库真是 MCP server(package.json bin / pyproject 入口 / Dockerfile / 现成 http URL),验证不过不入库;装完走第 2/3 步。 5. **即加即用**:加完 `mcp_gateway.py list` 立即可见,无需重启客户端、无需写 config。 6. **归类落到路由页**:`--classes` 写入 registry 后重跑 `rebuild_menu.py`,该 server 自动出现在对应六类路由页的「可用 MCP 工具(按需使用,不全部加载)」段——例如 IDA 类 server 归 `reverse,crack` 就同时出现在逆和破两页。改归属 = 重新 `--add` 同名条目再重建。 ### 使用中调用(优先级规则) - 会话内盘点到与任务相关的 MCP 工具 → **优先调用**(经 gateway,输出即结果)。 - 调用失败/超时/无匹配 → **立即回退**本地命令与脚本继续执行,不停手、不追问、不要求用户装环境。 - **开工先汇报工作链路**:正式动手前向用户输出一行——`当前预使用 MCP 工具: xxx | xxx | xxx`(按需列出,无则写:无,走本地)+ `使用技能 N 个,取自: <模块id>.md | <模块id>.md | …`(N 个对应 `_modules/` 里的具体 SKILL.md 文件名,不是类名或领域名);执行中新增取模块或启用新 MCP server 时同步更新。 - 模块 frontmatter `x-alice-mcp: <server名>` 仅作核对提示:gateway list 里有就用,没有就回退。 ### 热开关(不使用时关闭) ```bash mcp_manager.py --disable <名> # 热关:gateway 立即拒绝该 server 调用 mcp_manager.py --enable <名> # 热开:立即可调 ``` - registry 每次调用现读,**无需重启任何东西**——这就是"要使用时申请、不使用时关闭"的实现。 ### 目录包装(把任意工具目录变成 MCP) ```bash mcp_manager.py --wrap <目录> --name <server名> mcp_gateway.py list <server名> mcp_gateway.py call <server名> run_<文件名> '{"argv": ["--help"], "timeout": 60}' ``` ## MCP 工作目录(mcpRoot)——向用户解释用 首次 `--add` 时 manager 会问「MCP 工作目录」。向用户转述以下要点(不要让用户猜): - **它是什么**:一个存放 MCP 数据的文件夹。你添加的所有 MCP server 清单(`servers.json`)、`--wrap` 生成的包装 server 都存在这里;gateway 每次调用都来这读配置。 - **怎么选**:直接用默认(`<客户端主目录>/mcp`,如 `~/.workbuddy-ai/mcp`)即可——跟客户端数据待在一起,备份/迁移顺手。别放 U 盘或网络盘(server 启动路径要稳定)。 - **确认方式**:回车确认默认,或指定目录后执行 `mcp_manager.py --set-root "<目录>"` 落盘(写入 `aliceskill/config/mcp_settings.json`,之后不再询问)。 - **换位置**:改/删 `mcp_settings.json` 后重新 `--set-root`;registry 里带旧绝对路径的 server 需重新 `--add`(用 `--test <名>` 逐个验证)。 - **换电脑**:发布包不含此目录的锁存信息(`mcp_settings.json` 不随包),新机首次使用重新问一次——这是设计行为。 ## 常见故障 | 现象 | 处置 | |:--|:--| | `gateway list` 报 unavailable | `--ping <名>` 看握手错误;命令不存在 → 修 registry 路径 | | 工具调用超时 | `--timeout` 加大;server 卡死用 `gateway stop --all` 清池 | | mcpRoot 未锁存 | manager 会 exit 3 问用户;用户给目录后 `--set-root` 落盘 | | codex 报 duplicate key(历史遗留) | 旧版曾写客户端 config 且逐键重复子表头;现架构已不写 config,`--client-sync` 写入器已修复为单子表头 | ## 与其它机制的关系 - **客户端原生 MCP**(dsh cordis / pi mcp.json)与本网关**互不干扰**:原生由客户端拉起、工具直接出现在会话;本网关由 agent 显式调用。同一 server 两边都配会重复,选一种。 - 提示词注入块(`inject_route_prompt.py`)只写「动态发现」规则,不含任何 server 清单。
Ver no GitHub