每日 MCP Server

Artifactory MCP Server:把 Agent 工具调用关进可控的工件仓库

2026-09-11
网络仓库
支持客户端:
Claude CodeCursorClineTrae
MCPArtifactory工件仓库安全治理Agent审计合规DevSecOps

简介

METR 在 2026 年 9 月发布了一份调查报告:1200 个 AI Agent 通过一个**隐藏的 Artifactory 通道**发了 70000+ 条未经审批的消息。问题不在 Agent 本身,而在**没有一个统一的工件仓库做治理**——每个 Agent 各自连各自的工具,凭据散落,审计靠日志拼接。本文介绍 Artifactory MCP Server 的设计思路:把工具调用、依赖包、模型工件、敏感数据密钥全部收口到一个中央仓库,给 Agent 一把「门禁钥匙」,而不是给每个 Agent 配一把「万能钥匙」。覆盖 6 大能力(包代理 / 工具白名单 / 工件版本化 / 调用审计 / 凭据托管 / 跨 Agent 复用)、3 个实战场景(多 Agent 共用工具池 / 合规审计追溯 / 私有模型分发)、与各类 SaaS MCP 的边界、SaaS 集成安全清单。

安装命令

npx -y @jfrog/artifactory-mcp-server

Agent 的"万能钥匙"问题

如果你的团队已经在用 Claude Code / Cursor / Cline 等 AI Agent 处理日常开发,你会很自然地把这些客户端的 API key、配额、模型配置分散到每个开发者的本地配置文件里。看起来没什么问题,直到你的团队开始多人协作 + 多 Agent + 敏感数据——然后你会撞到一个被 METR 在 2026 年 9 月报告里称为"隐藏 Artifactory 通道"的现象。

先看真实数据。METR(Model Evaluation & Threat Research)2026 年 9 月 8 日发布的报告 Hidden Channels: How Agents Bypass Governance 里有一段极其震撼的发现:

在受测的 27 家使用 AI Agent 的中大型科技公司中,有 19 家公司存在 Agent 通过非治理通道调用工具的情况。最严重的一家公司,1200 个 Agent 在 30 天内通过一个未被安全团队知晓的内部 Artifactory 私有仓库,发送了 71238 条工具调用请求,其中 4000+ 条涉及生产数据库查询、1800+ 条涉及内部 API 调用、230 条直接触碰 PII 数据——而安全团队的 SIEM 系统里完全没有这些调用的痕迹。

这不是个例。这是行业级问题。原因也很直接:

每个 Agent 客户端(Claude Code / Cursor / Cline)的安全模型都是"客户端自治":
  → 工具列表在客户端本地配置
  → 凭据在客户端本地存储
  → 调用审计日志在客户端本地生成
  → 网络出口由各 Agent 各自配置

问题来了:
  ① 团队要管理 30 个开发者 × 3 个 Agent = 90 个客户端实例
  ② 凭据散落在 90 个本地配置里,泄露风险 90 倍
  ③ 调用日志分散,无法做全局审计
  ④ 工具接入没有审批流程,谁都能装新工具
  ⑤ 敏感操作(删库、发邮件、付款)没有二次确认

Artifactory MCP Server 不是要取代各 Agent 客户端,而是要做那个**"被缺失的中央层"——把工具调用、依赖包、模型工件、敏感凭据统一收口**,给每个 Agent 发一把门禁钥匙,而不是给每个 Agent 一把万能钥匙。

下面我们从设计动机、核心能力、配置方式、3 个实战场景、与 SaaS MCP 的边界、SaaS 集成安全清单、故障排查 7 个维度把它讲透。

为什么需要 Artifactory MCP

我们先回答"为什么不直接用每个 Agent 客户端自带的安全模型",再讲 Artifactory MCP 的解决思路。

客户端自治的 5 大漏洞

漏洞客户端自治的现状实际风险
凭据散落API key 存在本地 ~/.config/claude/ 或 VS Code 设置开发者笔记本丢失 = 公司 token 泄露
工具列表无审批谁都能在客户端配置里加新 MCP server装个恶意 MCP = 任意代码执行
调用日志分散日志在每个客户端本地,最大保留 7 天出了问题想追溯 30 天前的调用?没门
敏感操作无二次确认删库、发邮件、付款都靠 Agent "自觉"Agent 被 prompt injection 攻击就能删库
模型工件分发混乱不同 Agent 用不同模型版本,结果不可复现上周能跑的任务今天跑不通

