[{"data":1,"prerenderedAt":2707},["ShallowReactive",2],{"doc-page:\u002Fdocs\u002Fmcp-guide":3},{"doc":4,"prev":2679,"next":2681,"resolvedType":8,"readingMinutes":229,"audience":2685,"checklist":2689,"related":2693},{"path":5,"title":6,"description":7,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13,"body":14},"\u002Fdocs\u002Fmcp-guide","MCP 模型上下文协议","Model Context Protocol 概念、服务器配置、常用 MCP 服务器与自定义开发","article",null,"ai-tools","AI 工具","2026-02-28","i-carbon-chat-bot",{"type":15,"value":16,"toc":2644},"minimark",[17,21,32,35,39,42,53,56,69,73,84,128,131,150,162,165,170,302,306,377,381,476,480,483,487,542,546,601,605,677,681,730,734,737,786,790,793,842,846,853,916,919,930,937,940,944,1015,1019,1093,1097,1149,1152,1156,1226,1230,1275,1279,1349,1352,1356,1467,1471,1542,1545,1549,1598,1601,1604,1720,1724,1728,1747,2164,2168,2184,2355,2358,2362,2384,2387,2390,2470,2473,2491,2494,2497,2515,2518,2522,2525,2529,2532,2546,2550,2553,2565,2568,2588,2591,2640],[18,19,6],"h1",{"id":20},"mcp-模型上下文协议",[22,23,24,31],"p",{},[25,26,30],"a",{"href":27,"rel":28},"https:\u002F\u002Fmodelcontextprotocol.io\u002F",[29],"nofollow","MCP（Model Context Protocol）"," 是 Anthropic 推出的开放协议，让 AI 助手能够连接外部数据源和工具。",[22,33,34],{},"这页适合作为“MCP 概念与接入入口”。很多人第一次接触 MCP 时最容易混淆的是：它不是某个具体工具，而是一套把模型、工具、数据和客户端连接起来的标准方式。",[36,37,38],"h2",{"id":38},"核心概念",[22,40,41],{},"MCP 采用客户端-服务器架构：",[43,44,49],"pre",{"className":45,"code":47,"language":48},[46],"language-text","AI 助手（客户端）  ←→  MCP 服务器  ←→  外部服务\u002F数据\n","text",[50,51,47],"code",{"__ignoreMap":52},"",[22,54,55],{},"MCP 服务器可以提供三种能力：",[57,58,59,63,66],"ul",{},[60,61,62],"li",{},"Resources：向 AI 暴露数据和内容（文件、数据库记录等）",[60,64,65],{},"Tools：让 AI 调用外部功能（API 调用、计算等）",[60,67,68],{},"Prompts：预定义的提示词模板",[36,70,72],{"id":71},"skills-和-mcp-的区别","Skills 和 MCP 的区别",[22,74,75,76,79,80,83],{},"很多人在刚接触 AI Agent 时，会把 ",[50,77,78],{},"skills"," 和 ",[50,81,82],{},"MCP"," 混在一起。最简单的理解方式是：",[85,86,87,103],"table",{},[88,89,90],"thead",{},[91,92,93,97,100],"tr",{},[94,95,96],"th",{},"概念",[94,98,99],{},"更像什么",[94,101,102],{},"解决的问题",[104,105,106,118],"tbody",{},[91,107,108,112,115],{},[109,110,111],"td",{},"Skills",[109,113,114],{},"可复用的方法论 \u002F 操作手册",[109,116,117],{},"告诉 Agent“该怎么做”",[91,119,120,122,125],{},[109,121,82],{},[109,123,124],{},"标准化工具接口",[109,126,127],{},"让 Agent“能够做什么”",[22,129,130],{},"也就是说：",[57,132,133,139,144],{},[60,134,135,138],{},[136,137,111],"strong",{}," 适合封装固定工作流、代码规范、发布检查单、排障步骤",[60,140,141,143],{},[136,142,82],{}," 适合连接文件系统、GitHub、数据库、浏览器、Docker、SaaS API 等外部能力",[60,145,146,147],{},"两者通常一起使用：",[136,148,149],{},"Skills 管流程，MCP 管执行能力",[22,151,152,153,156,157,161],{},"如果你想把重复任务沉淀成 ",[50,154,155],{},"SKILL.md","、脚本和参考资料，可以继续看 ",[25,158,160],{"href":159},"\u002Fdocs\u002Fskills-guide","AI Agent Skills 指南","。",[36,163,164],{"id":164},"配置",[166,167,169],"h3",{"id":168},"kiro","Kiro",[43,171,175],{"className":172,"code":173,"language":174,"meta":52,"style":52},"language-jsonc shiki shiki-themes github-light github-dark","\u002F\u002F .kiro\u002Fsettings\u002Fmcp.json\n{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-filesystem\", \"\u002Fpath\u002Fto\u002Fdir\"],\n      \"disabled\": false,\n      \"autoApprove\": [\"read_file\", \"list_directory\"],\n    },\n  },\n}\n","jsonc",[50,176,177,186,193,203,211,227,253,266,284,290,296],{"__ignoreMap":52},[178,179,182],"span",{"class":180,"line":181},"line",1,[178,183,185],{"class":184},"sJ8bj","\u002F\u002F .kiro\u002Fsettings\u002Fmcp.json\n",[178,187,189],{"class":180,"line":188},2,[178,190,192],{"class":191},"sVt8B","{\n",[178,194,196,200],{"class":180,"line":195},3,[178,197,199],{"class":198},"sj4cs","  \"mcpServers\"",[178,201,202],{"class":191},": {\n",[178,204,206,209],{"class":180,"line":205},4,[178,207,208],{"class":198},"    \"filesystem\"",[178,210,202],{"class":191},[178,212,214,217,220,224],{"class":180,"line":213},5,[178,215,216],{"class":198},"      \"command\"",[178,218,219],{"class":191},": ",[178,221,223],{"class":222},"sZZnC","\"npx\"",[178,225,226],{"class":191},",\n",[178,228,230,233,236,239,242,245,247,250],{"class":180,"line":229},6,[178,231,232],{"class":198},"      \"args\"",[178,234,235],{"class":191},": [",[178,237,238],{"class":222},"\"-y\"",[178,240,241],{"class":191},", ",[178,243,244],{"class":222},"\"@modelcontextprotocol\u002Fserver-filesystem\"",[178,246,241],{"class":191},[178,248,249],{"class":222},"\"\u002Fpath\u002Fto\u002Fdir\"",[178,251,252],{"class":191},"],\n",[178,254,256,259,261,264],{"class":180,"line":255},7,[178,257,258],{"class":198},"      \"disabled\"",[178,260,219],{"class":191},[178,262,263],{"class":198},"false",[178,265,226],{"class":191},[178,267,269,272,274,277,279,282],{"class":180,"line":268},8,[178,270,271],{"class":198},"      \"autoApprove\"",[178,273,235],{"class":191},[178,275,276],{"class":222},"\"read_file\"",[178,278,241],{"class":191},[178,280,281],{"class":222},"\"list_directory\"",[178,283,252],{"class":191},[178,285,287],{"class":180,"line":286},9,[178,288,289],{"class":191},"    },\n",[178,291,293],{"class":180,"line":292},10,[178,294,295],{"class":191},"  },\n",[178,297,299],{"class":180,"line":298},11,[178,300,301],{"class":191},"}\n",[166,303,305],{"id":304},"cursor","Cursor",[43,307,309],{"className":172,"code":308,"language":174,"meta":52,"style":52},"\u002F\u002F .cursor\u002Fmcp.json\n{\n  \"mcpServers\": {\n    \"sqlite\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-server-sqlite\", \"--db-path\", \".\u002Fdata.db\"],\n    },\n  },\n}\n",[50,310,311,316,320,326,333,344,365,369,373],{"__ignoreMap":52},[178,312,313],{"class":180,"line":181},[178,314,315],{"class":184},"\u002F\u002F .cursor\u002Fmcp.json\n",[178,317,318],{"class":180,"line":188},[178,319,192],{"class":191},[178,321,322,324],{"class":180,"line":195},[178,323,199],{"class":198},[178,325,202],{"class":191},[178,327,328,331],{"class":180,"line":205},[178,329,330],{"class":198},"    \"sqlite\"",[178,332,202],{"class":191},[178,334,335,337,339,342],{"class":180,"line":213},[178,336,216],{"class":198},[178,338,219],{"class":191},[178,340,341],{"class":222},"\"uvx\"",[178,343,226],{"class":191},[178,345,346,348,350,353,355,358,360,363],{"class":180,"line":229},[178,347,232],{"class":198},[178,349,235],{"class":191},[178,351,352],{"class":222},"\"mcp-server-sqlite\"",[178,354,241],{"class":191},[178,356,357],{"class":222},"\"--db-path\"",[178,359,241],{"class":191},[178,361,362],{"class":222},"\".\u002Fdata.db\"",[178,364,252],{"class":191},[178,366,367],{"class":180,"line":255},[178,368,289],{"class":191},[178,370,371],{"class":180,"line":268},[178,372,295],{"class":191},[178,374,375],{"class":180,"line":286},[178,376,301],{"class":191},[166,378,380],{"id":379},"claude-desktop","Claude Desktop",[43,382,384],{"className":172,"code":383,"language":174,"meta":52,"style":52},"\u002F\u002F %APPDATA%\u002FClaude\u002Fclaude_desktop_config.json (Windows)\n\u002F\u002F ~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json (macOS)\n{\n  \"mcpServers\": {\n    \"brave-search\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@anthropic-ai\u002Fmcp-server-brave-search\"],\n      \"env\": {\n        \"BRAVE_API_KEY\": \"your-api-key\",\n      },\n    },\n  },\n}\n",[50,385,386,391,396,400,406,413,423,438,445,457,462,466,471],{"__ignoreMap":52},[178,387,388],{"class":180,"line":181},[178,389,390],{"class":184},"\u002F\u002F %APPDATA%\u002FClaude\u002Fclaude_desktop_config.json (Windows)\n",[178,392,393],{"class":180,"line":188},[178,394,395],{"class":184},"\u002F\u002F ~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json (macOS)\n",[178,397,398],{"class":180,"line":195},[178,399,192],{"class":191},[178,401,402,404],{"class":180,"line":205},[178,403,199],{"class":198},[178,405,202],{"class":191},[178,407,408,411],{"class":180,"line":213},[178,409,410],{"class":198},"    \"brave-search\"",[178,412,202],{"class":191},[178,414,415,417,419,421],{"class":180,"line":229},[178,416,216],{"class":198},[178,418,219],{"class":191},[178,420,223],{"class":222},[178,422,226],{"class":191},[178,424,425,427,429,431,433,436],{"class":180,"line":255},[178,426,232],{"class":198},[178,428,235],{"class":191},[178,430,238],{"class":222},[178,432,241],{"class":191},[178,434,435],{"class":222},"\"@anthropic-ai\u002Fmcp-server-brave-search\"",[178,437,252],{"class":191},[178,439,440,443],{"class":180,"line":268},[178,441,442],{"class":198},"      \"env\"",[178,444,202],{"class":191},[178,446,447,450,452,455],{"class":180,"line":286},[178,448,449],{"class":198},"        \"BRAVE_API_KEY\"",[178,451,219],{"class":191},[178,453,454],{"class":222},"\"your-api-key\"",[178,456,226],{"class":191},[178,458,459],{"class":180,"line":292},[178,460,461],{"class":191},"      },\n",[178,463,464],{"class":180,"line":298},[178,465,289],{"class":191},[178,467,469],{"class":180,"line":468},12,[178,470,295],{"class":191},[178,472,474],{"class":180,"line":473},13,[178,475,301],{"class":191},[36,477,479],{"id":478},"常用-mcp-服务器","常用 MCP 服务器",[166,481,482],{"id":482},"开发工具",[484,485,486],"h4",{"id":486},"文件系统",[43,488,490],{"className":172,"code":489,"language":174,"meta":52,"style":52},"{\n  \"filesystem\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-filesystem\", \".\u002F\"],\n  },\n}\n",[50,491,492,496,503,514,534,538],{"__ignoreMap":52},[178,493,494],{"class":180,"line":181},[178,495,192],{"class":191},[178,497,498,501],{"class":180,"line":188},[178,499,500],{"class":198},"  \"filesystem\"",[178,502,202],{"class":191},[178,504,505,508,510,512],{"class":180,"line":195},[178,506,507],{"class":198},"    \"command\"",[178,509,219],{"class":191},[178,511,223],{"class":222},[178,513,226],{"class":191},[178,515,516,519,521,523,525,527,529,532],{"class":180,"line":205},[178,517,518],{"class":198},"    \"args\"",[178,520,235],{"class":191},[178,522,238],{"class":222},[178,524,241],{"class":191},[178,526,244],{"class":222},[178,528,241],{"class":191},[178,530,531],{"class":222},"\".\u002F\"",[178,533,252],{"class":191},[178,535,536],{"class":180,"line":213},[178,537,295],{"class":191},[178,539,540],{"class":180,"line":229},[178,541,301],{"class":191},[484,543,545],{"id":544},"git","Git",[43,547,549],{"className":172,"code":548,"language":174,"meta":52,"style":52},"{\n  \"git\": {\n    \"command\": \"uvx\",\n    \"args\": [\"mcp-server-git\", \"--repository\", \".\"],\n  },\n}\n",[50,550,551,555,562,572,593,597],{"__ignoreMap":52},[178,552,553],{"class":180,"line":181},[178,554,192],{"class":191},[178,556,557,560],{"class":180,"line":188},[178,558,559],{"class":198},"  \"git\"",[178,561,202],{"class":191},[178,563,564,566,568,570],{"class":180,"line":195},[178,565,507],{"class":198},[178,567,219],{"class":191},[178,569,341],{"class":222},[178,571,226],{"class":191},[178,573,574,576,578,581,583,586,588,591],{"class":180,"line":205},[178,575,518],{"class":198},[178,577,235],{"class":191},[178,579,580],{"class":222},"\"mcp-server-git\"",[178,582,241],{"class":191},[178,584,585],{"class":222},"\"--repository\"",[178,587,241],{"class":191},[178,589,590],{"class":222},"\".\"",[178,592,252],{"class":191},[178,594,595],{"class":180,"line":213},[178,596,295],{"class":191},[178,598,599],{"class":180,"line":229},[178,600,301],{"class":191},[484,602,604],{"id":603},"github","GitHub",[43,606,608],{"className":172,"code":607,"language":174,"meta":52,"style":52},"{\n  \"github\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-github\"],\n    \"env\": {\n      \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"ghp_xxx\",\n    },\n  },\n}\n",[50,609,610,614,621,631,646,653,665,669,673],{"__ignoreMap":52},[178,611,612],{"class":180,"line":181},[178,613,192],{"class":191},[178,615,616,619],{"class":180,"line":188},[178,617,618],{"class":198},"  \"github\"",[178,620,202],{"class":191},[178,622,623,625,627,629],{"class":180,"line":195},[178,624,507],{"class":198},[178,626,219],{"class":191},[178,628,223],{"class":222},[178,630,226],{"class":191},[178,632,633,635,637,639,641,644],{"class":180,"line":205},[178,634,518],{"class":198},[178,636,235],{"class":191},[178,638,238],{"class":222},[178,640,241],{"class":191},[178,642,643],{"class":222},"\"@modelcontextprotocol\u002Fserver-github\"",[178,645,252],{"class":191},[178,647,648,651],{"class":180,"line":213},[178,649,650],{"class":198},"    \"env\"",[178,652,202],{"class":191},[178,654,655,658,660,663],{"class":180,"line":229},[178,656,657],{"class":198},"      \"GITHUB_PERSONAL_ACCESS_TOKEN\"",[178,659,219],{"class":191},[178,661,662],{"class":222},"\"ghp_xxx\"",[178,664,226],{"class":191},[178,666,667],{"class":180,"line":255},[178,668,289],{"class":191},[178,670,671],{"class":180,"line":268},[178,672,295],{"class":191},[178,674,675],{"class":180,"line":286},[178,676,301],{"class":191},[484,678,680],{"id":679},"playwright浏览器自动化","Playwright（浏览器自动化）",[43,682,684],{"className":172,"code":683,"language":174,"meta":52,"style":52},"{\n  \"playwright\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@anthropic-ai\u002Fmcp-server-playwright\"],\n  },\n}\n",[50,685,686,690,697,707,722,726],{"__ignoreMap":52},[178,687,688],{"class":180,"line":181},[178,689,192],{"class":191},[178,691,692,695],{"class":180,"line":188},[178,693,694],{"class":198},"  \"playwright\"",[178,696,202],{"class":191},[178,698,699,701,703,705],{"class":180,"line":195},[178,700,507],{"class":198},[178,702,219],{"class":191},[178,704,223],{"class":222},[178,706,226],{"class":191},[178,708,709,711,713,715,717,720],{"class":180,"line":205},[178,710,518],{"class":198},[178,712,235],{"class":191},[178,714,238],{"class":222},[178,716,241],{"class":191},[178,718,719],{"class":222},"\"@anthropic-ai\u002Fmcp-server-playwright\"",[178,721,252],{"class":191},[178,723,724],{"class":180,"line":213},[178,725,295],{"class":191},[178,727,728],{"class":180,"line":229},[178,729,301],{"class":191},[484,731,733],{"id":732},"context7代码文档","Context7（代码文档）",[22,735,736],{},"为 AI 提供最新的库文档和代码示例：",[43,738,740],{"className":172,"code":739,"language":174,"meta":52,"style":52},"{\n  \"context7\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@upstash\u002Fcontext7-mcp@latest\"],\n  },\n}\n",[50,741,742,746,753,763,778,782],{"__ignoreMap":52},[178,743,744],{"class":180,"line":181},[178,745,192],{"class":191},[178,747,748,751],{"class":180,"line":188},[178,749,750],{"class":198},"  \"context7\"",[178,752,202],{"class":191},[178,754,755,757,759,761],{"class":180,"line":195},[178,756,507],{"class":198},[178,758,219],{"class":191},[178,760,223],{"class":222},[178,762,226],{"class":191},[178,764,765,767,769,771,773,776],{"class":180,"line":205},[178,766,518],{"class":198},[178,768,235],{"class":191},[178,770,238],{"class":222},[178,772,241],{"class":191},[178,774,775],{"class":222},"\"@upstash\u002Fcontext7-mcp@latest\"",[178,777,252],{"class":191},[178,779,780],{"class":180,"line":213},[178,781,295],{"class":191},[178,783,784],{"class":180,"line":229},[178,785,301],{"class":191},[484,787,789],{"id":788},"sequential-thinking思维链","Sequential Thinking（思维链）",[22,791,792],{},"让 AI 进行结构化的多步推理：",[43,794,796],{"className":172,"code":795,"language":174,"meta":52,"style":52},"{\n  \"sequential-thinking\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-sequential-thinking\"],\n  },\n}\n",[50,797,798,802,809,819,834,838],{"__ignoreMap":52},[178,799,800],{"class":180,"line":181},[178,801,192],{"class":191},[178,803,804,807],{"class":180,"line":188},[178,805,806],{"class":198},"  \"sequential-thinking\"",[178,808,202],{"class":191},[178,810,811,813,815,817],{"class":180,"line":195},[178,812,507],{"class":198},[178,814,219],{"class":191},[178,816,223],{"class":222},[178,818,226],{"class":191},[178,820,821,823,825,827,829,832],{"class":180,"line":205},[178,822,518],{"class":198},[178,824,235],{"class":191},[178,826,238],{"class":222},[178,828,241],{"class":191},[178,830,831],{"class":222},"\"@modelcontextprotocol\u002Fserver-sequential-thinking\"",[178,833,252],{"class":191},[178,835,836],{"class":180,"line":213},[178,837,295],{"class":191},[178,839,840],{"class":180,"line":229},[178,841,301],{"class":191},[166,843,845],{"id":844},"容器化-mcpdocker","容器化 MCP（Docker）",[22,847,848,849,852],{},"当某个 MCP Server 依赖复杂、团队成员系统不一致，或你希望把依赖隔离在容器里时，可以直接让客户端通过 ",[50,850,851],{},"docker run"," 启动 MCP Server。",[43,854,856],{"className":172,"code":855,"language":174,"meta":52,"style":52},"{\n  \"my-dockerized-server\": {\n    \"command\": \"docker\",\n    \"args\": [\"run\", \"--rm\", \"-i\", \"ghcr.io\u002Facme\u002Fmy-mcp-server:latest\"]\n  }\n}\n",[50,857,858,862,869,880,907,912],{"__ignoreMap":52},[178,859,860],{"class":180,"line":181},[178,861,192],{"class":191},[178,863,864,867],{"class":180,"line":188},[178,865,866],{"class":198},"  \"my-dockerized-server\"",[178,868,202],{"class":191},[178,870,871,873,875,878],{"class":180,"line":195},[178,872,507],{"class":198},[178,874,219],{"class":191},[178,876,877],{"class":222},"\"docker\"",[178,879,226],{"class":191},[178,881,882,884,886,889,891,894,896,899,901,904],{"class":180,"line":205},[178,883,518],{"class":198},[178,885,235],{"class":191},[178,887,888],{"class":222},"\"run\"",[178,890,241],{"class":191},[178,892,893],{"class":222},"\"--rm\"",[178,895,241],{"class":191},[178,897,898],{"class":222},"\"-i\"",[178,900,241],{"class":191},[178,902,903],{"class":222},"\"ghcr.io\u002Facme\u002Fmy-mcp-server:latest\"",[178,905,906],{"class":191},"]\n",[178,908,909],{"class":180,"line":213},[178,910,911],{"class":191},"  }\n",[178,913,914],{"class":180,"line":229},[178,915,301],{"class":191},[22,917,918],{},"这样做的优点：",[57,920,921,924,927],{},[60,922,923],{},"本机不需要额外安装一堆运行时依赖",[60,925,926],{},"团队可以共享统一镜像，降低“我这里能跑”的问题",[60,928,929],{},"更容易把访问权限、环境变量和版本固定到同一份配置中",[22,931,932,933,161],{},"如果你使用较新的 Docker Desktop，还可以关注官方提供的 Docker MCP Toolkit。相关内容可参考 ",[25,934,936],{"href":935},"\u002Fdocs\u002Fdocker-setup","Docker Desktop 安装与使用",[166,938,939],{"id":939},"数据库",[484,941,943],{"id":942},"postgresql","PostgreSQL",[43,945,947],{"className":172,"code":946,"language":174,"meta":52,"style":52},"{\n  \"postgres\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-postgres\"],\n    \"env\": {\n      \"POSTGRES_CONNECTION_STRING\": \"postgresql:\u002F\u002Fuser:pass@localhost:5432\u002Fmydb\",\n    },\n  },\n}\n",[50,948,949,953,960,970,985,991,1003,1007,1011],{"__ignoreMap":52},[178,950,951],{"class":180,"line":181},[178,952,192],{"class":191},[178,954,955,958],{"class":180,"line":188},[178,956,957],{"class":198},"  \"postgres\"",[178,959,202],{"class":191},[178,961,962,964,966,968],{"class":180,"line":195},[178,963,507],{"class":198},[178,965,219],{"class":191},[178,967,223],{"class":222},[178,969,226],{"class":191},[178,971,972,974,976,978,980,983],{"class":180,"line":205},[178,973,518],{"class":198},[178,975,235],{"class":191},[178,977,238],{"class":222},[178,979,241],{"class":191},[178,981,982],{"class":222},"\"@modelcontextprotocol\u002Fserver-postgres\"",[178,984,252],{"class":191},[178,986,987,989],{"class":180,"line":213},[178,988,650],{"class":198},[178,990,202],{"class":191},[178,992,993,996,998,1001],{"class":180,"line":229},[178,994,995],{"class":198},"      \"POSTGRES_CONNECTION_STRING\"",[178,997,219],{"class":191},[178,999,1000],{"class":222},"\"postgresql:\u002F\u002Fuser:pass@localhost:5432\u002Fmydb\"",[178,1002,226],{"class":191},[178,1004,1005],{"class":180,"line":255},[178,1006,289],{"class":191},[178,1008,1009],{"class":180,"line":268},[178,1010,295],{"class":191},[178,1012,1013],{"class":180,"line":286},[178,1014,301],{"class":191},[484,1016,1018],{"id":1017},"supabase","Supabase",[43,1020,1022],{"className":172,"code":1021,"language":174,"meta":52,"style":52},"{\n  \"supabase\": {\n    \"command\": \"npx\",\n    \"args\": [\n      \"-y\",\n      \"@supabase\u002Fmcp-server-supabase@latest\",\n      \"--access-token\",\n      \"your-token\",\n    ],\n  },\n}\n",[50,1023,1024,1028,1035,1045,1052,1059,1066,1073,1080,1085,1089],{"__ignoreMap":52},[178,1025,1026],{"class":180,"line":181},[178,1027,192],{"class":191},[178,1029,1030,1033],{"class":180,"line":188},[178,1031,1032],{"class":198},"  \"supabase\"",[178,1034,202],{"class":191},[178,1036,1037,1039,1041,1043],{"class":180,"line":195},[178,1038,507],{"class":198},[178,1040,219],{"class":191},[178,1042,223],{"class":222},[178,1044,226],{"class":191},[178,1046,1047,1049],{"class":180,"line":205},[178,1048,518],{"class":198},[178,1050,1051],{"class":191},": [\n",[178,1053,1054,1057],{"class":180,"line":213},[178,1055,1056],{"class":222},"      \"-y\"",[178,1058,226],{"class":191},[178,1060,1061,1064],{"class":180,"line":229},[178,1062,1063],{"class":222},"      \"@supabase\u002Fmcp-server-supabase@latest\"",[178,1065,226],{"class":191},[178,1067,1068,1071],{"class":180,"line":255},[178,1069,1070],{"class":222},"      \"--access-token\"",[178,1072,226],{"class":191},[178,1074,1075,1078],{"class":180,"line":268},[178,1076,1077],{"class":222},"      \"your-token\"",[178,1079,226],{"class":191},[178,1081,1082],{"class":180,"line":286},[178,1083,1084],{"class":191},"    ],\n",[178,1086,1087],{"class":180,"line":292},[178,1088,295],{"class":191},[178,1090,1091],{"class":180,"line":298},[178,1092,301],{"class":191},[484,1094,1096],{"id":1095},"sqlite","SQLite",[43,1098,1100],{"className":172,"code":1099,"language":174,"meta":52,"style":52},"{\n  \"sqlite\": {\n    \"command\": \"uvx\",\n    \"args\": [\"mcp-server-sqlite\", \"--db-path\", \".\u002Fdata.db\"],\n  },\n}\n",[50,1101,1102,1106,1113,1123,1141,1145],{"__ignoreMap":52},[178,1103,1104],{"class":180,"line":181},[178,1105,192],{"class":191},[178,1107,1108,1111],{"class":180,"line":188},[178,1109,1110],{"class":198},"  \"sqlite\"",[178,1112,202],{"class":191},[178,1114,1115,1117,1119,1121],{"class":180,"line":195},[178,1116,507],{"class":198},[178,1118,219],{"class":191},[178,1120,341],{"class":222},[178,1122,226],{"class":191},[178,1124,1125,1127,1129,1131,1133,1135,1137,1139],{"class":180,"line":205},[178,1126,518],{"class":198},[178,1128,235],{"class":191},[178,1130,352],{"class":222},[178,1132,241],{"class":191},[178,1134,357],{"class":222},[178,1136,241],{"class":191},[178,1138,362],{"class":222},[178,1140,252],{"class":191},[178,1142,1143],{"class":180,"line":213},[178,1144,295],{"class":191},[178,1146,1147],{"class":180,"line":229},[178,1148,301],{"class":191},[166,1150,1151],{"id":1151},"搜索与网络",[484,1153,1155],{"id":1154},"brave-search","Brave Search",[43,1157,1159],{"className":172,"code":1158,"language":174,"meta":52,"style":52},"{\n  \"brave-search\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@anthropic-ai\u002Fmcp-server-brave-search\"],\n    \"env\": {\n      \"BRAVE_API_KEY\": \"your-key\",\n    },\n  },\n}\n",[50,1160,1161,1165,1172,1182,1196,1202,1214,1218,1222],{"__ignoreMap":52},[178,1162,1163],{"class":180,"line":181},[178,1164,192],{"class":191},[178,1166,1167,1170],{"class":180,"line":188},[178,1168,1169],{"class":198},"  \"brave-search\"",[178,1171,202],{"class":191},[178,1173,1174,1176,1178,1180],{"class":180,"line":195},[178,1175,507],{"class":198},[178,1177,219],{"class":191},[178,1179,223],{"class":222},[178,1181,226],{"class":191},[178,1183,1184,1186,1188,1190,1192,1194],{"class":180,"line":205},[178,1185,518],{"class":198},[178,1187,235],{"class":191},[178,1189,238],{"class":222},[178,1191,241],{"class":191},[178,1193,435],{"class":222},[178,1195,252],{"class":191},[178,1197,1198,1200],{"class":180,"line":213},[178,1199,650],{"class":198},[178,1201,202],{"class":191},[178,1203,1204,1207,1209,1212],{"class":180,"line":229},[178,1205,1206],{"class":198},"      \"BRAVE_API_KEY\"",[178,1208,219],{"class":191},[178,1210,1211],{"class":222},"\"your-key\"",[178,1213,226],{"class":191},[178,1215,1216],{"class":180,"line":255},[178,1217,289],{"class":191},[178,1219,1220],{"class":180,"line":268},[178,1221,295],{"class":191},[178,1223,1224],{"class":180,"line":286},[178,1225,301],{"class":191},[484,1227,1229],{"id":1228},"fetch网页抓取","Fetch（网页抓取）",[43,1231,1233],{"className":172,"code":1232,"language":174,"meta":52,"style":52},"{\n  \"fetch\": {\n    \"command\": \"uvx\",\n    \"args\": [\"mcp-server-fetch\"],\n  },\n}\n",[50,1234,1235,1239,1246,1256,1267,1271],{"__ignoreMap":52},[178,1236,1237],{"class":180,"line":181},[178,1238,192],{"class":191},[178,1240,1241,1244],{"class":180,"line":188},[178,1242,1243],{"class":198},"  \"fetch\"",[178,1245,202],{"class":191},[178,1247,1248,1250,1252,1254],{"class":180,"line":195},[178,1249,507],{"class":198},[178,1251,219],{"class":191},[178,1253,341],{"class":222},[178,1255,226],{"class":191},[178,1257,1258,1260,1262,1265],{"class":180,"line":205},[178,1259,518],{"class":198},[178,1261,235],{"class":191},[178,1263,1264],{"class":222},"\"mcp-server-fetch\"",[178,1266,252],{"class":191},[178,1268,1269],{"class":180,"line":213},[178,1270,295],{"class":191},[178,1272,1273],{"class":180,"line":229},[178,1274,301],{"class":191},[484,1276,1278],{"id":1277},"firecrawl结构化网页数据","Firecrawl（结构化网页数据）",[43,1280,1282],{"className":172,"code":1281,"language":174,"meta":52,"style":52},"{\n  \"firecrawl\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"firecrawl-mcp\"],\n    \"env\": {\n      \"FIRECRAWL_API_KEY\": \"your-key\",\n    },\n  },\n}\n",[50,1283,1284,1288,1295,1305,1320,1326,1337,1341,1345],{"__ignoreMap":52},[178,1285,1286],{"class":180,"line":181},[178,1287,192],{"class":191},[178,1289,1290,1293],{"class":180,"line":188},[178,1291,1292],{"class":198},"  \"firecrawl\"",[178,1294,202],{"class":191},[178,1296,1297,1299,1301,1303],{"class":180,"line":195},[178,1298,507],{"class":198},[178,1300,219],{"class":191},[178,1302,223],{"class":222},[178,1304,226],{"class":191},[178,1306,1307,1309,1311,1313,1315,1318],{"class":180,"line":205},[178,1308,518],{"class":198},[178,1310,235],{"class":191},[178,1312,238],{"class":222},[178,1314,241],{"class":191},[178,1316,1317],{"class":222},"\"firecrawl-mcp\"",[178,1319,252],{"class":191},[178,1321,1322,1324],{"class":180,"line":213},[178,1323,650],{"class":198},[178,1325,202],{"class":191},[178,1327,1328,1331,1333,1335],{"class":180,"line":229},[178,1329,1330],{"class":198},"      \"FIRECRAWL_API_KEY\"",[178,1332,219],{"class":191},[178,1334,1211],{"class":222},[178,1336,226],{"class":191},[178,1338,1339],{"class":180,"line":255},[178,1340,289],{"class":191},[178,1342,1343],{"class":180,"line":268},[178,1344,295],{"class":191},[178,1346,1347],{"class":180,"line":286},[178,1348,301],{"class":191},[166,1350,1351],{"id":1351},"生产力工具",[484,1353,1355],{"id":1354},"notion","Notion",[43,1357,1359],{"className":172,"code":1358,"language":174,"meta":52,"style":52},"{\n  \"notion\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@notionhq\u002Fnotion-mcp-server\"],\n    \"env\": {\n      \"OPENAPI_MCP_HEADERS\": \"{\\\"Authorization\\\":\\\"Bearer ntn_xxx\\\",\\\"Notion-Version\\\":\\\"2022-06-28\\\"}\",\n    },\n  },\n}\n",[50,1360,1361,1365,1372,1382,1397,1403,1455,1459,1463],{"__ignoreMap":52},[178,1362,1363],{"class":180,"line":181},[178,1364,192],{"class":191},[178,1366,1367,1370],{"class":180,"line":188},[178,1368,1369],{"class":198},"  \"notion\"",[178,1371,202],{"class":191},[178,1373,1374,1376,1378,1380],{"class":180,"line":195},[178,1375,507],{"class":198},[178,1377,219],{"class":191},[178,1379,223],{"class":222},[178,1381,226],{"class":191},[178,1383,1384,1386,1388,1390,1392,1395],{"class":180,"line":205},[178,1385,518],{"class":198},[178,1387,235],{"class":191},[178,1389,238],{"class":222},[178,1391,241],{"class":191},[178,1393,1394],{"class":222},"\"@notionhq\u002Fnotion-mcp-server\"",[178,1396,252],{"class":191},[178,1398,1399,1401],{"class":180,"line":213},[178,1400,650],{"class":198},[178,1402,202],{"class":191},[178,1404,1405,1408,1410,1413,1416,1419,1421,1424,1426,1429,1431,1434,1436,1439,1441,1443,1445,1448,1450,1453],{"class":180,"line":229},[178,1406,1407],{"class":198},"      \"OPENAPI_MCP_HEADERS\"",[178,1409,219],{"class":191},[178,1411,1412],{"class":222},"\"{",[178,1414,1415],{"class":198},"\\\"",[178,1417,1418],{"class":222},"Authorization",[178,1420,1415],{"class":198},[178,1422,1423],{"class":222},":",[178,1425,1415],{"class":198},[178,1427,1428],{"class":222},"Bearer ntn_xxx",[178,1430,1415],{"class":198},[178,1432,1433],{"class":222},",",[178,1435,1415],{"class":198},[178,1437,1438],{"class":222},"Notion-Version",[178,1440,1415],{"class":198},[178,1442,1423],{"class":222},[178,1444,1415],{"class":198},[178,1446,1447],{"class":222},"2022-06-28",[178,1449,1415],{"class":198},[178,1451,1452],{"class":222},"}\"",[178,1454,226],{"class":191},[178,1456,1457],{"class":180,"line":255},[178,1458,289],{"class":191},[178,1460,1461],{"class":180,"line":268},[178,1462,295],{"class":191},[178,1464,1465],{"class":180,"line":286},[178,1466,301],{"class":191},[484,1468,1470],{"id":1469},"slack","Slack",[43,1472,1474],{"className":172,"code":1473,"language":174,"meta":52,"style":52},"{\n  \"slack\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@anthropic-ai\u002Fmcp-server-slack\"],\n    \"env\": {\n      \"SLACK_BOT_TOKEN\": \"xoxb-xxx\",\n    },\n  },\n}\n",[50,1475,1476,1480,1487,1497,1512,1518,1530,1534,1538],{"__ignoreMap":52},[178,1477,1478],{"class":180,"line":181},[178,1479,192],{"class":191},[178,1481,1482,1485],{"class":180,"line":188},[178,1483,1484],{"class":198},"  \"slack\"",[178,1486,202],{"class":191},[178,1488,1489,1491,1493,1495],{"class":180,"line":195},[178,1490,507],{"class":198},[178,1492,219],{"class":191},[178,1494,223],{"class":222},[178,1496,226],{"class":191},[178,1498,1499,1501,1503,1505,1507,1510],{"class":180,"line":205},[178,1500,518],{"class":198},[178,1502,235],{"class":191},[178,1504,238],{"class":222},[178,1506,241],{"class":191},[178,1508,1509],{"class":222},"\"@anthropic-ai\u002Fmcp-server-slack\"",[178,1511,252],{"class":191},[178,1513,1514,1516],{"class":180,"line":213},[178,1515,650],{"class":198},[178,1517,202],{"class":191},[178,1519,1520,1523,1525,1528],{"class":180,"line":229},[178,1521,1522],{"class":198},"      \"SLACK_BOT_TOKEN\"",[178,1524,219],{"class":191},[178,1526,1527],{"class":222},"\"xoxb-xxx\"",[178,1529,226],{"class":191},[178,1531,1532],{"class":180,"line":255},[178,1533,289],{"class":191},[178,1535,1536],{"class":180,"line":268},[178,1537,295],{"class":191},[178,1539,1540],{"class":180,"line":286},[178,1541,301],{"class":191},[166,1543,1544],{"id":1544},"知识与记忆",[484,1546,1548],{"id":1547},"memory知识图谱","Memory（知识图谱）",[43,1550,1552],{"className":172,"code":1551,"language":174,"meta":52,"style":52},"{\n  \"memory\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-memory\"],\n  },\n}\n",[50,1553,1554,1558,1565,1575,1590,1594],{"__ignoreMap":52},[178,1555,1556],{"class":180,"line":181},[178,1557,192],{"class":191},[178,1559,1560,1563],{"class":180,"line":188},[178,1561,1562],{"class":198},"  \"memory\"",[178,1564,202],{"class":191},[178,1566,1567,1569,1571,1573],{"class":180,"line":195},[178,1568,507],{"class":198},[178,1570,219],{"class":191},[178,1572,223],{"class":222},[178,1574,226],{"class":191},[178,1576,1577,1579,1581,1583,1585,1588],{"class":180,"line":205},[178,1578,518],{"class":198},[178,1580,235],{"class":191},[178,1582,238],{"class":222},[178,1584,241],{"class":191},[178,1586,1587],{"class":222},"\"@modelcontextprotocol\u002Fserver-memory\"",[178,1589,252],{"class":191},[178,1591,1592],{"class":180,"line":213},[178,1593,295],{"class":191},[178,1595,1596],{"class":180,"line":229},[178,1597,301],{"class":191},[36,1599,1600],{"id":1600},"热门服务器排行",[22,1602,1603],{},"根据社区使用量和 GitHub Stars 排名：",[85,1605,1606,1619],{},[88,1607,1608],{},[91,1609,1610,1613,1616],{},[94,1611,1612],{},"服务器",[94,1614,1615],{},"用途",[94,1617,1618],{},"推荐度",[104,1620,1621,1632,1642,1652,1662,1672,1681,1690,1699,1710],{},[91,1622,1623,1626,1629],{},[109,1624,1625],{},"Context7",[109,1627,1628],{},"代码库文档查询",[109,1630,1631],{},"⭐⭐⭐⭐⭐",[91,1633,1634,1637,1640],{},[109,1635,1636],{},"Playwright",[109,1638,1639],{},"浏览器自动化",[109,1641,1631],{},[91,1643,1644,1647,1650],{},[109,1645,1646],{},"Sequential Thinking",[109,1648,1649],{},"结构化推理",[109,1651,1631],{},[91,1653,1654,1656,1659],{},[109,1655,604],{},[109,1657,1658],{},"代码仓库管理",[109,1660,1661],{},"⭐⭐⭐⭐",[91,1663,1664,1667,1670],{},[109,1665,1666],{},"Filesystem",[109,1668,1669],{},"文件读写",[109,1671,1661],{},[91,1673,1674,1676,1679],{},[109,1675,1155],{},[109,1677,1678],{},"网络搜索",[109,1680,1661],{},[91,1682,1683,1685,1688],{},[109,1684,1018],{},[109,1686,1687],{},"数据库操作",[109,1689,1661],{},[91,1691,1692,1694,1697],{},[109,1693,1355],{},[109,1695,1696],{},"知识库管理",[109,1698,1661],{},[91,1700,1701,1704,1707],{},[109,1702,1703],{},"Fetch",[109,1705,1706],{},"网页内容获取",[109,1708,1709],{},"⭐⭐⭐",[91,1711,1712,1715,1718],{},[109,1713,1714],{},"Memory",[109,1716,1717],{},"持久化记忆",[109,1719,1709],{},[36,1721,1723],{"id":1722},"自定义-mcp-服务器","自定义 MCP 服务器",[166,1725,1727],{"id":1726},"typescript-实现","TypeScript 实现",[43,1729,1733],{"className":1730,"code":1731,"language":1732,"meta":52,"style":52},"language-bash shiki shiki-themes github-light github-dark","pnpm add @modelcontextprotocol\u002Fsdk\n","bash",[50,1734,1735],{"__ignoreMap":52},[178,1736,1737,1741,1744],{"class":180,"line":181},[178,1738,1740],{"class":1739},"sScJk","pnpm",[178,1742,1743],{"class":222}," add",[178,1745,1746],{"class":222}," @modelcontextprotocol\u002Fsdk\n",[43,1748,1752],{"className":1749,"code":1750,"language":1751,"meta":52,"style":52},"language-typescript shiki shiki-themes github-light github-dark","import { McpServer } from \"@modelcontextprotocol\u002Fsdk\u002Fserver\u002Fmcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol\u002Fsdk\u002Fserver\u002Fstdio.js\";\nimport { z } from \"zod\";\n\nconst server = new McpServer({\n  name: \"my-mcp-server\",\n  version: \"1.0.0\",\n});\n\n\u002F\u002F 定义工具\nserver.tool(\n  \"get_weather\",\n  \"获取天气信息\",\n  {\n    city: z.string().describe(\"城市名称\"),\n  },\n  async ({ city }) => {\n    const weather = await fetchWeather(city);\n    return {\n      content: [{ type: \"text\", text: JSON.stringify(weather) }],\n    };\n  },\n);\n\n\u002F\u002F 定义资源\nserver.resource(\"config\", \"config:\u002F\u002Fapp\", async (uri) => ({\n  contents: [\n    {\n      uri: uri.href,\n      mimeType: \"application\u002Fjson\",\n      text: JSON.stringify(config),\n    },\n  ],\n}));\n\n\u002F\u002F 启动\nconst transport = new StdioServerTransport();\nawait server.connect(transport);\n","typescript",[50,1753,1754,1772,1786,1800,1806,1826,1836,1846,1851,1855,1860,1871,1878,1885,1891,1915,1920,1942,1962,1970,1994,2000,2005,2011,2016,2022,2059,2065,2071,2077,2088,2103,2108,2114,2120,2125,2131,2149],{"__ignoreMap":52},[178,1755,1756,1760,1763,1766,1769],{"class":180,"line":181},[178,1757,1759],{"class":1758},"szBVR","import",[178,1761,1762],{"class":191}," { McpServer } ",[178,1764,1765],{"class":1758},"from",[178,1767,1768],{"class":222}," \"@modelcontextprotocol\u002Fsdk\u002Fserver\u002Fmcp.js\"",[178,1770,1771],{"class":191},";\n",[178,1773,1774,1776,1779,1781,1784],{"class":180,"line":188},[178,1775,1759],{"class":1758},[178,1777,1778],{"class":191}," { StdioServerTransport } ",[178,1780,1765],{"class":1758},[178,1782,1783],{"class":222}," \"@modelcontextprotocol\u002Fsdk\u002Fserver\u002Fstdio.js\"",[178,1785,1771],{"class":191},[178,1787,1788,1790,1793,1795,1798],{"class":180,"line":195},[178,1789,1759],{"class":1758},[178,1791,1792],{"class":191}," { z } ",[178,1794,1765],{"class":1758},[178,1796,1797],{"class":222}," \"zod\"",[178,1799,1771],{"class":191},[178,1801,1802],{"class":180,"line":205},[178,1803,1805],{"emptyLinePlaceholder":1804},true,"\n",[178,1807,1808,1811,1814,1817,1820,1823],{"class":180,"line":213},[178,1809,1810],{"class":1758},"const",[178,1812,1813],{"class":198}," server",[178,1815,1816],{"class":1758}," =",[178,1818,1819],{"class":1758}," new",[178,1821,1822],{"class":1739}," McpServer",[178,1824,1825],{"class":191},"({\n",[178,1827,1828,1831,1834],{"class":180,"line":229},[178,1829,1830],{"class":191},"  name: ",[178,1832,1833],{"class":222},"\"my-mcp-server\"",[178,1835,226],{"class":191},[178,1837,1838,1841,1844],{"class":180,"line":255},[178,1839,1840],{"class":191},"  version: ",[178,1842,1843],{"class":222},"\"1.0.0\"",[178,1845,226],{"class":191},[178,1847,1848],{"class":180,"line":268},[178,1849,1850],{"class":191},"});\n",[178,1852,1853],{"class":180,"line":286},[178,1854,1805],{"emptyLinePlaceholder":1804},[178,1856,1857],{"class":180,"line":292},[178,1858,1859],{"class":184},"\u002F\u002F 定义工具\n",[178,1861,1862,1865,1868],{"class":180,"line":298},[178,1863,1864],{"class":191},"server.",[178,1866,1867],{"class":1739},"tool",[178,1869,1870],{"class":191},"(\n",[178,1872,1873,1876],{"class":180,"line":468},[178,1874,1875],{"class":222},"  \"get_weather\"",[178,1877,226],{"class":191},[178,1879,1880,1883],{"class":180,"line":473},[178,1881,1882],{"class":222},"  \"获取天气信息\"",[178,1884,226],{"class":191},[178,1886,1888],{"class":180,"line":1887},14,[178,1889,1890],{"class":191},"  {\n",[178,1892,1894,1897,1900,1903,1906,1909,1912],{"class":180,"line":1893},15,[178,1895,1896],{"class":191},"    city: z.",[178,1898,1899],{"class":1739},"string",[178,1901,1902],{"class":191},"().",[178,1904,1905],{"class":1739},"describe",[178,1907,1908],{"class":191},"(",[178,1910,1911],{"class":222},"\"城市名称\"",[178,1913,1914],{"class":191},"),\n",[178,1916,1918],{"class":180,"line":1917},16,[178,1919,295],{"class":191},[178,1921,1923,1926,1929,1933,1936,1939],{"class":180,"line":1922},17,[178,1924,1925],{"class":1758},"  async",[178,1927,1928],{"class":191}," ({ ",[178,1930,1932],{"class":1931},"s4XuR","city",[178,1934,1935],{"class":191}," }) ",[178,1937,1938],{"class":1758},"=>",[178,1940,1941],{"class":191}," {\n",[178,1943,1945,1948,1951,1953,1956,1959],{"class":180,"line":1944},18,[178,1946,1947],{"class":1758},"    const",[178,1949,1950],{"class":198}," weather",[178,1952,1816],{"class":1758},[178,1954,1955],{"class":1758}," await",[178,1957,1958],{"class":1739}," fetchWeather",[178,1960,1961],{"class":191},"(city);\n",[178,1963,1965,1968],{"class":180,"line":1964},19,[178,1966,1967],{"class":1758},"    return",[178,1969,1941],{"class":191},[178,1971,1973,1976,1979,1982,1985,1988,1991],{"class":180,"line":1972},20,[178,1974,1975],{"class":191},"      content: [{ type: ",[178,1977,1978],{"class":222},"\"text\"",[178,1980,1981],{"class":191},", text: ",[178,1983,1984],{"class":198},"JSON",[178,1986,1987],{"class":191},".",[178,1989,1990],{"class":1739},"stringify",[178,1992,1993],{"class":191},"(weather) }],\n",[178,1995,1997],{"class":180,"line":1996},21,[178,1998,1999],{"class":191},"    };\n",[178,2001,2003],{"class":180,"line":2002},22,[178,2004,295],{"class":191},[178,2006,2008],{"class":180,"line":2007},23,[178,2009,2010],{"class":191},");\n",[178,2012,2014],{"class":180,"line":2013},24,[178,2015,1805],{"emptyLinePlaceholder":1804},[178,2017,2019],{"class":180,"line":2018},25,[178,2020,2021],{"class":184},"\u002F\u002F 定义资源\n",[178,2023,2025,2027,2030,2032,2035,2037,2040,2042,2045,2048,2051,2054,2056],{"class":180,"line":2024},26,[178,2026,1864],{"class":191},[178,2028,2029],{"class":1739},"resource",[178,2031,1908],{"class":191},[178,2033,2034],{"class":222},"\"config\"",[178,2036,241],{"class":191},[178,2038,2039],{"class":222},"\"config:\u002F\u002Fapp\"",[178,2041,241],{"class":191},[178,2043,2044],{"class":1758},"async",[178,2046,2047],{"class":191}," (",[178,2049,2050],{"class":1931},"uri",[178,2052,2053],{"class":191},") ",[178,2055,1938],{"class":1758},[178,2057,2058],{"class":191}," ({\n",[178,2060,2062],{"class":180,"line":2061},27,[178,2063,2064],{"class":191},"  contents: [\n",[178,2066,2068],{"class":180,"line":2067},28,[178,2069,2070],{"class":191},"    {\n",[178,2072,2074],{"class":180,"line":2073},29,[178,2075,2076],{"class":191},"      uri: uri.href,\n",[178,2078,2080,2083,2086],{"class":180,"line":2079},30,[178,2081,2082],{"class":191},"      mimeType: ",[178,2084,2085],{"class":222},"\"application\u002Fjson\"",[178,2087,226],{"class":191},[178,2089,2091,2094,2096,2098,2100],{"class":180,"line":2090},31,[178,2092,2093],{"class":191},"      text: ",[178,2095,1984],{"class":198},[178,2097,1987],{"class":191},[178,2099,1990],{"class":1739},[178,2101,2102],{"class":191},"(config),\n",[178,2104,2106],{"class":180,"line":2105},32,[178,2107,289],{"class":191},[178,2109,2111],{"class":180,"line":2110},33,[178,2112,2113],{"class":191},"  ],\n",[178,2115,2117],{"class":180,"line":2116},34,[178,2118,2119],{"class":191},"}));\n",[178,2121,2123],{"class":180,"line":2122},35,[178,2124,1805],{"emptyLinePlaceholder":1804},[178,2126,2128],{"class":180,"line":2127},36,[178,2129,2130],{"class":184},"\u002F\u002F 启动\n",[178,2132,2134,2136,2139,2141,2143,2146],{"class":180,"line":2133},37,[178,2135,1810],{"class":1758},[178,2137,2138],{"class":198}," transport",[178,2140,1816],{"class":1758},[178,2142,1819],{"class":1758},[178,2144,2145],{"class":1739}," StdioServerTransport",[178,2147,2148],{"class":191},"();\n",[178,2150,2152,2155,2158,2161],{"class":180,"line":2151},38,[178,2153,2154],{"class":1758},"await",[178,2156,2157],{"class":191}," server.",[178,2159,2160],{"class":1739},"connect",[178,2162,2163],{"class":191},"(transport);\n",[166,2165,2167],{"id":2166},"python-实现","Python 实现",[43,2169,2171],{"className":1730,"code":2170,"language":1732,"meta":52,"style":52},"pip install mcp\n",[50,2172,2173],{"__ignoreMap":52},[178,2174,2175,2178,2181],{"class":180,"line":181},[178,2176,2177],{"class":1739},"pip",[178,2179,2180],{"class":222}," install",[178,2182,2183],{"class":222}," mcp\n",[43,2185,2189],{"className":2186,"code":2187,"language":2188,"meta":52,"style":52},"language-python shiki shiki-themes github-light github-dark","from mcp.server.fastmcp import FastMCP\n\nmcp = FastMCP(\"my-server\")\n\n@mcp.tool()\ndef get_weather(city: str) -> str:\n    \"\"\"获取天气信息\"\"\"\n    # 实现逻辑\n    return f\"{city} 的天气：晴，25°C\"\n\n@mcp.resource(\"config:\u002F\u002Fapp\")\ndef get_config() -> str:\n    \"\"\"应用配置\"\"\"\n    return json.dumps(config)\n\nif __name__ == \"__main__\":\n    mcp.run()\n","python",[50,2190,2191,2203,2207,2224,2228,2236,2258,2263,2268,2289,2293,2304,2318,2323,2330,2334,2350],{"__ignoreMap":52},[178,2192,2193,2195,2198,2200],{"class":180,"line":181},[178,2194,1765],{"class":1758},[178,2196,2197],{"class":191}," mcp.server.fastmcp ",[178,2199,1759],{"class":1758},[178,2201,2202],{"class":191}," FastMCP\n",[178,2204,2205],{"class":180,"line":188},[178,2206,1805],{"emptyLinePlaceholder":1804},[178,2208,2209,2212,2215,2218,2221],{"class":180,"line":195},[178,2210,2211],{"class":191},"mcp ",[178,2213,2214],{"class":1758},"=",[178,2216,2217],{"class":191}," FastMCP(",[178,2219,2220],{"class":222},"\"my-server\"",[178,2222,2223],{"class":191},")\n",[178,2225,2226],{"class":180,"line":205},[178,2227,1805],{"emptyLinePlaceholder":1804},[178,2229,2230,2233],{"class":180,"line":213},[178,2231,2232],{"class":1739},"@mcp.tool",[178,2234,2235],{"class":191},"()\n",[178,2237,2238,2241,2244,2247,2250,2253,2255],{"class":180,"line":229},[178,2239,2240],{"class":1758},"def",[178,2242,2243],{"class":1739}," get_weather",[178,2245,2246],{"class":191},"(city: ",[178,2248,2249],{"class":198},"str",[178,2251,2252],{"class":191},") -> ",[178,2254,2249],{"class":198},[178,2256,2257],{"class":191},":\n",[178,2259,2260],{"class":180,"line":255},[178,2261,2262],{"class":222},"    \"\"\"获取天气信息\"\"\"\n",[178,2264,2265],{"class":180,"line":268},[178,2266,2267],{"class":184},"    # 实现逻辑\n",[178,2269,2270,2272,2275,2278,2281,2283,2286],{"class":180,"line":286},[178,2271,1967],{"class":1758},[178,2273,2274],{"class":1758}," f",[178,2276,2277],{"class":222},"\"",[178,2279,2280],{"class":198},"{",[178,2282,1932],{"class":191},[178,2284,2285],{"class":198},"}",[178,2287,2288],{"class":222}," 的天气：晴，25°C\"\n",[178,2290,2291],{"class":180,"line":292},[178,2292,1805],{"emptyLinePlaceholder":1804},[178,2294,2295,2298,2300,2302],{"class":180,"line":298},[178,2296,2297],{"class":1739},"@mcp.resource",[178,2299,1908],{"class":191},[178,2301,2039],{"class":222},[178,2303,2223],{"class":191},[178,2305,2306,2308,2311,2314,2316],{"class":180,"line":468},[178,2307,2240],{"class":1758},[178,2309,2310],{"class":1739}," get_config",[178,2312,2313],{"class":191},"() -> ",[178,2315,2249],{"class":198},[178,2317,2257],{"class":191},[178,2319,2320],{"class":180,"line":473},[178,2321,2322],{"class":222},"    \"\"\"应用配置\"\"\"\n",[178,2324,2325,2327],{"class":180,"line":1887},[178,2326,1967],{"class":1758},[178,2328,2329],{"class":191}," json.dumps(config)\n",[178,2331,2332],{"class":180,"line":1893},[178,2333,1805],{"emptyLinePlaceholder":1804},[178,2335,2336,2339,2342,2345,2348],{"class":180,"line":1917},[178,2337,2338],{"class":1758},"if",[178,2340,2341],{"class":198}," __name__",[178,2343,2344],{"class":1758}," ==",[178,2346,2347],{"class":222}," \"__main__\"",[178,2349,2257],{"class":191},[178,2351,2352],{"class":180,"line":1922},[178,2353,2354],{"class":191},"    mcp.run()\n",[36,2356,2357],{"id":2357},"调试",[166,2359,2361],{"id":2360},"mcp-inspector","MCP Inspector",[43,2363,2365],{"className":1730,"code":2364,"language":1732,"meta":52,"style":52},"npx @modelcontextprotocol\u002Finspector npx -y my-mcp-server\n",[50,2366,2367],{"__ignoreMap":52},[178,2368,2369,2372,2375,2378,2381],{"class":180,"line":181},[178,2370,2371],{"class":1739},"npx",[178,2373,2374],{"class":222}," @modelcontextprotocol\u002Finspector",[178,2376,2377],{"class":222}," npx",[178,2379,2380],{"class":198}," -y",[178,2382,2383],{"class":222}," my-mcp-server\n",[22,2385,2386],{},"浏览器打开 Inspector 界面，可以测试工具调用和资源访问。",[166,2388,2389],{"id":2389},"日志",[43,2391,2393],{"className":172,"code":2392,"language":174,"meta":52,"style":52},"{\n  \"my-server\": {\n    \"command\": \"node\",\n    \"args\": [\"server.js\"],\n    \"env\": {\n      \"DEBUG\": \"mcp:*\",\n      \"FASTMCP_LOG_LEVEL\": \"DEBUG\",\n    },\n  },\n}\n",[50,2394,2395,2399,2406,2417,2428,2434,2446,2458,2462,2466],{"__ignoreMap":52},[178,2396,2397],{"class":180,"line":181},[178,2398,192],{"class":191},[178,2400,2401,2404],{"class":180,"line":188},[178,2402,2403],{"class":198},"  \"my-server\"",[178,2405,202],{"class":191},[178,2407,2408,2410,2412,2415],{"class":180,"line":195},[178,2409,507],{"class":198},[178,2411,219],{"class":191},[178,2413,2414],{"class":222},"\"node\"",[178,2416,226],{"class":191},[178,2418,2419,2421,2423,2426],{"class":180,"line":205},[178,2420,518],{"class":198},[178,2422,235],{"class":191},[178,2424,2425],{"class":222},"\"server.js\"",[178,2427,252],{"class":191},[178,2429,2430,2432],{"class":180,"line":213},[178,2431,650],{"class":198},[178,2433,202],{"class":191},[178,2435,2436,2439,2441,2444],{"class":180,"line":229},[178,2437,2438],{"class":198},"      \"DEBUG\"",[178,2440,219],{"class":191},[178,2442,2443],{"class":222},"\"mcp:*\"",[178,2445,226],{"class":191},[178,2447,2448,2451,2453,2456],{"class":180,"line":255},[178,2449,2450],{"class":198},"      \"FASTMCP_LOG_LEVEL\"",[178,2452,219],{"class":191},[178,2454,2455],{"class":222},"\"DEBUG\"",[178,2457,226],{"class":191},[178,2459,2460],{"class":180,"line":268},[178,2461,289],{"class":191},[178,2463,2464],{"class":180,"line":286},[178,2465,295],{"class":191},[178,2467,2468],{"class":180,"line":292},[178,2469,301],{"class":191},[36,2471,2472],{"id":2472},"安全注意事项",[57,2474,2475,2478,2485,2488],{},[60,2476,2477],{},"MCP 服务器以本地进程运行，拥有系统权限",[60,2479,2480,2481,2484],{},"谨慎配置 ",[50,2482,2483],{},"autoApprove","，敏感操作应手动确认",[60,2486,2487],{},"不要在 MCP 配置中硬编码密钥，使用环境变量",[60,2489,2490],{},"审查第三方 MCP 服务器的源码",[36,2492,2493],{"id":2493},"推荐上手顺序",[22,2495,2496],{},"建议按这个顺序理解和落地：",[2498,2499,2500,2503,2506,2509,2512],"ol",{},[60,2501,2502],{},"先理解 MCP 的客户端 \u002F 服务器关系",[60,2504,2505],{},"再接一个最简单的文件系统或搜索服务器",[60,2507,2508],{},"再接 GitHub、数据库、浏览器等更强工具",[60,2510,2511],{},"再开始写自己的服务器",[60,2513,2514],{},"最后再做团队级配置和权限治理",[36,2516,2517],{"id":2517},"常见问题",[166,2519,2521],{"id":2520},"mcp-和插件-sdk-是什么关系","MCP 和插件 \u002F SDK 是什么关系",[22,2523,2524],{},"可以把 MCP 理解成更偏“标准化接线方式”，而插件和 SDK 更像“具体实现和接入载体”。",[166,2526,2528],{"id":2527},"为什么接了很多-mcp代理还是不好用","为什么接了很多 MCP，代理还是不好用",[22,2530,2531],{},"通常不是工具太少，而是：",[57,2533,2534,2537,2540,2543],{},[60,2535,2536],{},"工具太多但没有明确用途",[60,2538,2539],{},"权限太大或太小",[60,2541,2542],{},"规则和工作流没跟上",[60,2544,2545],{},"客户端没有把工具调用策略管好",[166,2547,2549],{"id":2548},"一开始该接哪些-mcp","一开始该接哪些 MCP",[22,2551,2552],{},"大多数开发者的起步组合通常是：",[57,2554,2555,2557,2559,2562],{},[60,2556,486],{},[60,2558,604],{},[60,2560,2561],{},"搜索 \u002F Fetch",[60,2563,2564],{},"文档类服务",[36,2566,2567],{"id":2567},"延伸阅读",[57,2569,2570,2576,2582],{},[60,2571,2572],{},[25,2573,2575],{"href":2574},"\u002Fdocs\u002Fmcp-server-development","MCP 服务器开发指南",[60,2577,2578],{},[25,2579,2581],{"href":2580},"\u002Fdocs\u002Fai-coding-rules","AI 编程助手规则配置",[60,2583,2584],{},[25,2585,2587],{"href":2586},"\u002Fdocs\u002Fai-agents-cli","AI 终端代理与自主工具",[36,2589,2590],{"id":2590},"参考链接",[57,2592,2593,2600,2608,2616,2624,2632],{},[60,2594,2595,2599],{},[25,2596,2598],{"href":27,"rel":2597},[29],"MCP 官网"," — 规范与文档",[60,2601,2602,2607],{},[25,2603,2606],{"href":2604,"rel":2605},"https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fservers",[29],"MCP Servers"," — 官方服务器集合",[60,2609,2610,2615],{},[25,2611,2614],{"href":2612,"rel":2613},"https:\u002F\u002Fdocs.docker.com\u002Fai\u002Fmcp-catalog-and-toolkit\u002Ftoolkit\u002F",[29],"Docker MCP Toolkit"," — Docker 对 MCP 的支持",[60,2617,2618,2623],{},[25,2619,2622],{"href":2620,"rel":2621},"https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Ftypescript-sdk",[29],"MCP TypeScript SDK"," — TS SDK",[60,2625,2626,2631],{},[25,2627,2630],{"href":2628,"rel":2629},"https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fpython-sdk",[29],"MCP Python SDK"," — Python SDK",[60,2633,2634,2639],{},[25,2635,2638],{"href":2636,"rel":2637},"https:\u002F\u002Fgithub.com\u002Fpunkpeye\u002Fawesome-mcp-servers",[29],"Awesome MCP Servers"," — 社区精选",[2641,2642,2643],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":52,"searchDepth":188,"depth":188,"links":2645},[2646,2647,2648,2653,2661,2662,2666,2670,2671,2672,2677,2678],{"id":38,"depth":188,"text":38},{"id":71,"depth":188,"text":72},{"id":164,"depth":188,"text":164,"children":2649},[2650,2651,2652],{"id":168,"depth":195,"text":169},{"id":304,"depth":195,"text":305},{"id":379,"depth":195,"text":380},{"id":478,"depth":188,"text":479,"children":2654},[2655,2656,2657,2658,2659,2660],{"id":482,"depth":195,"text":482},{"id":844,"depth":195,"text":845},{"id":939,"depth":195,"text":939},{"id":1151,"depth":195,"text":1151},{"id":1351,"depth":195,"text":1351},{"id":1544,"depth":195,"text":1544},{"id":1600,"depth":188,"text":1600},{"id":1722,"depth":188,"text":1723,"children":2663},[2664,2665],{"id":1726,"depth":195,"text":1727},{"id":2166,"depth":195,"text":2167},{"id":2357,"depth":188,"text":2357,"children":2667},[2668,2669],{"id":2360,"depth":195,"text":2361},{"id":2389,"depth":195,"text":2389},{"id":2472,"depth":188,"text":2472},{"id":2493,"depth":188,"text":2493},{"id":2517,"depth":188,"text":2517,"children":2673},[2674,2675,2676],{"id":2520,"depth":195,"text":2521},{"id":2527,"depth":195,"text":2528},{"id":2548,"depth":195,"text":2549},{"id":2567,"depth":188,"text":2567},{"id":2590,"depth":188,"text":2590},{"path":2574,"title":2575,"description":2680,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"Model Context Protocol 服务器开发教程，为 AI 代理提供自定义工具",{"path":2682,"title":2683,"description":2684,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fnanobot","nanobot - 超轻量级 AI 助手","香港大学开发的 4000 行代码实现的个人 AI 助手，支持多平台聊天集成",[2686,2687,2688],"希望把零散经验整理成长期可复用工作流的人","正在使用 AI 工具、Agent 或自动化工作流的人","希望阅读时顺手建立自己的操作清单或收藏体系的人",[2690,2691,2692],"先浏览标题、摘要和目录，带着问题阅读会更高效","确认模型供应商、API Key、CLI 工具链与本地资源是否已准备好","如果页面里提到相关文档，尽量一起打开对照，效果通常更完整",[2694,2697,2701,2705],{"path":159,"title":160,"description":2695,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":2696,"publishedAt":2696,"icon":13},"理解 skills 的作用、目录结构、编写方式，以及它与 MCP 的关系","2026-03-08",{"path":2698,"title":2699,"description":2700,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fai-local-models","本地 AI 模型部署","Ollama、LM Studio、vLLM 本地大模型运行与 API 调用",{"path":2702,"title":2703,"description":2704,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Flocal-llm-deployment","本地 LLM 部署指南","使用 Ollama、vLLM、LM Studio 在本地运行大语言模型",{"path":2580,"title":2581,"description":2706,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"Cursor Rules、Claude Projects、Kiro Steering 等 AI 编程助手的规则与上下文配置",1776215713426]