农业数据服务

一个模块化的MCP服务器模板,用于从USDA外国农业服务(FAS)生产、供应和分销(PSD)数据库获取和格式化农业数据。

  • by AntonioPavoni
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 antoniopavoni/mcp_usda_server_quantized

使用说明

MCP USDA服务器

模块化MCP(模型控制协议)服务器模板,用于从美国农业部外国农业服务局(FAS)生产、供应和分销(PSD)数据库中获取和格式化农业数据。

🌾 概述

该项目作为创建模型控制协议(MCP)服务器的模板,该服务器将农业数据工具暴露给大型语言模型(LLM)。它演示了如何从USDA FAS API获取数据、处理数据,并以针对LLM消费优化的格式呈现数据。

服务器实现了模块化架构,使其易于:

  • 添加新的数据源和工具
  • 格式化复杂数据以供LLM使用
  • 创建抗幻觉护栏
  • 连接到聚合来自多个服务器的工具的MCP客户端

📐 建筑

该项目使用MCP(模型控制协议)方法实现了客户端-服务器架构:

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│             │     │             │     │             │
│    LLM      │◄───►│  MCP Client │◄───►│ MCP Servers │
│             │     │             │     │             │
└─────────────┘     └─────────────┘     └─────────────┘

核心组件:

  1. MCP客户端:

    • 聚合来自多个MCP服务器的工具
    • 为LLM访问所有工具提供统一的接口
    • 根据工具名称将工具调用路由到相应的服务器
  2. MCP USDA服务器:

    • 实施美国农业部农业数据专用工具
    • 处理API调用、数据处理和格式化
    • 以针对LLM消费优化的格式返回数据
  3. 通信协议:

    • 使用JSON-RPC 2.0进行标准化的客户端-服务器通信
    • 支持工具列表、工具元数据和工具执行请求

🧰 可用工具

此服务器实现了五个USDA数据工具:

  1. 美国农业部psd区域:从USDA FAS PSD数据库获取地区数据
  2. 美国农业部psd国家:通过区域关联获取国家数据
  3. 美国农业部psd商品:获取农产品定义
  4. 美国农业部psd计量单位:获取农业数量的计量单位
  5. 美国农业部psd商品属性:获取商品属性(生产、供应、分销)

每个工具的设计目的是从美国农业部API获取数据,根据用户查询对其进行过滤,并将其格式化为针对LLM消费优化的降价。

📁 项目结构

该项目采用模块化架构:

MCP_USDA_Server/
├── src/
│   ├── tools/           # Core implementation of each tool
│   ├── handlers/        # Request handlers for each tool
│   ├── formatters/      # Format tool results for LLM consumption
│   ├── routers/         # Route requests to the appropriate handler
│   ├── utils/           # Utility functions
│   └── server.js        # Main server entry point
├── Architecture.md      # Detailed architecture documentation
└── package.json         # Dependencies and scripts

关键文件:

  • src/server.js:启动HTTP服务器并初始化请求处理器的主入口点
  • src/tools/register.js:包含元数据的所有可用工具的中央注册表
  • src/routers/toolRouter.js:将与工具相关的请求路由到适当的处理程序
  • src/tools/psd.js*:针对不同终点实施美国农业部PSD数据提取
  • src/formatters/psd*Formatter.js:将API结果格式化为LLM消耗的降价
  • src/handles/psd*Handler.js:处理每个工具的传入请求

🔄 JSON-RPC通信

服务器使用JSON-RPC 2.0与MCP客户端通信:

示例:

1.工具列表请求:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}

2.工具执行请求:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/execute",
  "params": {
    "name": "usda-psd-regions",
    "args": {
      "query": "asia"
    }
  }
}

⚙️ LLM集成

此服务器设计为LLM无关,这意味着它可以与任何支持以下任一项的LLM一起工作:

  • 函数/工具调用:对于具有本机函数调用功能的LLM(例如OpenAI的GPT-4、Anthropic的Claude 3、谷歌的Gemini)
  • 说明如下:适用于能够遵循有关可用工具的结构化说明的LLM

该系统最适合具有以下特性的LLM:

  1. 函数/工具调用功能
  2. 解析和生成结构化数据的能力
  3. 农业数据的上下文理解

🚀 入门指南

先决条件:

  • Node.js(v14+)
  • npm或纱线

安装:

  1. 克隆此存储库:
git clone https://github.com/yourusername/MCP_USDA_Server.git
cd MCP_USDA_Server
  1. 安装依赖项:
npm install
  1. 启动服务器:
npm start

默认情况下,服务器将在端口3100上启动(可在.env中配置)。

与MCP客户端连接:

该服务器旨在与聚合来自多个服务器的工具的MCP客户端一起工作。有关实现的详细信息,请参阅配套的MCP_WebAgent_Client存储库。

🔧 扩展服务器

添加新工具:

  1. 在中创建新的工具实现 src/tools/
  2. 在中创建格式化程序 src/formatters/
  3. 在中创建处理程序 src/handlers/
  4. 在中注册该工具 src/tools/registry.js
  5. 在中更新路由器 src/routers/toolRouter.js

有关实现示例,请参阅现有工具。

📝 许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

🙏 致谢

  • 美国农业部对外农业服务部提供PSD API
  • 模块化架构的灵感和示例的开源社区

作为构建MCP服务器的模板创建,该服务器向LLM公开特定于域的数据。