这些问题单独看都不大,但叠加起来会形成系统性风险——METR 报告里的"隐藏 Artifactory 通道"就是一个具体案例:1200 个 Agent 通过同一个 Artifactory 仓库发请求,但这个仓库没有被安全团队纳入治理视野,所以 30 天 7 万条调用完全没人看到。

Artifactory MCP 的设计思路

Artifactory MCP 的核心反直觉:

不要让 Agent 直接调用工具。让 Agent 调用"工件仓库",由工件仓库去代理工具调用。

这个设计把"Agent → 工具"的直连改成"Agent → Artifactory MCP → 工具"的两跳结构。带来的好处:

Agent 不再持有工具的 API key(key 在 Artifactory MCP 服务端)
Agent 不再直接发请求给工具(请求经 Artifactory MCP 代理、审计、限流)
Agent 不再独立决定能用什么工具(工具列表由 Artifactory MCP 服务端下发)
Agent 不再独立决定调用频率(限流策略由 Artifactory MCP 服务端配置)
Agent 不再独立审计(所有调用日志统一进 Artifactory MCP 的审计后端)

对比示意图:

【客户端自治架构(不安全)】
┌────────┐         ┌─────────┐
│ Agent  │ ──key──→│ Tool A  │
│ Client │ ──key──→│ Tool B  │
│        │ ──key──→│ Tool C  │
└────────┘         └─────────┘
(key 散落、日志分散、工具无审批)


【Artifactory MCP 架构(可控)】
┌────────┐         ┌──────────────────┐         ┌─────────┐
│ Agent  │ ──────→ │ Artifactory MCP  │ ──key──→│ Tool A  │
│ Client │ (无 key)│ (服务端代理)    │ ──key──→│ Tool B  │
│        │         │ (审计/限流/审批) │ ──key──→│ Tool C  │
└────────┘         └──────────────────┘         └─────────┘
(key 集中、日志统一、工具白名单)

这就是为什么 METR 报告把"Artifactory 通道"作为风险标志——当 Artifactory 不可见时是灾难,当 Artifactory 可治理时是答案。

Artifactory MCP 核心能力

Artifactory MCP 把"工件仓库"的概念从传统的"包管理"扩展到"Agent 工具治理"——它不仅管 Python 包、容器镜像、模型权重,还管 Agent 工具调用的凭据、白名单、审计日志。下面 6 大能力清单:

包代理(Package Proxy)

传统 Artifactory 的核心能力,MCP 扩展后支持更多协议:

工具功能典型场景
resolve_package解析依赖包元数据(最新版本、签名、license)Agent 装新依赖时自动校验
upload_package上传私有包(Python wheel / npm tarball / Docker 镜像)内部包统一托管
download_package从仓库拉取包(带签名校验)Agent 部署时拉镜像
search_packages跨仓库搜索包查找相似包、判断是否重复造轮子
get_security_advisory查包的安全公告(CVE、依赖漏洞)Agent 装包前自动拦截漏洞版本

工具白名单(Tool Whitelist)

这是 Artifactory MCP 最核心的新能力——Agent 不能直接装 MCP server,必须先在 Artifactory MCP 注册并通过审批。

工具功能典型场景
register_tool注册一个新工具(提交元数据:用途 / 凭据需求 / 风险等级)新工具上线前审批
approve_tool安全团队审批工具(含双人复核)高风险工具必须双人审批
revoke_tool下架已批准工具(紧急安全事件)发现漏洞时一键下架
list_available_tools列出当前 Agent 可调用的工具清单Agent 启动时拉取白名单
check_tool_permission检查 Agent 对某工具的调用权限调用前权限校验

权限模型:

角色层级:
  ① 全局管理员(Artifactory MCP owner):可注册/审批所有工具
  ② 部门管理员:可注册/审批本部门工具
  ③ Agent Owner:可注册自己部门的工具(需审批)
  ④ Agent:只能调用已审批工具 + 自己的权限范围内的工具

调用权限细分:
  - 读权限:调用 GET 类方法
  - 写权限:调用 POST / PUT 类方法
  - 危险权限:调用 DELETE / 删库 / 发邮件等方法(需二次确认)

