post cover

技术热点落地:MCP 1.0 + 官方 Registry —— 一周把企业内部工具与数据源全量接进 Claude / Cursor / Codex / Cline 的实战手册(2026-06-11)


适用场景与目标

背景速览: 过去 24 小时,MCP(Model Context Protocol) 1.0 正式落地,配套发布了:

  1. 官方 Registry mcp-registry.dev —— 集中托管社区与官方 MCP Server 的元数据(Server 名称、版本、能力声明、传输方式、OAuth scope),所有兼容客户端(Claude Desktop、Cursor、Codex CLI、Cline、Hermes Agent、Cherry Studio、Continue、Zed 等)可一键安装
  2. OAuth 2.1 鉴权基线 —— 用 Authorization Code + PKCE 标准化”代表用户访问第三方服务”,HTTP MCP 传输的鉴权不再各自造轮子
  3. Server-Sent Events(SSE)作为远程传输一档 —— http://host/mcp + text/event-stream 让 Server 端可以推送进度、异步任务状态,告别轮询
  4. 可发现性文件 /.well-known/mcp.json —— 一个域名(公司内网)放一个文件,Agent 自动列出”这家公司能用什么”
  5. 与 Skills 协议联动 —— Server 暴露的 tools/resources/prompts 可在 Skill 文档里直接引用,Agent 自动加载依赖

这不是又一份”协议文档”。它意味着 “N×M 适配”(N 个 Agent × M 个内部工具)正式变成 “N+M”(N 个 Agent 接入 MCP 客户端,1 次开发 M 个 MCP Server 给所有人用)。对每个正在做 AI 编程 / 内部 Agent 落地的团队,这是 2026 年最值得立即动手的一周。

适用场景:

  • 公司内部有 5~50 个 SaaS / 自研系统(Jira / Confluence / GitLab / ClickHouse / 内部 Wiki / 监控 / 工单 / 客户系统),当前 Agent 接一个写一个适配层
  • 团队在用 Claude Code / Cursor / Codex CLI / Cline / Hermes Agent / 自研 Agent 中的多个,想统一工具接入
  • 你在维护一个有 50+ API 的微服务平台,希望 AI Agent 能”用得明白”它们
  • 安全 / 合规团队需要”Agent 到底能调什么、调了几次、传了什么”的完整审计

核心目标:

一周时间 把”公司里的 Agent 工具链”从”各客户端分别写适配器”升级为”MCP 中心化”:

  1. 今天:选 3 个最高频的内部工具(如 GitLab、PostgreSQL、Confluence),各起一个 MCP Server,挂到本地 Claude Desktop / Cursor 上跑通
  2. D+1~D+2:完成 OAuth 2.1 鉴权,部署到一个能 SSE 推送的内网网关
  3. D+3:在 mcp-registry.dev 提交公司 Registry 镜像(私有/内网),让团队所有人”一键安装”公司 Server
  4. D+4:接入可观测性(OpenTelemetry traces、Token 计量、限流)
  5. D+5:编写 3 份 SKILL.md,让 Agent 知道”何时用哪个 Server、组合使用顺序”
  6. D+6~D+7:把剩下 10~20 个内部工具批量接入,跑通端到端业务流(如”找昨天提的 Bug → 看相关代码 → 写修复 PR → 通知 reviewer”)

最小可行方案(MVP)步骤

假设你的最小环境是:内网 Linux 节点(4C8G 即可),Python 3.11+ / Node.js 20+,有 GitLab / PostgreSQL / Confluence 各一个测试实例,团队 5~20 人每天用 Claude Desktop 或 Cursor。

步骤 0:先在本地跑通”参考实现”,别一上来就造轮子

# 1) 安装 MCP Python SDK(6/10 发布 1.0.0,支持 OAuth 2.1 + SSE)
pip install "mcp[cli]>=1.0.0"

# 2) 克隆官方示例
git clone https://github.com/modelcontextprotocol/servers.git
cd servers && pip install -e ".[everything]"

# 3) 在 Claude Desktop 配置里加上官方 SQLite Server(最简范例)
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db-path", "/tmp/test.db"]
    }
  }
}

打开 Claude Desktop 看到 🔨 工具图标下出现 “sqlite” = 成功。这一步的目的是验证 SDK、客户端、传输链路都正常,不要直接开始改业务。

步骤 1:挑 3 个最高频工具,按”复杂度递升”顺序

