这个仓库演示 AgentRun MCP Tool Hook 的完整使用方式:不修改原 MCP 服务,通过 AgentRun MCP 代理在 tools/list、tools/call 前后调用你的 Hook 服务,从而改写工具列表、工具调用请求或工具调用结果。
示例使用一个订单查询 MCP 服务和一个 Hook 服务。客户端调用 get_order 后,上游 MCP 服务返回原始订单信息,Hook 服务再对手机号、邮箱、收货地址做脱敏,并注入 audit_id。
- AgentRun MCP Hook 是什么,适合解决哪些问题。
- 如何编写一个 HTTP Hook 服务。
- 如何在 AgentRun MCP 工具中开启
proxyEnabled并配置hooks。 - 如何通过 AgentRun 数据面验证 Hook 是否生效。
| 文档 | 内容 |
|---|---|
| docs/users/hook.md | Hook 概念、事件、协议、配置字段和改造步骤 |
| mcp_remote/README.md | 已有远程 MCP 服务时,如何加 Hook |
| mcp_code/README.md | MCP 服务作为代码包托管时,如何加 Hook |
初次使用建议先跑 mcp_remote。它更接近“已有远程 MCP 服务,只想通过 AgentRun 加一层 Hook”的场景。
| 目录 | 用途 |
|---|---|
mcp_remote/ |
部署远程 MCP 服务和 Hook 服务,创建 MCP_REMOTE + proxyEnabled + hooks 工具 |
mcp_code/ |
打包 MCP 服务为代码包,创建 CODE_PACKAGE + proxyEnabled + hooks 工具 |
两个示例里的核心服务一致:
services/orderdesk:订单查询 MCP 服务,提供get_order。services/userhook:Hook 回调服务,处理POST_CALL_TOOL,对订单结果脱敏并注入审计编号。
准备当前示例目录的 .env:
cd mcp_remote
cp .env.example .env填写阿里云账号信息:
ALIBABA_CLOUD_UID=你的阿里云账号 UID
ALIBABA_CLOUD_ACCESS_KEY_ID=你的 AccessKey ID
ALIBABA_CLOUD_ACCESS_KEY_SECRET=你的 AccessKey Secret运行示例:
go run .成功后会输出 tool、hook、data_plane、tools、order 等信息。其中 order 应包含脱敏后的订单信息和 audit_id。
示例会自动完成以下动作:
- 构建并部署示例 MCP 服务。
- 构建并部署 Hook 服务。
- 创建开启 MCP proxy 的 AgentRun MCP 工具。
- 在
mcpProxyConfiguration.hooks中配置POST_CALL_TOOLHook。 - 通过 AgentRun 数据面调用
tools/list和get_order(ORDER-1001)。 - 验证结果已脱敏,并包含
audit_id。
示例结束时会尝试清理创建的 AgentRun Tool 和 FC 函数。如果运行中断或失败,可能需要到控制台手动清理对应资源。
- 密钥只放在
.env中,不要提交到代码仓库。 .env和.bin/已通过.gitignore排除。- 示例会优先加载仓库根目录
.env,再加载当前模块.env;当前模块配置会覆盖根目录配置。