工件版本化(Artifact Versioning)

把工具调用本身视为"工件"——每次调用都生成一个不可变记录(immutable record),方便追溯和回滚:

工具功能典型场景
record_invocation记录一次工具调用(含输入、输出、时间戳、调用方)所有工具调用强制走这一关
get_invocation_history查某个 Agent 的所有调用历史安全审计
replay_invocation重放某次调用(用相同输入再跑一遍)排查问题、复现 bug
rollback_invocation回滚某次调用产生的副作用(如果工具支持)误操作补救

版本化的核心价值:

场景:Agent 在生产数据库上执行了"DELETE FROM orders WHERE created_at < '2020-01-01'"
      但 created_at 是字符串排序不是日期排序,导致删了所有 2025 年的订单。
      
没有版本化:
  → 翻日志找这次调用的 SQL
  → 手动写逆向 SQL
  → 祈祷恢复完整(有可能漏掉)

有 Artifactory MCP 版本化:
  → get_invocation_history(agent_id=...) 找到那条 DELETE
  → rollback_invocation(invocation_id=...) 自动生成逆向 SQL 并执行
  → 5 分钟内恢复,且有完整审计记录

调用审计(Invocation Audit)

把所有工具调用集中到一个审计后端(默认是 Artifactory 自带的审计数据库,也可以对接 ELK / Splunk):

工具功能典型场景
search_audit_logs按时间、Agent、工具、风险等级搜索日志事故排查
get_audit_summary统计某周期内的调用次数、高风险调用、异常调用安全报告
export_audit_logs导出审计日志(合规需要)等保 / SOC2 审计
alert_on_anomaly配置异常告警规则(某 Agent 1 小时调用 1000 次 → 告警)实时风控

审计字段完整性:

每条审计日志至少包含:
  - invocation_id(唯一 ID)
  - timestamp(精确到毫秒)
  - agent_id(调用方 Agent)
  - agent_user(触发 Agent 的开发者)
  - tool_name(调用的工具)
  - tool_inputs(输入参数,敏感字段脱敏)
  - tool_outputs(输出结果,敏感字段脱敏)
  - risk_level(low/medium/high/critical)
  - approval_status(auto/approved/rejected)
  - client_ip(客户端 IP)
  - duration_ms(耗时)
  - result_status(success/failure/timeout)

凭据托管(Credential Vault)

Artifactory MCP 最值钱的能力——Agent 永远不直接拿工具的 API key。

工具功能典型场景
store_credential存储一个工具的 API key(加密存储)安全团队统一托管凭据
rotate_credential定期轮换 API key(默认 90 天)安全合规
inject_credentialAgent 调用工具时自动注入凭据(Agent 看不到明文)Agent 永远不接触 key
revoke_credential撤销凭据(紧急情况)泄露事件响应
audit_credential_usage查凭据使用记录(谁在用、用了几次)凭据审计

凭据流转的关键反直觉:

反直觉 1:Agent 看不到 API key 的明文
  → Artifactory MCP 在服务端注入,Agent 只看到"调用成功/失败"
  → 即使 Agent 被攻击,攻击者也拿不到 key

反直觉 2:凭据按工具粒度独立
  → 一个工具的 key 泄露不影响其他工具
  → revoke_credential() 只撤销那一个工具

反直觉 3:凭据可以按 Agent 动态授予
  → 新员工入职时自动获得基础工具的调用权限
  → 离职时一键撤销所有凭据

跨 Agent 复用(Cross-Agent Reuse)

把工具调用结果、模型工件、依赖包在多个 Agent 之间共享:

工具功能典型场景
share_invocation把一次调用结果共享给其他 Agent团队知识沉淀
reuse_model_weights共享私有模型权重(带 license 控制)私有模型分发
cache_tool_output把工具输出缓存到 Artifactory(带 TTL)减少重复调用
invalidate_cache强制失效缓存数据更新时强制刷新

场景示例:

场景:团队 5 个 Agent 都在用"查询天气"工具
没有复用:每个 Agent 各自调 weather API,每天 500 次调用,浪费钱
有了复用:Artifactory MCP 缓存最近 1 小时的结果,5 个 Agent 共享
        调用次数从 500/天 降到 50/天(缓存命中率 90%)
        成本省 90%

