[{"data":1,"prerenderedAt":690},["ShallowReactive",2],{"header-counts":3,"footer-counts":6,"review-mcp-ecosystem-review":9},{"tools":4,"reviews":5},65,7,{"tools":4,"reviews":5,"playbooks":7,"news":8},10,8,{"id":10,"title":11,"body":12,"cover":670,"description":671,"extension":672,"meta":673,"navigation":213,"path":674,"published":675,"relatedTools":676,"seo":680,"stem":681,"tags":682,"updated":675,"verdict":688,"__hash__":689},"review\u002Freview\u002Fmcp-ecosystem-review.md","MCP 生态实测：Smithery vs Composio vs 手搓，Agent 接工具的最优解",{"type":13,"value":14,"toc":660},"minimark",[15,20,116,120,129,132,139,142,164,168,176,369,375,389,395,399,456,459,463,480,485,489,492,572,575,579,603,608,611,619,622,656],[16,17,19],"h2",{"id":18},"tldr","TL;DR",[21,22,23,42],"table",{},[24,25,26],"thead",{},[27,28,29,33,36,39],"tr",{},[30,31,32],"th",{},"维度",[30,34,35],{},"手搓 MCP Server",[30,37,38],{},"Smithery 安装",[30,40,41],{},"Composio 托管",[43,44,45,60,74,88,102],"tbody",{},[27,46,47,51,54,57],{},[48,49,50],"td",{},"上手成本",[48,52,53],{},"高（写 TS\u002FPython）",[48,55,56],{},"低（npx 一行）",[48,58,59],{},"中（注册 + 配 Auth）",[27,61,62,65,68,71],{},[48,63,64],{},"定制度",[48,66,67],{},"最高",[48,69,70],{},"低（用别人写好的）",[48,72,73],{},"中（250+ 预置 + 自定义）",[27,75,76,79,82,85],{},[48,77,78],{},"Auth 管理",[48,80,81],{},"自己写",[48,83,84],{},"Server 自带",[48,86,87],{},"托管平台帮你管",[27,89,90,93,96,99],{},[48,91,92],{},"生产可用",[48,94,95],{},"看你写得好不好",[48,97,98],{},"参差，需自己审",[48,100,101],{},"有 SLA + 日志",[27,103,104,107,110,113],{},[48,105,106],{},"适合场景",[48,108,109],{},"特殊定制需求",[48,111,112],{},"快速试 \u002F 个人用",[48,114,115],{},"团队 \u002F 生产级",[16,117,119],{"id":118},"背景mcp-协议解决了什么","背景：MCP 协议解决了什么",[121,122,123,124,128],"p",{},"MCP（Model Context Protocol）是 Anthropic 2025 年底开放的协议标准，核心解决一个问题：",[125,126,127],"strong",{},"AI 模型调外部工具太碎片","。",[121,130,131],{},"之前每个 Agent 框架有自己的 tool 格式——LangChain 用 Python function，AutoGPT 用 JSON schema，OpenAI 用 function calling。MCP 统一了这些：一个 MCP Server 对外暴露工具，任何支持 MCP 的客户端（Claude、Cursor、Windsurf）都能调。",[121,133,134,135,138],{},"协议好是好，但",[125,136,137],{},"谁来写 Server？"," 这就是 Smithery 和 Composio 要解决的问题。",[16,140,141],{"id":141},"实测环境",[143,144,145,152,158],"ul",{},[146,147,148,151],"li",{},[125,149,150],{},"Agent 客户端","：Claude Code (CLI) + Cursor (IDE)",[146,153,154,157],{},[125,155,156],{},"要接的工具","：GitHub（读 PR + 评论）、Slack（发消息）、PostgreSQL（查数据）",[146,159,160,163],{},[125,161,162],{},"时长","：每种方案各用 3 天",[16,165,167],{"id":166},"方案一手搓-mcp-server","方案一：手搓 MCP Server",[121,169,170,171,175],{},"用 ",[172,173,174],"code",{},"@modelcontextprotocol\u002Fsdk"," 从零写一个 GitHub MCP Server：",[177,178,183],"pre",{"className":179,"code":180,"language":181,"meta":182,"style":182},"language-typescript shiki shiki-themes github-light github-dark","import { Server } from \"@modelcontextprotocol\u002Fsdk\u002Fserver\";\n\nconst server = new Server({\n  name: \"github-mcp\",\n  version: \"1.0.0\",\n});\n\nserver.setRequestHandler(ListToolsRequestSchema, async () => ({\n  tools: [\n    {\n      name: \"get_pr\",\n      description: \"Get a GitHub PR by number\",\n      inputSchema: { type: \"object\", properties: { repo: { type: \"string\" }, pr: { type: \"number\" } } },\n    },\n  ],\n}));\n","typescript","",[172,184,185,208,215,238,250,261,267,271,294,300,305,316,327,351,357,363],{"__ignoreMap":182},[186,187,190,194,198,201,205],"span",{"class":188,"line":189},"line",1,[186,191,193],{"class":192},"szBVR","import",[186,195,197],{"class":196},"sVt8B"," { Server } ",[186,199,200],{"class":192},"from",[186,202,204],{"class":203},"sZZnC"," \"@modelcontextprotocol\u002Fsdk\u002Fserver\"",[186,206,207],{"class":196},";\n",[186,209,211],{"class":188,"line":210},2,[186,212,214],{"emptyLinePlaceholder":213},true,"\n",[186,216,218,221,225,228,231,235],{"class":188,"line":217},3,[186,219,220],{"class":192},"const",[186,222,224],{"class":223},"sj4cs"," server",[186,226,227],{"class":192}," =",[186,229,230],{"class":192}," new",[186,232,234],{"class":233},"sScJk"," Server",[186,236,237],{"class":196},"({\n",[186,239,241,244,247],{"class":188,"line":240},4,[186,242,243],{"class":196},"  name: ",[186,245,246],{"class":203},"\"github-mcp\"",[186,248,249],{"class":196},",\n",[186,251,253,256,259],{"class":188,"line":252},5,[186,254,255],{"class":196},"  version: ",[186,257,258],{"class":203},"\"1.0.0\"",[186,260,249],{"class":196},[186,262,264],{"class":188,"line":263},6,[186,265,266],{"class":196},"});\n",[186,268,269],{"class":188,"line":5},[186,270,214],{"emptyLinePlaceholder":213},[186,272,273,276,279,282,285,288,291],{"class":188,"line":8},[186,274,275],{"class":196},"server.",[186,277,278],{"class":233},"setRequestHandler",[186,280,281],{"class":196},"(ListToolsRequestSchema, ",[186,283,284],{"class":192},"async",[186,286,287],{"class":196}," () ",[186,289,290],{"class":192},"=>",[186,292,293],{"class":196}," ({\n",[186,295,297],{"class":188,"line":296},9,[186,298,299],{"class":196},"  tools: [\n",[186,301,302],{"class":188,"line":7},[186,303,304],{"class":196},"    {\n",[186,306,308,311,314],{"class":188,"line":307},11,[186,309,310],{"class":196},"      name: ",[186,312,313],{"class":203},"\"get_pr\"",[186,315,249],{"class":196},[186,317,319,322,325],{"class":188,"line":318},12,[186,320,321],{"class":196},"      description: ",[186,323,324],{"class":203},"\"Get a GitHub PR by number\"",[186,326,249],{"class":196},[186,328,330,333,336,339,342,345,348],{"class":188,"line":329},13,[186,331,332],{"class":196},"      inputSchema: { type: ",[186,334,335],{"class":203},"\"object\"",[186,337,338],{"class":196},", properties: { repo: { type: ",[186,340,341],{"class":203},"\"string\"",[186,343,344],{"class":196}," }, pr: { type: ",[186,346,347],{"class":203},"\"number\"",[186,349,350],{"class":196}," } } },\n",[186,352,354],{"class":188,"line":353},14,[186,355,356],{"class":196},"    },\n",[186,358,360],{"class":188,"line":359},15,[186,361,362],{"class":196},"  ],\n",[186,364,366],{"class":188,"line":365},16,[186,367,368],{"class":196},"}));\n",[121,370,371,374],{},[125,372,373],{},"体验","：",[143,376,377,380,383,386],{},[146,378,379],{},"✅ 完全可控，想加什么工具加什么",[146,381,382],{},"❌ GitHub OAuth 流程写了一整天",[146,384,385],{},"❌ Rate Limit \u002F 重试 \u002F 错误处理全得自己写",[146,387,388],{},"❌ 3 天才搞定 3 个工具，而且只有我自己能维护",[121,390,391,394],{},[125,392,393],{},"结论","：除非你有特殊定制需求（内部系统、私有协议），否则不推荐。时间成本太高。",[16,396,398],{"id":397},"方案二smithery-一键安装","方案二：Smithery 一键安装",[177,400,404],{"className":401,"code":402,"language":403,"meta":182,"style":182},"language-bash shiki shiki-themes github-light github-dark","# 装 GitHub Server\nnpx @smithery\u002Fcli install @modelcontextprotocol\u002Fserver-github --client claude\n\n# 装 PostgreSQL Server\nnpx @smithery\u002Fcli install @modelcontextprotocol\u002Fserver-postgres --client claude\n","bash",[172,405,406,412,432,436,441],{"__ignoreMap":182},[186,407,408],{"class":188,"line":189},[186,409,411],{"class":410},"sJ8bj","# 装 GitHub Server\n",[186,413,414,417,420,423,426,429],{"class":188,"line":210},[186,415,416],{"class":233},"npx",[186,418,419],{"class":203}," @smithery\u002Fcli",[186,421,422],{"class":203}," install",[186,424,425],{"class":203}," @modelcontextprotocol\u002Fserver-github",[186,427,428],{"class":223}," --client",[186,430,431],{"class":203}," claude\n",[186,433,434],{"class":188,"line":217},[186,435,214],{"emptyLinePlaceholder":213},[186,437,438],{"class":188,"line":240},[186,439,440],{"class":410},"# 装 PostgreSQL Server\n",[186,442,443,445,447,449,452,454],{"class":188,"line":252},[186,444,416],{"class":233},[186,446,419],{"class":203},[186,448,422],{"class":203},[186,450,451],{"class":203}," @modelcontextprotocol\u002Fserver-postgres",[186,453,428],{"class":223},[186,455,431],{"class":203},[121,457,458],{},"重启 Claude Desktop，自动出现 GitHub 和 PostgreSQL 工具。",[121,460,461,374],{},[125,462,373],{},[143,464,465,468,471,474,477],{},[146,466,467],{},"✅ 5 分钟搞定 2 个工具，体验极爽",[146,469,470],{},"✅ 社区已有几百个 Server，常见 SaaS 都有",[146,472,473],{},"⚠️ Slack Server 找到 3 个版本，质量参差——第一个试的版本有 bug，第二个才正常",[146,475,476],{},"⚠️ Auth 需要手动配（Smithery 不帮你管 token）",[146,478,479],{},"❌ 生产环境心里没底——Server 是社区上传的，没有 SLA",[121,481,482,484],{},[125,483,393],{},"：个人开发 \u002F 快速试水首选。生产用需要自己审代码 + 自托管。",[16,486,488],{"id":487},"方案三composio-托管","方案三：Composio 托管",[121,490,491],{},"注册 Composio → 连 GitHub \u002F Slack 账号（OAuth 流程 Composio 帮你跑）→ 装 MCP Server：",[177,493,497],{"className":494,"code":495,"language":496,"meta":182,"style":182},"language-json shiki shiki-themes github-light github-dark","{\n  \"mcpServers\": {\n    \"composio\": {\n      \"command\": \"npx\",\n      \"args\": [\"@composio\u002Fmcp\", \"--api-key\", \"xxx\"]\n    }\n  }\n}\n","json",[172,498,499,504,512,519,532,557,562,567],{"__ignoreMap":182},[186,500,501],{"class":188,"line":189},[186,502,503],{"class":196},"{\n",[186,505,506,509],{"class":188,"line":210},[186,507,508],{"class":223},"  \"mcpServers\"",[186,510,511],{"class":196},": {\n",[186,513,514,517],{"class":188,"line":217},[186,515,516],{"class":223},"    \"composio\"",[186,518,511],{"class":196},[186,520,521,524,527,530],{"class":188,"line":240},[186,522,523],{"class":223},"      \"command\"",[186,525,526],{"class":196},": ",[186,528,529],{"class":203},"\"npx\"",[186,531,249],{"class":196},[186,533,534,537,540,543,546,549,551,554],{"class":188,"line":252},[186,535,536],{"class":223},"      \"args\"",[186,538,539],{"class":196},": [",[186,541,542],{"class":203},"\"@composio\u002Fmcp\"",[186,544,545],{"class":196},", ",[186,547,548],{"class":203},"\"--api-key\"",[186,550,545],{"class":196},[186,552,553],{"class":203},"\"xxx\"",[186,555,556],{"class":196},"]\n",[186,558,559],{"class":188,"line":263},[186,560,561],{"class":196},"    }\n",[186,563,564],{"class":188,"line":5},[186,565,566],{"class":196},"  }\n",[186,568,569],{"class":188,"line":8},[186,570,571],{"class":196},"}\n",[121,573,574],{},"Claude Desktop 自动获得 250+ 工具能力。",[121,576,577,374],{},[125,578,373],{},[143,580,581,584,587,590,597,600],{},[146,582,583],{},"✅ Auth 全托管——不用自己管 token 续期",[146,585,586],{},"✅ 有调用日志和 trace，生产级可观测",[146,588,589],{},"✅ Rate Limit 帮你管，不会打爆 API",[146,591,592,593,596],{},"⚠️ 250+ 工具全暴露给模型，有时 Claude 会调错工具（用 ",[172,594,595],{},"allowed_tools"," 过滤可缓解）",[146,598,599],{},"⚠️ 国内 SaaS 覆盖少（无飞书\u002F钉钉\u002F微信）",[146,601,602],{},"❌ 托管版 $29\u002Fmo 起，对个人开发者偏贵",[121,604,605,607],{},[125,606,393],{},"：团队 \u002F 生产级 Agent 首选。个人开发者用免费版也能跑，但 Auth 自己管。",[16,609,610],{"id":610},"最终推荐",[177,612,617],{"className":613,"code":615,"language":616},[614],"language-text","个人试水 → Smithery（免费 + 一键装）\n生产 Agent → Composio（Auth + 日志 + SLA）\n特殊定制 → 手搓 MCP Server（最后选项）\n","text",[172,618,615],{"__ignoreMap":182},[16,620,621],{"id":621},"踩坑记录",[623,624,625,631,641,650],"ol",{},[146,626,627,630],{},[125,628,629],{},"Smithery 的 Server 不是官方审核的","——装之前看 star 数和最近 commit",[146,632,633,636,637,640],{},[125,634,635],{},"Composio 的 MCP 模式默认暴露全部工具","——用 ",[172,638,639],{},"--tools"," 参数过滤只暴露需要的",[146,642,643,374,646,649],{},[125,644,645],{},"Claude Code CLI 的 MCP 配置文件路径",[172,647,648],{},"~\u002F.claude\u002Fclaude_desktop_config.json","，不是项目级",[146,651,652,655],{},[125,653,654],{},"Cursor 的 MCP 支持","：Settings → MCP → Add Server，支持 stdio 和 SSE 两种模式",[657,658,659],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":182,"searchDepth":217,"depth":217,"links":661},[662,663,664,665,666,667,668,669],{"id":18,"depth":210,"text":19},{"id":118,"depth":210,"text":119},{"id":141,"depth":210,"text":141},{"id":166,"depth":210,"text":167},{"id":397,"depth":210,"text":398},{"id":487,"depth":210,"text":488},{"id":610,"depth":210,"text":610},{"id":621,"depth":210,"text":621},"\u002Fog\u002Freview\u002Fmcp-ecosystem.png","Anthropic MCP 协议发布半年后，Agent 接外部工具有了哪些变化？我们用 Claude Code + 3 种方案（手搓 MCP Server \u002F Smithery 一键安装 \u002F Composio 托管平台）接 GitHub + Slack + Postgres，记录了真实体验和踩坑。","md",{},"\u002Freview\u002Fmcp-ecosystem-review","2026-06-21",[677,678,679],"agent\u002Fprotocol\u002Fsmithery","agent\u002Fprotocol\u002Fcomposio","agent\u002Fprotocol\u002Fmcp-toolbox",{"title":11,"description":671},"review\u002Fmcp-ecosystem-review",[683,684,685,686,687],"MCP","Agent","对比","Smithery","Composio","个人开发 \u002F 试水用 Smithery，生产级 Agent 用 Composio，有特殊定制需求才手搓。MCP 生态仍在早期，Server 质量参差是最大痛点。","TPseZv1ae1GJqzOHG8e5GQBZQCQ0L5lnYzr_RpaCySg",1782316490338]