项目简介

此GitHub仓库包含多个基于 Model Context Protocol (MCP) 实现的应用后端示例。每个示例代表一个独立的 MCP 服务器,旨在向大型语言模型 (LLM) 客户端提供特定的上下文信息和功能。这些示例展示了如何构建 MCP 服务器来管理资源、注册和执行工具。仓库中的服务器通过 JSON-RPC 协议与客户端通信,支持多种传输方式(如 Stdio)。

当前仓库包含以下 MCP 服务器示例:

  1. Simple Calculator Server: 提供基本的算术运算工具(加、减、乘、除)。
  2. Dune Analytics Server: 提供与 Dune Analytics 平台交互的工具,用于创建查询、获取查询结果以及检索链上数据(如代币余额、交易数据、代币信息)。

主要功能点

  • 工具注册与执行: MCP 服务器核心功能,定义可供 LLM 调用的外部函数或 API。示例服务器提供了计算工具和 Dune Analytics 数据查询工具。
  • JSON-RPC 通信: 使用标准的 JSON-RPC 协议与 LLM 客户端进行请求/响应交互。
  • 多传输协议支持: 'simplecalc' 示例展示了如何支持 Stdio、SSE 和 WebSocket 等多种传输方式(尽管部分功能可能标记为未测试)。
  • 能力声明: 服务器启动时向客户端声明其支持的功能和可用的工具列表及其参数定义。

安装步骤

要运行这些 MCP 服务器示例,您需要:

  1. 克隆仓库:
    git clone https://github.com/sudobase-ai/mcp-servers.git
    cd mcp-servers
  2. 安装 Python 依赖: 每个服务器示例通常在其目录内有 'requirements.txt' 文件(示例代码中引用了 'mcp' 等库)。请进入每个示例目录并安装其依赖。 例如,对于 'simplecalc' 和 'dune':
    # 安装 simplecalc 依赖
    cd simplecalc
    pip install -r requirements.txt
    cd ..
    
    # 安装 dune 依赖
    cd dune
    pip install -r requirements.txt
    cd ..
    (注意:如果仓库根目录有统一的 'requirements.txt' 或每个子目录没有,请根据实际文件结构调整安装方式。示例代码显示需要 'mcp', 'pydantic', 'starlette', 'uvicorn', 'dotenv', 'dune-client', 'requests' 等库。)
  3. 配置环境变量 (仅 Dune Server 需要): 'dune' 服务器需要您的 Dune Analytics API 密钥。将其设置为环境变量 'DUNE_API_KEY'。 例如 (在 Linux/macOS):
    export DUNE_API_KEY="your_dune_api_key_here"
    或者创建一个 '.env' 文件在 'dune' 目录中,包含 'DUNE_API_KEY=your_dune_api_key_here'。

服务器配置 (供 MCP 客户端使用)

MCP 客户端(如 sudomcp 或其他兼容的 LLM 代理)需要知道如何启动并连接到这些 MCP 服务器。通常通过一个 JSON 配置来完成,其中包含服务器的名称、启动命令和参数。

以下是针对 Stdio 传输方式的配置示例,这是最常见的本地进程间通信方式:

  • Simple Calculator Server 配置示例:

    {
      "server_name": "calculator-mcp",
      "command": "python",
      "args": ["-m", "simplecalc"]
    }
    • 'server_name': 服务器在 MCP 协议中声明的名称。
    • 'command': 用于启动服务器进程的可执行文件或脚本。在这里是 Python 解释器。
    • 'args': 传递给 'command' 的参数列表。'-m simplecalc' 表示以模块方式运行 'simplecalc' 包的入口点。
  • Dune Analytics Server 配置示例:

    {
      "server_name": "Dune Analytics MCP Server",
      "command": "python",
      "args": ["-m", "dune.main"]
    }
    • 'server_name': 服务器在 MCP 协议中声明的名称。
    • 'command': Python 解释器。
    • 'args': '-m dune.main' 表示以模块方式运行 'dune.main' 脚本。请注意,运行此服务器需要预先设置 'DUNE_API_KEY' 环境变量。

如果您想使用 WebSocket 或 SSE 传输方式运行 Simple Calculator Server,您需要调整 'args' 参数(例如 '--ws' 或 '--sse')并在客户端配置相应的连接地址,但通常情况下,使用默认的 Stdio 传输是最简便的方式。

基本使用方法

这些 MCP 服务器被设计为由 MCP 客户端(通常是 LLM 代理或应用)自动启动和通信。您作为用户通常不需要直接与服务器的命令行接口交互。

  1. 启动 MCP 客户端: 使用一个支持 MCP 的客户端程序(例如 sudomcp),并使用上述提供的 JSON 配置信息注册这些服务器。
  2. 客户端与服务器通信: 客户端会根据需要自动启动配置好的 MCP 服务器进程,并通过 Stdio(或其他配置的传输方式)与之建立连接。
  3. LLM 调用工具: 当 LLM 应用需要执行计算或获取 Dune 数据时,它会通过 MCP 客户端向相应的 MCP 服务器发送 'call_tool' 请求,并提供所需的参数。
  4. 服务器执行工具并返回结果: MCP 服务器接收请求,执行相应的 Python 函数(例如 'add' 或 'get_token_balances'),并将结果按照 MCP 规范格式化后通过 Stdio 返回给客户端。

简而言之,您只需配置您的 MCP 客户端来识别这些服务器,客户端将处理服务器的启动、连接和通信的细节。

信息

分类

AI与计算