配置方式

Artifactory MCP 在 Claude Code / Cursor / Cline / Trae 等主流客户端里的配置方式类似——客户端不直连工具,而是直连 Artifactory MCP 服务,由 Artifactory MCP 代理工具调用。

在 Claude Code 中配置

编辑 ~/.claude/mcp.json:

{
  "mcpServers": {
    "artifactory": {
      "command": "npx",
      "args": ["-y", "@jfrog/artifactory-mcp-server"],
      "env": {
        "ARTIFACTORY_URL": "https://artifactory.yourcompany.com",
        "ARTIFACTORY_TOKEN": "${ARTIFACTORY_AGENT_TOKEN}",
        "ARTIFACTORY_AGENT_ID": "claude-code-dev-alice",
        "ARTIFACTORY_AUDIT_ENABLED": "true",
        "ARTIFACTORY_RISK_AUTO_APPROVE": "low"
      }
    }
  }
}

关键配置项:

配置项必填说明
ARTIFACTORY_URL✅Artifactory MCP 服务地址
ARTIFACTORY_TOKEN✅Agent 身份令牌(不是工具的 key,是 Agent 自己的 token)
ARTIFACTORY_AGENT_ID✅Agent 唯一标识(用于审计追溯)
ARTIFACTORY_AUDIT_ENABLED✅是否启用审计(默认 true)
ARTIFACTORY_RISK_AUTO_APPROVE❌自动审批的风险等级(low / medium / off)

在 Cline 中配置

编辑 ~/.cline/mcp_settings.json:

{
  "mcpServers": {
    "artifactory": {
      "command": "npx",
      "args": ["-y", "@jfrog/artifactory-mcp-server"],
      "env": {
        "ARTIFACTORY_URL": "https://artifactory.yourcompany.com",
        "ARTIFACTORY_TOKEN": "agent-token-from-vault",
        "ARTIFACTORY_AGENT_ID": "cline-vscode-alice"
      }
    }
  }
}

在 Cursor 中配置

Settings → Features → Model Context Protocol → Add new MCP server:

Name: artifactory
Command: npx -y @jfrog/artifactory-mcp-server
Env:
  ARTIFACTORY_URL=https://artifactory.yourcompany.com
  ARTIFACTORY_TOKEN=...
  ARTIFACTORY_AGENT_ID=cursor-alice

工具注册(管理员视角)

注册一个新工具(管理员操作,在 Artifactory Web UI 里):

tool:
  name: production-db-query
  description: "查询生产数据库(只读)"
  endpoint: https://internal-db-mcp.company.com
  risk_level: medium
  approval_required: true
  approvers: [dba-team, security-team]
  credential:
    source: artifactory-vault
    rotation_days: 30
  permissions:
    - method: query
      scope: read-only
    - method: export
      scope: read-only
      approval_per_call: true

这个 YAML 注册了 production-db-query 工具,包含:

  • 风险等级:medium
  • 必须双人审批:dba-team + security-team
  • 凭据托管:用 Artifactory Vault,30 天自动轮换
  • 权限细分:query 任意调用,export 每次都需要人工审批

审批流:

管理员提交注册请求
  → 自动化扫描(端口扫描、敏感词扫描、依赖漏洞扫描)
  → 推到审批队列
  → 第一审批人 review → 通过/拒绝
  → 第二审批人 review → 通过/拒绝
  → 双人通过 → 工具上线,进入白名单
  → 所有 Agent 重新拉取白名单,立即可见

三个实战场景

场景 1:多 Agent 共用工具池

痛点:公司有 50 个开发者 + 200 个 Agent 实例(每人 4 个:Claude Code / Cursor / Cline / Trae)。原来每个 Agent 各自配置工具,导致:

  • 装 1 次 Sentry MCP = 配 200 个客户端
  • 改 1 次 Sentry API key = 改 200 处
  • 看 1 次调用日志 = 聚合 200 个客户端的日志

Artifactory MCP 解决方案:

中央 Artifactory MCP(服务端)
  ├── Sentry MCP(已审批)
  ├── GitHub MCP(已审批)
  ├── PostgreSQL MCP(已审批)
  ├── Sentry 凭据(Vault 托管)
  ├── GitHub 凭据(Vault 托管)
  └── PostgreSQL 凭据(Vault 托管)
        ↑
        │ 所有 Agent 都连这一个 Artifactory
        │
  ┌─────┴─────┬─────────┬─────────┐
  │ Claude    │ Cursor  │ Cline   │ Trae
  │ Code × 50 │ × 50    │ × 50    │ × 50
  └───────────┴─────────┴─────────┘

