项目简介

MCP 服务检索与匹配系统(MCP-OS)是一个基于 Model Context Protocol (MCP) 构建的服务,其主要目的是帮助大型语言模型(LLM)或智能代理在众多可用的 MCP 服务器中,根据当前任务需求,快速准确地找到最相关的服务器。它通过暴露一个工具(Tool)和相关资源(Resource),使得 LLM 可以向其发起请求,获取匹配的 MCP 服务器信息。

主要功能点

  • MCP 智能匹配: 根据 LLM 提供的任务描述,利用 LLM 或向量检索技术(当前版本主要通过调用外部LLM)识别并推荐最相关的 MCP 服务器。
  • MCP 元数据暴露: 将已知的 MCP 服务器(通过配置文件加载)的描述信息作为标准的 MCP 资源(Resource)暴露给 LLM,方便 LLM 查询详细信息。
  • 匹配工具提供: 提供一个名为 'match_mcp' 的 MCP 工具(Tool),LLM 可以调用此工具并传入任务描述来执行匹配操作。
  • 选择指导 Prompt: 提供一个 Prompt 模板,帮助 LLM 理解如何根据提供的 MCP 信息做出选择。
  • 多种传输协议支持: 支持 Stdio、HTTP/SSE 等多种传输协议与 LLM 客户端通信。

安装步骤

  1. 克隆仓库: 使用 Git 命令将项目代码克隆到本地目录。
    git clone https://github.com/giao-123-sun/MCP-OS.git
    cd MCP-OS
  2. 安装依赖: 进入项目目录,使用 npm 或 yarn 安装项目所需的依赖包。
    npm install
    # 或 yarn install
  3. 配置 MCP 列表: 创建一个 'mcp_list.json' 文件(或指定其他路径),列出您希望该服务知道的 MCP 服务器的元数据。文件格式可参考仓库中的示例。示例格式如下:
    {
      "web-scraper": {
        "name": "Web Scraper MCP",
        "description": "Fetches HTML and parses DOM.",
        "functions": ["fetchHtml", "querySelector"]
      },
      "calc": {
        "name": "Calculator MCP",
        "description": "Performs arithmetic calculations.",
        "functions": ["add", "subtract", "multiply", "divide"]
      }
      // 更多 MCP...
    }
  4. 构建索引(可选,取决于具体实现): 根据项目 README,可能需要构建一个用于检索的索引。如果使用基于 LLM 的匹配,此步骤可能不是强制要求或需要调整。请参考项目文档。
    # 示例命令,可能需要根据实际代码调整
    npm run build:index --src ./mcp_list.json --out ./index
  5. 启动服务器: 运行命令启动 MCP 检索服务。
    npm run start:retriever
    服务器默认会在本地地址 '127.0.0.1' 的特定端口(例如 5500)上启动,并通过配置的协议(如 Stdio 或 HTTP/SSE)监听连接。

服务器配置(供 MCP 客户端参考)

MCP 客户端(如 LLM 应用程序)需要配置连接到此 MCP 服务。典型的配置信息是一个 JSON 对象,包含服务的名称、启动命令及其参数。以下是一个配置示例,您需要根据您的实际安装路径调整 'command':

{
  "mcpServers": {
    "mcp-retriever": {
      // 服务的唯一标识符
      "name": "mcp-retriever", 
      // 启动 MCP 服务器进程的命令(请替换为您的实际安装路径)
      "command": "/absolute/path/to/MCP-OS/packages/retriever/dist/index.js", 
      // 传递给命令的参数(如果需要,例如指定配置文件路径)
      "args": ["--mcp-list", "./mcp_list.json"] 
      // 其他可能的配置,如传输协议、端口等,取决于客户端和服务器的实现
      // "transport": "stdio", 
      // "port": 5500 
    }
    // 其他 MCP 服务器配置...
  }
}

LLM 客户端加载此配置后,将能够发现并与该 MCP 检索服务建立连接。

基本使用方法

一旦 LLM 客户端成功连接到此 MCP 检索服务,LLM 可以通过标准的 MCP 协议与之交互:

  1. 列出工具 (ListTools): LLM 可以发现 'match_mcp' 工具。
  2. 调用工具 (CallTool): LLM 调用 'match_mcp' 工具,传入 'taskDescription' 参数(例如:'{"taskDescription": "查找能帮我处理待办事项的工具"}')。
  3. 接收响应: 服务器执行匹配逻辑,并将匹配到的 MCP 服务器 ID 及相关信息作为工具调用的结果返回给 LLM。LLM 可以解析此结果,了解哪些 MCP 服务器可能有用。
  4. 列出资源 (ListResources): LLM 可以获取所有已知 MCP 的列表(作为资源)。
  5. 读取资源 (ReadResource): LLM 可以通过 MCP URI ('mcp:///mcp_id') 读取某个特定 MCP 的详细描述信息。
  6. 使用 Prompt (GetPrompt): LLM 可以获取 'mcp_selection_guide' Prompt,该 Prompt 可能会提供关于如何选择 MCP 的指导性文本和可用的 MCP 资源嵌入。

通过这些交互,LLM 可以有效地利用此服务来发现和理解哪些 MCP 服务器最适合执行当前任务,从而优化其决策过程和减少上下文开销。

信息

分类

AI与计算