工具MCP 选型预计工时价值验证点
GitLab官方 mcp-server-gitlab(fork 自 community)0.5 天Agent 能 list MR、读 diff、创建 issue
PostgreSQL官方 mcp-server-postgres(只读安全模式)0.5 天Agent 用 SQL 查数据、能看 EXPLAIN
Confluence自研(官方没有)1.5 天Agent 能按空间/标题搜页面、读全文、创建草稿

关键决策点先用现成 Server,还是自研?

  • 官方 Registry 里有的(搜 mcp-registry.dev)→ 直接 fork,别从零写
  • 内部 API、无 OAuth、有特殊分页/限流 → 自研,参考官方 mcp-server-template

步骤 2:自研一个 MCP Server 的最小骨架(Python)

# confluence_mcp/server.py —— Confluence MCP Server 最小骨架
from mcp.server.fastmcp import FastMCP
from mcp.server.auth.settings import AuthSettings
import httpx, os

mcp = FastMCP(
    name="confluence",
    instructions="Confluence Cloud 访问。优先用 cql 搜索;写入仅支持创建草稿。",
    auth=AuthSettings(
        issuer_url=os.environ["OAUTH_ISSUER"],
        required_scopes=["confluence:read", "confluence:write:draft"],
    ),
)

@mcp.tool()
async def search_pages(cql: str, limit: int = 20) -> list[dict]:
    """按 CQL 搜索 Confluence 页面。

    cql 示例: 'space=DEV and title~"部署"' 或 'type=page and lastModified>2026-06-01'
    返回: [{'id', 'title', 'url', 'lastModified', 'excerpt'}]
    """
    async with httpx.AsyncClient() as c:
        r = await c.get(
            "https://your-domain.atlassian.net/wiki/rest/api/content/search",
            params={"cql": cql, "limit": limit},
            headers={"Authorization": f"Bearer {os.environ['CONFLUENCE_TOKEN']}"},
        )
        r.raise_for_status()
        return [
            {"id": p["id"], "title": p["title"], "url": f"...{p['_links']['webui']}",
             "lastModified": p["version"]["when"], "excerpt": p.get("excerpt", "")}
            for p in r.json()["results"]
        ]

@mcp.tool()
async def create_draft(space_key: str, title: str, body_markdown: str) -> dict:
    """在指定空间创建页面草稿(不会自动发布)。"""
    # ... 转换 markdown → storage format,调 POST /content
    # 返回 {'id', 'url', 'status': 'draft'}

if __name__ == "__main__":
    mcp.run(transport="sse", host="0.0.0.0", port=8765)

启动:

OAUTH_ISSUER=https://auth.your-company.internal \
CONFLUENCE_TOKEN=... \
python -m confluence_mcp.server
# 监听 http://0.0.0.0:8765/sse (SSE 端点)

步骤 3:挂到内网网关 + 私有 Registry

