项目简介

此项目是 GitHub 仓库 'ai_agent' 中的一个重要组成部分,展示了如何使用 Model Context Protocol (MCP) SDK 构建一个后端服务器,为大型语言模型 (LLM) 客户端提供上下文信息和外部功能(工具)。它包含了两个变种:一个使用 Server-Sent Events (SSE) 传输协议,另一个使用 Stdio (标准输入输出) 传输协议。

这个服务器托管了两个简单的工具:一个用于计算身体质量指数 (BMI),另一个用于获取指定城市的天气信息。

主要功能点

  • 符合MCP协议标准:通过 Model Context Protocol (MCP) 与兼容的客户端进行标准化通信。
  • 工具托管与发现:注册并托管了 BMI 计算和天气查询两个工具,允许连接的 LLM 客户端动态发现这些工具及其使用方法。
  • 处理工具调用:接收并执行 LLM 客户端发起的工具调用请求,并将结果返回。
  • 支持多种传输协议:提供了基于 SSE 和 Stdio 的实现,适应不同的部署和集成场景。
  • 为LLM提供外部能力:使 LLM 能够通过结构化的方式与外部世界(如计算、外部API)进行交互。

安装步骤

在运行 MCP 服务器之前,请确保您的系统已安装 Node.js 和 npm (或 yarn)。

  1. 克隆仓库
    git clone https://github.com/anoochit/ai_agent.git
    cd ai_agent
  2. 安装依赖:进入您想运行的服务器目录(例如 'mcp_server' 用于 SSE,或 'mcp_server_stdio' 用于 Stdio),然后安装依赖。
    # 以 SSE 服务器为例
    cd mcp_server
    npm install
    如果您想运行 Stdio 服务器,请进入 'mcp_server_stdio' 目录并执行 'npm install'。
  3. 配置 API Key:天气查询工具需要 OpenWeatherMap API Key。在 'ai_agent' 仓库的根目录下(与 'package.json' 同级)创建一个名为 '.env' 的文件,并添加以下内容:
    OPEN_WEATHER_MAP_API_KEY=您的OpenWeatherMap API密钥
    将 '您的OpenWeatherMap API密钥' 替换为您实际的密钥。
  4. 构建项目
    # 在 mcp_server 目录下
    npm run build
    如果您在 'mcp_server_stdio' 目录下,同样执行 'npm run build'。

服务器配置

MCP 服务器是为 MCP 客户端(通常是 LLM 应用或框架,如 Agent Development Kit)提供服务的。MCP 客户端需要配置如何连接到您的服务器。以下是一个客户端配置的示例描述,您无需手动创建这些文件,这只是为了说明客户端如何连接:

  • 对于 SSE 服务器 (运行在 'mcp_server' 目录下): 客户端需要知道服务器的网络地址。配置中会包含服务器的名称和监听的 URL。

    • 'name': 服务器在代码中定义的名称,通常是 '"mcp-city-weather"'。
    • 'url': MCP 服务器的访问端点,例如 '"http://localhost:3000/sse"' (如果服务器运行在本地,端口为 3000)。
    • 'transport': 连接协议类型,指定为 '"sse"'。
  • 对于 Stdio 服务器 (运行在 'mcp_server_stdio' 目录下): 客户端通常会启动一个子进程来运行 Stdio 服务器。配置中会包含启动进程的命令和参数。

    • 'name': 服务器在代码中定义的名称,通常是 '"mcp-city-weather"'。
    • 'command': 启动服务器进程的主命令,例如 '"node"'。
    • 'args': 传递给命令的参数,指定服务器的入口文件,例如 '["dist/index.js"]' (在 'mcp_server_stdio' 目录下构建后的路径)。
    • 'transport': 连接协议类型,指定为 '"stdio"'。

这些配置信息会被 MCP 客户端库用来建立连接、发现工具并发送请求。

基本使用方法

  1. 启动服务器:进入您已完成安装和构建的服务器目录 ('mcp_server' 或 'mcp_server_stdio')。
    # 以 SSE 服务器为例,在 mcp_server 目录下运行
    npm start
    # 或者直接运行构建后的文件
    # node dist/index.js
    服务器启动后,您会在控制台看到相应的日志信息。
  2. 连接客户端:使用一个兼容的 MCP 客户端连接到运行中的服务器。此仓库中包含了 'mcp_client' 和 'mcp_host' 作为客户端示例,可以用来测试连接和调用工具。
  3. 调用工具:连接成功后,客户端可以发现服务器提供的工具('calculate_bmi' 和 'fetch_weather')。客户端或通过客户端交互的 LLM 可以向服务器发送请求,调用这些工具并传递必要的参数(例如城市名称或体重/身高),服务器将执行工具逻辑并将结果返回给客户端。

信息

分类

网页与API