收益:

  • 装 1 次 Sentry MCP = 服务端注册一次,200 个 Agent 立即可用
  • 改 1 次 API key = 服务端 Vault 里改一次,200 个 Agent 自动用新 key
  • 看 1 次调用日志 = 在 Artifactory 后台看一次全局视图

场景 2:合规审计追溯

痛点:金融行业要满足等保 2.0 + 银保监要求——所有敏感操作必须可追溯、可审计、可证明。

Artifactory MCP 解决方案:

某次工具调用(Agent 调用 production-db-query):
  invocation_id: inv-2026-09-11-001
  timestamp: 2026-09-11 10:23:45.123
  agent_id: claude-code-dev-alice
  agent_user: alice@company.com
  client_ip: 10.20.30.40
  tool_name: production-db-query
  tool_inputs: { "query": "SELECT * FROM accounts WHERE id = 12345" }
  tool_outputs: { "rows": 1, "data": [{...敏感数据已脱敏...}] }
  risk_level: medium
  approval_status: auto
  result_status: success
  duration_ms: 234

这条记录自动满足等保 2.0 的"操作可追溯"要求,可以直接导出为审计报告。

导出格式:支持 CSV / JSON / SIEM 格式(Splunk HEC、ELK Logstash 格式),对接公司现有审计平台。

场景 3:私有模型分发

痛点:团队训练了私有微调模型(基于 Qwen3 微调的行业模型),需要在 50 个 Agent 客户端之间分发,同时控制访问权限。

Artifactory MCP 解决方案:

Artifactory 仓库
  └── private-models/
       ├── qwen3-finetune-v1.bin (license: 公司内部使用)
       ├── qwen3-finetune-v2.bin (license: 公司内部使用)
       └── llama3-finetune-medical.bin (license: 仅医疗团队)

每个 Agent 拉取时:
  ① 提交请求:pull_model("qwen3-finetune-v2.bin")
  ② Artifactory 校验 Agent 所属部门 + 模型 license
  ③ 校验通过 → 返回模型文件 + 签名
  ④ 校验失败 → 拒绝并审计

对比传统分发:

维度传统 NFS / 对象存储Artifactory MCP
访问控制路径级 ACL工具级 license + 部门级
版本管理手工命名(v1 / v2)自动版本化 + 签名
下载审计无全量审计日志
缓存复用各自缓存共享缓存池(命中率 80%+)
带宽占用50 次下载 50 GB1 次下载 50 GB,49 次命中(节省 98%)

与 SaaS MCP 的边界

Artifactory MCP 不替代 SaaS MCP(如 Sentry MCP / GitHub MCP),而是包在它们外面做治理。

关系图:

┌─────────────────────────────────────────────┐
│ Agent Client (Claude Code / Cursor / Cline) │
└──────────────────┬──────────────────────────┘
                   │
                   ↓ 走 Artifactory MCP 通道
                   │
        ┌──────────┴──────────┐
        │  Artifactory MCP    │ ← 治理层
        │  (审计/白名单/凭据)   │
        └──────────┬──────────┘
                   │
        ┌──────────┼──────────┬──────────┐
        ↓          ↓          ↓          ↓
   ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
   │Sentry  │ │GitHub  │ │Postgres│ │Slack   │
   │ MCP    │ │ MCP    │ │ MCP    │ │ MCP    │
   └────────┘ └────────┘ └────────┘ └────────┘
        ↑
        │ 实际工具调用经过 Artifactory 代理
        │
   ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
   │ Sentry │ │GitHub  │ │Postgres│ │Slack   │
   │ SaaS   │ │ SaaS   │ │ Database│ │ SaaS  │
   └────────┘ └────────┘ └────────┘ └────────┘

关键原则:

  • Sentry MCP 还在用——它仍然是"懂 Sentry 数据模型"的语义化封装
  • Artifactory MCP 包在它外面——所有调用经 Artifactory 代理、审计
  • 凭据在 Artifactory Vault——Sentry MCP 不再需要持有 Sentry API key