# /etc/nginx/conf.d/mcp-gateway.conf
server {
  listen 443 ssl;
  server_name mcp.your-company.internal;

  # 可发现性文件:让 Agent 自动列出"这家公司能用什么"
  location = /.well-known/mcp.json {
    root /var/www/mcp;
    add_header Cache-Control "public, max-age=300";
  }

  # 按 Server 名子路径转发
  location /gitlab/ { proxy_pass http://mcp-gitlab:8765/sse; proxy_buffering off; }
  location /pg/     { proxy_pass http://mcp-pg:8765/sse;     proxy_buffering off; }
  location /confluence/ { proxy_pass http://mcp-confluence:8765/sse; proxy_buffering off; }

  # SSE 必须的几个 header
  proxy_set_header Connection '';
  proxy_http_version 1.1;
  proxy_read_timeout 86400s;
}

可发现性文件 /var/www/mcp/.well-known/mcp.json

{
  "version": "1.0",
  "servers": [
    {"name": "gitlab",      "url": "https://mcp.your-company.internal/gitlab/sse",      "auth": "oauth2.1", "scopes": ["read_user", "api"]},
    {"name": "postgres",    "url": "https://mcp.your-company.internal/pg/sse",          "auth": "oauth2.1", "scopes": ["db:read"]},
    {"name": "confluence",  "url": "https://mcp.your-company.internal/confluence/sse",  "auth": "oauth2.1", "scopes": ["confluence:read", "confluence:write:draft"]}
  ]
}

团队成员配置 Claude Desktop / Cursor:

{
  "mcpServers": {
    "company": {
      "url": "https://mcp.your-company.internal/.well-known/mcp.json",
      "auth": "oauth2.1"
    }
  }
}

→ 客户端自动拉取列表、引导用户完成 OAuth 授权、连接所有 Server。这是 “N+M” 的真正落地形态。

步骤 4:在私有 Registry 镜像上发布

# 注册公司命名空间
mcp-registry login --registry https://mcp.your-company.internal
mcp-registry publish ./confluence-mcp \
  --name @your-company/confluence \
  --version 1.0.0 \
  --transports sse \
  --entrypoint https://mcp.your-company.internal/confluence/sse \
  --scopes "confluence:read,confluence:write:draft"

团队成员后续安装只需:

mcp-registry install @your-company/confluence

关键实现细节

1. 工具(tool)描述的写法直接决定 Agent 会不会用、能不能用对

反面教材(实际工程里见过最常见的错误):

@mcp.tool()
async def query(sql: str) -> list:  # ❌ 名字太通用
    """查询数据库。"""               # ❌ 描述无信息
    ...

Agent 看到这种 tool 会:① 不知道在什么场景下用它 ② 不知道能查哪些表 ③ 不知道有什么限制。

正例

@mcp.tool(
    name="pg_query",
    description=(
        "在只读模式下执行 SELECT 查询 PostgreSQL 业务库(schema: biz_oltp, biz_dw)。"
        "禁止 DDL/DML(INSERT/UPDATE/DELETE/DROP/TRUNCATE/CREATE/ALTER/GRANT/REVOKE)。"
        "单条 SQL 最多扫描 10 万行(自动 LIMIT 截断),超时 30s。"
        "返回最多 200 行;超出会被截断并提示完整查询走 `pg_export`。"
        "输入必须是已参数化的字面量,禁止字符串拼接(防止注入)。"
    ),
)
async def pg_query(sql: str, params: list | None = None) -> dict:
    """..."""

关键原则:tool 的 description 是给 LLM 看的”人话文档”,要写得像 PR Review 时给同事的注释:能做什么、不能做什么、有什么限制、典型输入长啥样、错误时怎么 fallback。

2. 用 resources 暴露只读上下文,避免每次都调 tool

@mcp.resource("schema://tables")
async def list_tables() -> str:
    """业务库所有表的 schema 摘要(自动按用户权限过滤)。"""
    # 返回 markdown 表格:表名 | 用途 | 主键 | 常见过滤字段
    ...

Agent 第一次进新会话时自动拉一次这个 resource,就知道有哪些表、能 join 什么。tools 是动作,resources 是只读上下文——别把所有东西都做成 tool。

3. 异步任务用 SSE 推进度,而不是让 Agent 反复 poll

@mcp.tool()
async def start_etl_job(dataset: str) -> str:
    """启动 ETL 任务,返回 job_id。"""
    job_id = await submit_job(dataset)
    # 注册一个 SSE 事件流,任务完成时推 'job_done' 事件
    register_progress_stream(job_id, f"/jobs/{job_id}/events")
    return job_id

@mcp.resource("jobs://{job_id}/status")
async def job_status(job_id: str) -> str:
    return json.dumps(await get_job_status(job_id))

客户端订阅 jobs://{job_id}/events 就能看到 “10% → 30% → 100% → summary”,不用 Agent 反复调 tool。对长任务(>30s)必须走 SSE,否则 Agent 会浪费 100+ 个 token 反复询问”好了吗”。

4. OAuth 2.1 PKCE 的最小正确实现

# mcp_oauth.py —— 给 MCP Server 加 Authorization Code + PKCE
from mcp.server.auth import OAuthServerProvider
import secrets, hashlib, base64

class CompanyOAuthProvider(OAuthServerProvider):
    async def authorize(self, client_id, scope, code_challenge, code_challenge_method, redirect_uri):
        # 1) 校验 client_id、redirect_uri 白名单
        # 2) 把 code_challenge + state 存到 session,生成 auth_code
        # 3) 返回给用户的浏览器:redirect 到企业 SSO
        ...
    async def exchange(self, code, code_verifier, redirect_uri):
        # 校验 PKCE:base64url(sha256(code_verifier)) == code_challenge
        verifier_hash = base64url_encode(hashlib.sha256(code_verifier.encode()).digest())
        assert verifier_hash == stored_challenge
        # 发 access_token(短期)+ refresh_token(长期)
        ...

MCP 1.0 起所有远程传输默认走 OAuth 2.1不要再用 API Key 写死在配置里——一旦泄漏无法撤销,OAuth 至少能 scope 隔离 + 一键 revoke。

5. 可观测性:每次 tool 调用都打 OpenTelemetry span

from opentelemetry import trace
tracer = trace.get_tracer("mcp.confluence")

@mcp.tool()
async def search_pages(cql: str, limit: int = 20) -> list[dict]:
    with tracer.start_as_current_span("confluence.search_pages") as span:
        span.set_attribute("mcp.tool.name", "search_pages")
        span.set_attribute("mcp.user.id", current_user_id())
        span.set_attribute("confluence.cql.length", len(cql))
        span.set_attribute("confluence.limit", limit)
        try:
            r = await call_confluence(cql, limit)
            span.set_attribute("confluence.result.count", len(r))
            return r
        except httpx.HTTPStatusError as e:
            span.record_exception(e)
            span.set_attribute("confluence.http.status", e.response.status_code)
            raise

导出到 Jaeger / Tempo / Datadog 之后能看到:“Agent 在哪个 tool 上花了多久、调用了几次、失败率多少、单用户 Token 消耗分布”。这一步是 AI 成本控制的基础设施——没有它你不知道哪个 Server 在烧钱。


常见坑与规避清单

坑 1:M × N 适配症——重复造轮子

症状:每个 Agent(Claude Code / Cursor / 自研)都写一套 Jira / GitLab 适配器,三套实现三个 bug。

规避

  • 一律走 MCP Server;Agent 端只需要 MCP 客户端一种实现
  • 已有 OpenAPI / GraphQL:自动生成 MCP Server(openapi-mcp-generator / graphql-mcp),不要手写
  • 内部 SDK:包一层 MCP,不要”为了 MCP 重写业务”

坑 2:把数据库全权限暴露给 Agent

症状:MCP Server 拿了数据库的 DDL/DML 权限,Agent 一句话 DROP TABLE 全没了。

规避

  • 默认只读连接,新账号最小权限(GRANT SELECT ON biz_oltp.* TO 'mcp_agent'@'%'
  • tool 描述里显式列出禁用语句(DDL/DML/GRANT/REVOKE/TRUNCATE/CREATE INDEX)
  • 在 driver 层加 SQL 解析器拦截:检测到 ; 之后还有语句、检测到 -- 注释注入、检测到字符串拼接式 IN (...),直接拒
  • 写操作单独建 pg_write Server,走审批流(tool 返回 requires_approval: true,Agent 把”申请”提交给人审)

坑 3:工具太多 → Token 爆炸

症状:挂了 30 个 Server,每个 20 个 tool,系统提示词直接 30k+ tokens,单次调用贵 5 倍,模型还容易选错。

规避

  • MCP 1.0 的”按需加载”:Server 可声明 lazy: true,Agent 只在相关 Skill 触发时才加载
  • resources 暴露 Server 索引(名字 + 一句话描述),让模型先 list_servers() 再决定调哪个
  • 合并相似 tool:pg_query / pg_export / pg_schema 不要拆 3 个,做成 pg(action=...)
  • 单次会话活跃 tool 数控制在 15 以内,超出的引导用户装 Skill 按需启用

坑 4:把鉴权做在 client 端(“Agent 帮我拿着 token 调”)

症状:每个 Agent 客户端自己存 API Key,Key 满天飞,撤不掉。

规避

  • 鉴权在 MCP Server 端 + 网关,不在 Agent 端
  • 用户首次配 Server 时走 OAuth 授权,token 加密存 OS keychain(macOS Keychain / Linux Secret Service / Windows DPAPI)
  • Agent 只持有”我代谁调”的会话凭证(短时),拿不到长期 token

坑 5:SSE 在反代 / WAF 后被掐断

症状:Nginx / Cloudflare / 公司 WAF 把 SSE 长连接当 idle 关掉,30s 后流断了。

规避

  • Nginx:proxy_buffering off; proxy_read_timeout 86400s; proxy_set_header Connection '';
  • Cloudflare:把路径加到 “WebSockets” 放行(SSE 走同一条通道)
  • K8s Ingress:加注解 nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" proxy-buffering: "off"
  • 自检:curl -N https://host/sse 看是不是真的持续收到事件

坑 6:tool 返回巨长 JSON 把上下文撑爆

症状:调 search_pages 返回 100 篇全文摘要,单次 20k tokens 灌进上下文,下一轮 LLM 直接”忘了”前面指令。

规避

  • 默认分页limit 默认 20,上限 100)
  • 返回摘要 + 链接,让 Agent 按需 fetch_page(id) 再拉全文
  • 大结果走 resources://{id} 暴露到对象存储,tool 只返回 resource_uri
  • LLM 端监控:如果 tool 返回 > 5k tokens,自动改写为”前 3 条 + 提示还有 N 条”

坑 7:限流 / 重试完全不做

症状:Agent 在循环里调 200 次 Confluence 搜索,触发 API 限流,所有请求 429,业务挂掉。

规避

  • MCP Server 端做 token bucket:每个用户 / 每个 tool 单独计数
  • tool 描述里显式声明:“本工具限流 60 req/min/user,超出会返回 rate_limited: true
  • Agent 端 SDK 自动退避(1s → 2s → 4s 指数退避,最多 3 次)
  • 网关层兜底:用 Envoy / APISIX 全局限流

坑 8:审计缺失,合规 / 安全团队不批上线

症状:法务 / 安全拒绝”Agent 调生产数据”,项目卡 3 个月。

规避

  • 每条 tool 调用都打 span(用户、参数 hash、结果大小、耗时)
  • 敏感 tool 加 dry_run 模式(先返回”如果执行会做什么”,人审批后再实际跑)
  • 提供”Agent 行为回放”能力(按 session_id 还原完整调用链)
  • 走安全评审时把可观测性 dashboard 当成证据——“我们已经能审计每一次调用”

坑 9:把 MCP 当万能胶水,绕过业务架构

症状:MCP Server 直接调业务底层 DB 绕过 service 层,绕过权限、绕过业务规则,调用后数据不一致。

规避

  • MCP Server 只调 service 层 API,不直接碰 DB
  • 业务操作走 service 的事务边界,不让 Agent 跨多个 tool 拼出一个”业务上不存在的状态”
  • 重要操作必须经过 service 提供的 validate + idempotency_key

坑 10:忽略 MCP 1.0 协议本身的版本兼容

症状:Server 是 0.9 写的,客户端是 1.0,能力协商失败,工具加载不全。

规避

  • 启动时显式声明 protocol_version: "2025-06-10"(或当前规范)
  • CI 里加协议兼容测试:跑官方 mcp-conformance 套件
  • 老客户端 < 1.0:Server 端做协议降级(detect → fallback 到 JSON-RPC stdio)

成本 / 性能 / 维护权衡

1. 成本结构(按 20 人团队估算)

月成本(人民币)说明
4C8G 网关节点 × 2~200Nginx + OAuth proxy + 可观测性
MCP Server 进程(10 个)~40010× 1C2G 容器;Python 平均 80MB / Node 50MB
私有 Registry 镜像~50静态文件 + 一台小 VM
OpenTelemetry 后端0500自建 Tempo 免费;SaaS 看量
总基础设施6501150不含 LLM API 成本
LLM Token 消耗增量+20~40%工具描述 + tool 返回值占用;可用”按需加载”压到 10%

vs 重复造轮子:每个 Agent 一套适配器,2 个工程师 × 3 个月 = 12 万月薪。MCP 中心化 ROI 在第一个月就回本。

2. 性能权衡

指标stdio(本地)SSE(远程)备注
启动延迟<100ms200~500ms首次 OAuth 流程额外 +1s(一次性)
单次 tool 调用+5~15ms+20~60ms多一跳 HTTP
长任务阻塞不阻塞SSE 推流是杀手锏
并发受限于单进程横向扩展容器化后两者都差不多
适用场景个人开发、CI/CD团队共享、跨网络

优化点

  • 热点 tool 加本地 LRU 缓存(60s TTL),相同参数直接返回,省一次上游 API
  • 批量 tool 调用(tools/call_batch)一次发 10 个,省 RTT
  • 大结果走 streaming response,模型边收边处理

3. 维护权衡

维度中心化 MCP各自适配
新增 1 个内部工具1 个 MCP Server,所有 Agent 立即可用N 个适配器,N 个 PR,N 个排期
修改鉴权逻辑改 1 个网关改 N 处
协议升级Server 端 + 网关升级,客户端无感全部 N×M 同步升级
人员依赖1~2 个工程师维护每个 Agent 团队都要懂每个工具
故障域1 个 Server 挂 = 该工具全公司不可用局部失败
关键风险单点 + 性能瓶颈重复劳动 + 行为不一致

核心建议能中心化就中心化,中心化不了的(极高安全级别 / 极高 QPS / 离线场景)再独立部署

4. 长期演进

  • MCP 2.0(预计 Q3 2026):可能引入 Server Mesh(Server 间互相调用)、联邦 Registry(跨公司 Server 联邦)
  • Skills 协议成熟:Server 暴露的能力可在 Skill 文档里声明依赖,Agent 启动时按 Skill 加载对应 Server
  • MCP + Agent 框架融合:LangGraph / DSPy / Hermes 都会把 MCP 客户端做成 first-class
  • 企业级治理:MCP Server 之间的”调用链” / “Token 计量” / “配额管理”会是新的 SaaS 机会点

一周内可执行行动清单

假设你是某团队的 Tech Lead,下面 7 天每天最多投入 0.5~1.5 人天。

  • Day 1(今天)

    • 在 Claude Desktop 上配好官方 SQLite / Filesystem Server,验证链路通
    • pip install "mcp>=1.0.0",跑通 examples/snippets
    • 拉团队对一下:列出内部 Top 10 工具,标出”必须有 / 应该有 / 锦上添花”
  • Day 2

    • 部署 3 个参考 Server:mcp-server-gitlabmcp-server-postgres(只读)、mcp-server-fetch(自研 wrapper)
    • 配好 Nginx + /.well-known/mcp.json 可发现性文件
    • 写一个 30 行的”鉴权中间件”骨架(先放 stub,明日接 OAuth)
  • Day 3

    • 完成 OAuth 2.1 + PKCE 接入,对接公司 SSO
    • 在 Cursor + Claude Desktop + Cline 三端各配一次,验证三方都能连
    • 给每个 Server 写 5~8 行 description,包含能力 + 限制 + 典型输入
  • Day 4

    • 接入 OpenTelemetry,导到本地 Tempo / Jaeger
    • 配基础告警:单用户 1h 调用 > 1000 次、5xx 率 > 5%、P95 延迟 > 3s
    • 加限流中间件:单用户 60 req/min、超限返 rate_limited
  • Day 5

    • 写 3 份 SKILL.md<mcps>/gitlab/SKILL.md<mcps>/pg/SKILL.md<mcps>/confluence/SKILL.md
    • 在 Hermes Agent / Claude Code 装上 3 个 Skill,端到端跑 “查昨天提的 bug → 看相关 MR → 写修复建议”
    • 拉一次”用户复盘会”,收集 “哪个 tool 描述看不懂 / 哪个调用太慢 / 哪个返回太啰嗦”
  • Day 6

    • 接入第 4~6 个 Server(Confluence / Slack / 内部 Wiki),优先用官方 + community 已有实现
    • mcp-registry.dev 提交公司命名空间申请,发布 3 个 Server 元数据
    • 写一份”内部开发者文档”:如何在本机添加新 Server、如何调试、如何打 trace
  • Day 7(交付日)

    • 全员邮件 / 群通知:“公司 MCP 网关已上线,访问 https://mcp.your-company.internal 接入”
    • 内部分享会(30 min):演示 1 个端到端业务流,附 1 个”成本 / 性能对比”图表
    • 把”是否继续接入剩余 10~20 个工具”放到下季度 OKR,列 3 人 / 季度的资源申请
    • 沉淀 1 份 ADR(Architecture Decision Record)记录”MCP 选型理由、权衡、回滚条件”

收尾: MCP 1.0 解决的是”AI 时代的企业集成”,不是”又一份协议”。它的真正价值不在协议本身,而在它把 N×M 变成 N+M 的能力。一周时间足够跑通”3 个 Server + 1 个网关 + 1 份 Skill”;剩下的就是把它”长在公司架构里”——把 MCP Server 当成内部 API 的标准交付物之一,跟 OpenAPI / SDK 并列。

别造轮子,别写 N×M 适配,别再让每个 Agent 都自己拿 API Key。 这一周动手,下一季度你团队的 Agent 工程效率会回到 2024 年水平。