云计算百科
云计算领域专业知识百科平台

第二章:MCP服务器分类

Chapter 2: MCP服务器分类


🌟 从上一章到本章

在第一章:Model Context Protocol (MCP)中,我们学习了如何通过MCP让LLM安全访问文件系统。现在,让我们想象一个更复杂的需求:假设你需要让LLM同时处理文件、查询数据库、分析代码仓库,甚至连接云端服务。这时候问题来了——如何快速找到适合这些任务的服务器?

本章将介绍MCP服务器的三类分类体系(官方示例、官方集成、社区开发),帮助你像“超市购物”一样,根据需求快速选择或构建服务器!


🎯 中心用例:选择适合任务的服务器

假设你正在开发一个AI助手,需要以下功能:

  • 读取本地文件(如PDF合同)
  • 查询公司数据库(如客户信息)
  • 分析GitHub仓库(如项目代码变更)
    • 对于文件操作,你可以直接使用官方提供的Reference服务器(如Filesystem)
    • 对于数据库访问,可能需要集成Third-Party服务器(如AWS或PostgreSQL)
    • 对于GitHub分析,社区可能已开发了现成的Community服务器

    🔍 三类服务器的核心区别

    MCP将服务器分为三类,用不同“信任等级”和“使用场景”帮助开发者快速决策:

    1. Reference(官方示例)

    • 信任度:最高(由MCP团队维护)
    • 用途:学习MCP标准、快速验证功能
    • 示例:# 启动官方文件系统服务器(安全目录白名单)
      npx -y @modelcontextprotocol/server-filesystem /my/safe/directory

    2. Third-Party(官方集成)

    • 信任度:高(由知名公司维护)
    • 用途:连接主流工具(如AWS、GitHub、Docker)
    • 示例:// 配置AWS服务器(需提供API密钥)
      {
      "aws": {
      "command": "npx",
      "args": ["@vendor/server-aws"],
      "env": {
      "AWS_ACCESS_KEY": "your_key"
      }
      }
      }

    3. Community(社区开发)

    • 信任度:中/低(需自行验证)
    • 用途:探索创新场景(如小众工具、实验性功能)
    • 示例:# 安装社区开发的Nginx服务器
      git clone https://github.com/user/nginx-mcp-server
      cd nginx-mcp-server && npm start

    🛠️ 如何根据需求选择?

    步骤1:确定需求类型

    场景推荐类别例子
    核心功能(文件/数据库) Reference Filesystem, PostgreSQL
    企业级工具集成 Third-Party AWS, GitHub, Docker
    小众需求(如游戏引擎) Community Unity编辑器控制、3D模型渲染

    步骤2:配置服务器

    在客户端配置文件中注册服务器,例如:

    {
    "mcpServers": {
    "文件系统": { // Reference服务器
    "command": "npx",
    "args": ["@modelcontextprotocol/server-filesystem", "/data"]
    },
    "数据库": { // Third-Party服务器
    "command": "npx",
    "args": ["@aws/server-postgres", "localhost:5432"]
    },
    "代码分析": { // Community服务器
    "command": "python",
    "args": ["./custom-git-server.py"]
    }
    }
    }


    🕵️ 内部实现:分类如何影响调用流程?

    以下时序图展示LLM调用不同分类服务器的过程:

    #mermaid-svg-qPxMNGErRGySIuk5 {font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qPxMNGErRGySIuk5 .error-icon{fill:#552222;}#mermaid-svg-qPxMNGErRGySIuk5 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-qPxMNGErRGySIuk5 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-qPxMNGErRGySIuk5 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-qPxMNGErRGySIuk5 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-qPxMNGErRGySIuk5 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-qPxMNGErRGySIuk5 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-qPxMNGErRGySIuk5 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-qPxMNGErRGySIuk5 .marker.cross{stroke:#333333;}#mermaid-svg-qPxMNGErRGySIuk5 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-qPxMNGErRGySIuk5 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-qPxMNGErRGySIuk5 text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-qPxMNGErRGySIuk5 .actor-line{stroke:grey;}#mermaid-svg-qPxMNGErRGySIuk5 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-qPxMNGErRGySIuk5 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-qPxMNGErRGySIuk5 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-qPxMNGErRGySIuk5 .sequenceNumber{fill:white;}#mermaid-svg-qPxMNGErRGySIuk5 #sequencenumber{fill:#333;}#mermaid-svg-qPxMNGErRGySIuk5 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-qPxMNGErRGySIuk5 .messageText{fill:#333;stroke:#333;}#mermaid-svg-qPxMNGErRGySIuk5 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-qPxMNGErRGySIuk5 .labelText,#mermaid-svg-qPxMNGErRGySIuk5 .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-qPxMNGErRGySIuk5 .loopText,#mermaid-svg-qPxMNGErRGySIuk5 .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-qPxMNGErRGySIuk5 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-qPxMNGErRGySIuk5 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-qPxMNGErRGySIuk5 .noteText,#mermaid-svg-qPxMNGErRGySIuk5 .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-qPxMNGErRGySIuk5 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-qPxMNGErRGySIuk5 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-qPxMNGErRGySIuk5 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-qPxMNGErRGySIuk5 .actorPopupMenu{position:absolute;}#mermaid-svg-qPxMNGErRGySIuk5 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-qPxMNGErRGySIuk5 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-qPxMNGErRGySIuk5 .actor-man circle,#mermaid-svg-qPxMNGErRGySIuk5 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-qPxMNGErRGySIuk5 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    LLM

    MCP客户端

    Third-Party服务器

    GitHub API

    Reference服务器

    本地文件系统

    请求"分析代码仓库"

    转发请求给GitHub服务器

    获取仓库数据

    返回代码变更记录

    格式化结果

    请求"读取合同文件"

    转发请求给文件系统

    读取合同.pdf

    返回文件内容

    返回文本内容

    LLM

    MCP客户端

    Third-Party服务器

    GitHub API

    Reference服务器

    本地文件系统


    💡 总结与展望

    本章我们学到:

  • 三类服务器的区别:官方示例→高信任,官方集成→强功能,社区开发→高创新
  • 选择方法:根据需求类型快速定位服务器
  • 配置示例:如何在客户端注册不同类别的服务器
  • 接下来,我们将深入MCP传输机制,探索服务器与LLM如何通过不同协议(如STDIO、HTTP)高效通信——这将解答“为什么某些服务器启动更快”等问题!

    🚀 下一步:尝试在你的项目中混合使用不同类别的服务器,比如同时配置文件系统和GitHub分析工具!

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 第二章:MCP服务器分类
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!