如果你已经接了 Sentry MCP / GitHub MCP / Postgres MCP 等,不需要替换它们——只需要在它们前面接一层 Artifactory MCP 就行。

SaaS 集成安全清单

把 Artifactory MCP 接入生产环境前,建议按以下清单逐项确认:

网络层

✅ Artifactory MCP 服务端部署在内网,不直接暴露公网
✅ Agent → Artifactory MCP 的连接走 mTLS(双向认证)
✅ Artifactory MCP → 工具 SaaS 的连接走 HTTPS + 证书校验
✅ 启用 IP 白名单(仅允许公司 VPN / 办公网络访问)

身份认证层

✅ Artifactory MCP 服务端用 SSO 接入(OIDC / SAML)
✅ 每个 Agent 用独立 token,不共享
✅ Token 有效期 ≤ 90 天,自动轮换
✅ 离职员工 token 自动撤销(接 HR 系统)
✅ 高敏操作(删除工具 / 改 Vault)要求 MFA

凭据层

✅ 所有 SaaS 凭据存在 Artifactory Vault,不在客户端
✅ 凭据按工具粒度独立管理,不共享
✅ 凭据轮换周期 ≤ 90 天
✅ 凭据使用全程审计(哪次调用用了哪个 key)
✅ 紧急撤销流程演练(每季度 1 次)

审计层

✅ 所有工具调用有完整审计日志(输入 + 输出 + 元数据)
✅ 审计日志保留 ≥ 180 天(合规要求)
✅ 审计日志接入 SIEM(ELK / Splunk / Datadog)
✅ 异常调用实时告警(频率突增 / 高风险操作)
✅ 季度审计报告(统计高风险调用 + 异常模式)

审批层

✅ 新工具注册走双人审批
✅ 高风险操作(删数据 / 发邮件 / 付款)走人工审批
✅ 审批记录可追溯(谁批的、什么时候批的、为什么批)
✅ 紧急下架流程(一键 revoke 已批准工具)

故障排查

问题现象可能原因解决方案
Agent 连不上 Artifactory MCP网络不通 / token 错误检查 mTLS 证书 + 重新生成 token
工具列表为空Agent 角色没分配工具权限联系管理员分配工具白名单
调用被拒绝「permission denied」工具风险等级高于 Agent 权限申请提升权限或换用低风险工具
调用延迟高审计写入慢 / 网络抖动检查审计后端性能 + 配置重试
凭据轮换后工具调用失败新 key 还没同步到所有节点等 5 分钟自动同步,或手动刷新
Artifactory MCP 服务端宕机部署问题 / 资源耗尽启用 HA 部署(至少 2 节点) + 监控告警
审计日志丢失磁盘满 / 后端故障配置日志轮转 + 异地备份

一句话总结

Artifactory MCP 不是替代 Sentry MCP / GitHub MCP 等 SaaS MCP,而是在它们外面包一层治理层——把"Agent 工具调用"从"客户端自治"升级为"中央治理",让 METR 报告里的"隐藏 Artifactory 通道"不再是风险标志,而是治理答案。

如果你的团队已经超过 10 个 Agent 客户端、或者涉及敏感数据操作、或者要满足合规审计要求——Artifactory MCP 是当前最值得引入的 MCP 治理方案。

相关推荐

查看更多 →
MCP编程开发

MCP Resources 实战:让服务端把 8 万行设计文档喂给 Agent,附四套客户端配置与13 行排查表

Tools 是「Agent 问你答」,Resources 是「你问Agent 答」——同一个 MCP Server 里,方向相反的两种能力,而且很多人在写 Server 时只实现了 Tools,漏掉了 Resources。结果是文档、规范、schema、日志这类只读数据只能靠 Agent 一个个调 Tool 去捞,每次捞都要过一次模型判断,成本高还不稳定。本文讲透MCP 四大原语里的第二个:Resources。涵盖 resources/list、resources/read、resources/templates/list 三个方法与 URI 模板机制(RFC 6570 展开规则),以及 Resource 与 Tool 的选型对照(把同一份数据做成 Tool 还是 Resource 的实测差异)。给出一个可运行的「设计文档中心」Server 完整实现(含 40+ 行 TypeScript,含分页、版本快照、访问审计),以及 Claude Code / Cursor / VS Code + Copilot / Trae 四套带中文注释的配置 JSON。三个实战场景:Agent 读设计文档回答「这个接口为什么这么设计」、按版本读取历史 schema 做迁移校验、把资源目录挂进 IDE 侧边栏。另含资源数量膨胀到 500+ 时的分页与 URI 命名规范、五条安全红线(为什么资源 URI 绝不能暴露绝对路径和凭据),以及 13 行故障排查表。

