{"id":50477106,"url":"https://github.com/devsapp/start-agentrun","last_synced_at":"2026-06-01T14:02:19.519Z","repository":{"id":358665135,"uuid":"1219838872","full_name":"devsapp/start-agentrun","owner":"devsapp","description":"start agentrun examples","archived":false,"fork":false,"pushed_at":"2026-05-18T12:21:55.000Z","size":97,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-18T14:29:29.839Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devsapp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-24T09:15:00.000Z","updated_at":"2026-05-18T12:22:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/devsapp/start-agentrun","commit_stats":null,"previous_names":["devsapp/start-agentrun"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/devsapp/start-agentrun","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devsapp%2Fstart-agentrun","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devsapp%2Fstart-agentrun/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devsapp%2Fstart-agentrun/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devsapp%2Fstart-agentrun/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devsapp","download_url":"https://codeload.github.com/devsapp/start-agentrun/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devsapp%2Fstart-agentrun/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33777971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-01T14:02:16.425Z","updated_at":"2026-06-01T14:02:19.498Z","avatar_url":"https://github.com/devsapp.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AgentRun MCP Hook 快速入门\n\n这个仓库演示 AgentRun MCP Tool Hook 的完整使用方式：不修改原 MCP 服务，通过 AgentRun MCP 代理在 `tools/list`、`tools/call` 前后调用你的 Hook 服务，从而改写工具列表、工具调用请求或工具调用结果。\n\n示例使用一个订单查询 MCP 服务和一个 Hook 服务。客户端调用 `get_order` 后，上游 MCP 服务返回原始订单信息，Hook 服务再对手机号、邮箱、收货地址做脱敏，并注入 `audit_id`。\n\n## 你会了解什么\n\n- AgentRun MCP Hook 是什么，适合解决哪些问题。\n- 如何编写一个 HTTP Hook 服务。\n- 如何在 AgentRun MCP 工具中开启 `proxyEnabled` 并配置 `hooks`。\n- 如何通过 AgentRun 数据面验证 Hook 是否生效。\n\n## 先读哪份文档\n\n| 文档 | 内容 |\n|------|------|\n| [docs/users/hook.md](docs/users/hook.md) | Hook 概念、事件、协议、配置字段和改造步骤 |\n| [mcp_remote/README.md](mcp_remote/README.md) | 已有远程 MCP 服务时，如何加 Hook |\n| [mcp_code/README.md](mcp_code/README.md) | MCP 服务作为代码包托管时，如何加 Hook |\n| [advance/mcp_header/README.md](advance/mcp_header/README.md) | 独立验证 PRE/POST Hook 改写 header |\n\n初次使用建议先跑 `mcp_remote`。它更接近“已有远程 MCP 服务，只想通过 AgentRun 加一层 Hook”的场景。\n\n## 示例目录\n\n| 目录 | 用途 |\n|------|------|\n| `mcp_remote/` | 部署远程 MCP 服务和 Hook 服务，创建 `MCP_REMOTE + proxyEnabled + hooks` 工具 |\n| `mcp_code/` | 打包 MCP 服务为代码包，创建 `CODE_PACKAGE + proxyEnabled + hooks` 工具 |\n| `advance/mcp_header/` | 单独验证 `PRE_CALL_TOOL` 改写上游请求头、`POST_CALL_TOOL` 改写客户端响应头 |\n\n`mcp_remote` 和 `mcp_code` 两个基础示例里的核心服务一致：\n\n- `services/orderdesk`：订单查询 MCP 服务，提供 `get_order`。\n- `services/userhook`：Hook 回调服务，处理 `POST_CALL_TOOL`，对订单结果脱敏并注入审计编号。\n\n`advance/mcp_header` 是独立调试 case，只提供 `debug_headers` 工具，用于验证请求头和响应头改写。\n\n## 快速运行\n\n准备当前示例目录的 `.env`：\n\n```bash\ncd mcp_remote\ncp .env.example .env\n```\n\n填写阿里云账号信息：\n\n```dotenv\nALIBABA_CLOUD_UID=你的阿里云账号 UID\nALIBABA_CLOUD_ACCESS_KEY_ID=你的 AccessKey ID\nALIBABA_CLOUD_ACCESS_KEY_SECRET=你的 AccessKey Secret\n```\n\n运行示例：\n\n```bash\ngo run .\n```\n\n成功后会输出 `tool`、`hook`、`data_plane`、`tools`、`order` 等信息。其中 `order` 应包含脱敏后的订单信息和 `audit_id`。\n\n## 运行结果说明\n\n示例会自动完成以下动作：\n\n1. 构建并部署示例 MCP 服务。\n2. 构建并部署 Hook 服务。\n3. 创建开启 MCP proxy 的 AgentRun MCP 工具。\n4. 在 `mcpProxyConfiguration.hooks` 中配置 `POST_CALL_TOOL` Hook。\n5. 通过 AgentRun 数据面调用 `tools/list` 和 `get_order(ORDER-1001)`。\n6. 验证结果已脱敏，并包含 `audit_id`。\n\n示例不会自动清理测试资源。运行完成后，创建的 AgentRun Tool、FC 函数和代码包等测试资源会保留，便于继续调试；不再需要时请到控制台手动删除。\n\n## 密钥和生成文件\n\n- 密钥只放在 `.env` 中，不要提交到代码仓库。\n- `.env` 和 `.bin/` 已通过 `.gitignore` 排除。\n- 示例会优先加载仓库根目录 `.env`，再加载当前模块 `.env`；当前模块配置会覆盖根目录配置。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevsapp%2Fstart-agentrun","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevsapp%2Fstart-agentrun","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevsapp%2Fstart-agentrun/lists"}