Tools 模型上下文协议(MCP)服务器端实现

使用说明

  • 项目简介

    • 该仓库在 data/uniqueness/mcp 目录下实现了一个基于 MCP 的服务器端应用。它通过 MCP 框架配置服务器信息、能力声明,并注册一个实际的工具实现(UniquenessTool),使得 AI 助手可以通过 MCP 客户端调用该工具执行数据唯一性检查等任务。
    • 服务器基于 Spring Boot,默认通过标准输入输出(stdio)作为传输协议,与 MCP 客户端进行信息交互。
  • 主要功能点

    • MCP 协议核心能力
      • 处理 MCP 客户端的请求,返回 JSON-RPC 风格的响应。
      • 声明服务器能力(工具、资源、Prompts 等)并对外暴露。
    • 工具注册与执行
      • 通过配置将 UniquenessTool 注册为可调用的工具,支持在客户端发起 CallTool 请求时执行自定义逻辑。
      • 工具执行结果以 MCP 的 CallToolResult 形式返回,支持文本内容输出等。
    • 会话与传输
      • 服务器通过 StdioServerTransportProvider 提供标准输出/输入的通信通道,与客户端对话。
      • 服务器端提供简单的服务器信息(名称、版本)与能力描述。
    • 数据源与唯一性检查
      • 集成 InMemoryCSVDataSource 等数据源,提供数据唯一性检查的完整流程(加载数据、执行检查、返回结果及潜在更优解集)。
  • 安装步骤

      1. 获取源码并构建
      • 在项目根目录执行 mvn clean install 以编译所有模块并生成 MCP 服务端相关产物。
      1. 启动 MCP 服务端(MCP 服务器)
      • 导航到包含 MCP 服务端的模块(data/uniqueness/mcp),使用 Maven 启动命令(例如 mvn spring-boot:run)启动服务器。
      • 启动时将自动配置为通过 stdio 传输,与 MCP 客户端进行通信。若需要改用其他传输,请参考模块中的配置与代码。
      1. 验证
      • 可以使用包含的 McpConfigurationTest 等单元测试确认服务端功能正常,例如服务器信息、工具注册与调用能力等。
  • 服务器配置(MCP 客户端所需,用于与 MCP 服务器建立连接的启动信息,格式为 JSON)

    • server_name: custom-server
    • command: java
    • args: ["-jar", "path/to/your-built-server.jar"]
    • transport: stdio 注释说明:
    • server_name 对应服务器在代码中通过 serverInfo 设置的名称和版本信息(示例中为 custom-server、0.0.1)。
    • command 与 args 指定启动 MCP 服务器所需的命令与参数,path/to/your-built-server.jar 需替换为实际打包产物的路径。
    • transport 指定使用的传输通道,此实现默认通过标准输入输出(stdio)与客户端通信。
  • 基本使用方法

      1. 启动服务器后,启动一个 MCP 客户端(如 Claude Desktop、Cline 等,或自定义实现)。
      1. 通过 JSON-RPC 的 CallTool 请求调用服务端注册的工具(例如 uniqueness_check),将需要的参数(如文件、列名、列行数等)传给工具。
      1. 服务器执行工具逻辑,返回 CallToolResult,告知是否唯一及可能的更优解选项等信息。
      1. 客户端根据返回结果进行下一步对话或决策。

服务器信息