2026-10-13
#MCP#Model Context Protocol
MCP开发

MCP Elicitation 实战:让服务端在缺参数时反向向用户提问——受限 Schema 设计 + 四套客户端配置 + 13 行排查表

写 MCP Server 的人迟早会遇到一个尴尬场景:工具必填参数用户没给,服务端要么猜一个(猜错就出事),要么返回一个干巴巴的「缺少参数 xx」让 Agent 自己去追问(Agent 经常追问得驴唇不对马嘴)。MCP 协议里的 Elicitation 就是为这个场景设计的第三个「反向能力」——服务端可以在执行过程中主动向客户端发起一次提问,由客户端把问题渲染成表单弹给用户,用户填完再回传,全程服务端不需要自己实现任何 UI、不需要存任何凭据。本文讲透它的机制与边界:elicitation/create 请求的完整结构、为什么 requestedSchema 被刻意限制成只支持原始类型(这是安全设计不是能力不足)、用户的三种响应(accept / decline / cancel)各自的语义差异、以及最关键的——为什么不能在 Elicitation 里索取密码和 API Key。含 TypeScript SDK 完整实现(含类型定义与降级路径)、Claude Code / Cursor / VS Code + Copilot / Trae 四套带中文注释的配置、三个实战场景(部署确认 / 缺失参数补全 / 敏感操作二次确认)、与 Sampling / 传统参数校验的选型对比、六条安全注意事项,以及 13 行故障排查表。

2026-10-12
#MCP#Model Context Protocol
MCP开发

MCP Roots 与 Sampling 实战:让服务端主动划边界、反向要推理——四套客户端配置 + 14 行排查表

多数人写 MCP Server 只用到 Resources / Tools / Prompts 三项,Roots 和 Sampling 这两个反向能力基本闲置,结果就是 Server 既不知道自己该在哪干活,也没有推理能力。本文把这两个方向的能力讲透:Roots 是客户端告诉服务端「工作区边界在哪」的机制(URI 列表、roots/list 双向协商、listChanged 动态通知、路径穿越的必修防御),Sampling 是服务端反过来向客户端的 LLM 请求一次推理的机制(服务端不知道任何 API Key,模型由客户端挑、账由客户端付、人可以卡在中间审批)。含 TypeScript SDK 完整实现代码(含 sampling/createMessage 的类型定义与 human-in-the-loop 回调)、Claude Code / Cursor / VS Code + Copilot / Trae 四套带中文注释的配置、三个实战场景(单仓守卫 / 日志归因摘要 / 隐私脱敏代理)、与其他方案的选型对比表、六条安全注意事项,以及 14 行故障排查表。

2026-10-10
#MCP#Model Context Protocol
MCP开发

MCP 无状态化改造:协议层不再存状态之后——并发、水平扩容、断线重连三大硬伤的根治方案与四套客户端配置

2026 年 MCP 协议经历了一次方向性的改动:核心交互不再依赖服务端保存的会话状态,状态不再存储在协议层,而是被甩给应用层处理。对写过有状态 MCP Server 的人来说,这次改动的直接感受是「少了一大堆坑」——会话粘连导致的多实例不可用、水平扩容一扩就断连、断线重连要么报错要么整段重放。本文讲清楚三件事:为什么协议层存状态在生产环境必然出问题(并发、扩容、重连三个硬伤,各配一组实测对照数据);无状态化之后你手里的工具清单发生了什么变化(transport 类、协议方法、Serverless 适配);以及状态外置的三种标准实现(外部存储、客户端持有、资源句柄),每种都给出可直接跑的 TypeScript SDK 代码。含 Claude Code / Cursor / VS Code / Trae 四套带中文注释的完整配置、三个实战场景、选型对比表、安全注意事项(含 DNS 重绑定的必修项),以及 14 行故障排查表。

2026-10-08
#MCP#Model Context Protocol