feat(mcp-go): external_api 通用出站 HTTP 工具(带 SSRF 防护)

新增 external_api 工具(GET/POST):agent 图可调外部 API。安全为先:
- SSRF 防护 validateExternalURL/isBlockedIP:scheme 限 http/https;拒环回/内网
  /链路本地(含 169.254.169.254 云元数据)/未指定 IP;重定向同样校验、限 3 跳。
- 可选 EXTERNAL_API_ALLOWLIST(逗号分隔主机,支持子域)收窄到白名单。
- 超时 10s + 响应体限 256KB。
- 校验逻辑纯函数,单测覆盖(内网/元数据/scheme/白名单,字面量 IP 离线判定)。

注册进 mcp-go dispatch(external_api → externalAPI)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Blizzard
2026-06-18 11:58:45 +08:00
parent 6523323a27
commit aa3139da68
4 changed files with 194 additions and 2 deletions
+2 -2
View File
@@ -67,7 +67,7 @@
- [x] memory_get / memory_upsert · history_get / history_append
- [x] report_render / report_store / report_export
- [x] Word 渲染(🟡 自建零依赖 OOXML,非 UniOffice —— 偏差,UniOffice 商业授权)
- [ ] external_api外部 API 工具
- [x] external_api通用出站 HTTP:SSRF 防护 + 可选主机白名单 + 超时/限重定向/限体;含单测
### sundynix-mcp-py(算法型)
@@ -91,7 +91,7 @@
- [x] **真实登录 / 鉴权(JWT** —— 后端 + 前端闭环已完成 ✅
- [x] **代码解释器 + 安全沙箱**AST 守卫 + Docker 隔离已落地 ✅;生产可换 gVisor/Kata
- [x] **Harness 三件全完成** ✅:熔断降级 · 输入护栏 · LLM 评测 · 输出护栏(密钥脱敏)
- [ ] **长期记忆抽取** + external_api 工具
- [ ] **长期记忆抽取**external_api 工具已完成 ✅)
- [ ] **计费 / 商业化**真实实现
- [ ] 微服务化拆分(Morph B)—— 现为 Monolith First**按设计如此,非缺陷**