使用说明

项目简介

oatpp-mcp 是一个使用 C++ Oat++ 框架构建 Model Context Protocol (MCP) 服务器的库。它旨在帮助开发者快速搭建符合 MCP 协议的服务端应用,为大型语言模型 (LLM) 提供上下文数据和功能调用能力。通过 oatpp-mcp,您可以轻松地将现有的 API 服务或自定义功能集成到 MCP 服务器中,并通过标准化的接口与 LLM 客户端进行交互。

主要功能点

  • 资源 (Resources) 管理: 支持注册和管理各种数据资源,例如文件、数据库记录、API 数据等。LLM 客户端可以通过预定义的 URI 访问这些资源,获取上下文信息。
  • 工具 (Tools) 注册与执行: 允许开发者将外部功能(例如调用 API、执行特定计算、访问外部服务等)注册为工具。LLM 客户端可以调用这些工具来扩展自身的能力,完成更复杂的任务。特别支持从现有的 Oat++ API Controller 自动生成工具,方便快捷地将现有 API 服务转换为 MCP 工具。
  • Prompt 模板 (Prompts): 支持定义和管理 Prompt 模板,允许开发者预设与 LLM 交互的模式和指令,从而更好地控制 LLM 的行为和输出。
  • 多种传输协议: 支持 STDIO (标准输入输出) 和 HTTP SSE (Server-Sent Events) 两种传输协议,可以根据不同的应用场景选择合适的通信方式。
  • JSON-RPC 通信: 采用标准的 JSON-RPC 协议与客户端进行通信,保证了协议的通用性和易用性。

安装步骤

  1. 前置条件: 确保您已经安装了 Oat++ 框架的主模块。如果尚未安装,请参考 Oat++ 官方仓库 的安装指南进行安装。
  2. 克隆仓库: 使用 Git 克隆 oatpp-mcp 仓库到本地:
    git clone https://github.com/MCP-Mirror/oatpp_oatpp-mcp
  3. 构建和安装: 进入仓库根目录,创建 build 目录并使用 CMake 进行构建和安装:
    mkdir build && cd build
    cmake ..
    make install

服务器配置

MCP 服务器需要配置启动命令和参数才能被 MCP 客户端调用。以下是基于仓库信息生成的 JSON 格式配置示例,您可以根据实际使用的传输协议(STDIO 或 SSE)选择合适的配置:

STDIO 传输配置示例:

{
  "serverName": "oatpp-mcp-stdio-server",
  "command": "/path/to/your/executable",  // TODO: 请替换为您的服务器可执行文件路径,通常在 build 目录下,例如:/path/to/oatpp_oatpp-mcp/build/test/oatpp-mcp/app/oatpp-mcp-app
  "args": [],  // STDIO 传输方式通常不需要额外的启动参数
  "transport": "stdio" // 指定使用 STDIO 传输协议
}

HTTP SSE 传输配置示例:

{
  "serverName": "oatpp-mcp-sse-server",
  "command": "/path/to/your/executable",  // TODO: 请替换为您的服务器可执行文件路径,例如:/path/to/oatpp_oatpp-mcp/build/test/oatpp-mcp/app/oatpp-mcp-app
  "args": [],  // HTTP SSE 传输方式可能需要指定端口等参数,具体取决于您的服务器实现
  "transport": "sse", // 指定使用 HTTP SSE 传输协议
  "sseEndpoint": "/mcp/sessions" // SSE 端点路径,默认为 "/mcp/sessions",如果服务器配置了不同的路径,请相应修改
}

注意:

  • 请将 '/path/to/your/executable' 替换为实际编译生成的可执行文件路径。
  • 'args' 字段用于配置服务器启动参数,根据您的服务器程序是否需要额外的参数进行配置,例如端口号等。
  • 选择 'transport' 字段的值为 'stdio' 或 'sse' 以匹配您服务器的启动方式。
  • 如果使用 SSE 传输,请确认 'sseEndpoint' 与服务器配置的 SSE 端点路径一致。

基本使用方法

  1. 启动 MCP 服务器: 根据您选择的传输协议(STDIO 或 SSE),运行编译后的服务器程序。
    • STDIO: 直接在终端运行可执行文件。服务器将通过标准输入和输出与客户端通信。
    • SSE: 如果您选择使用 HTTP SSE,则需要将服务器集成到 Oat++ HTTP 服务中。参考仓库中的 'test/oatpp-mcp/app/ServerTest.cpp' 示例,将 'server.getSseController()' 添加到您的 HTTP 路由中,并启动 HTTP 服务。
  2. 配置 MCP 客户端: 在您的 MCP 客户端应用中,根据上面提供的服务器配置示例,配置服务器的连接信息。
  3. 客户端与服务器交互: 客户端启动后,将通过 JSON-RPC 协议与 oatpp-mcp 服务器进行通信,可以发送请求以:
    • 获取服务器能力声明 (Capabilities)。
    • 列出和调用可用的工具 (Tools)。
    • 列出和获取 Prompt 模板 (Prompts)。
    • 列出和读取资源 (Resources)。

请参考仓库中的 'test/oatpp-mcp/tests.cpp' 和 'test/oatpp-mcp/app/ServerTest.cpp' 文件,获取更详细的服务器使用和配置示例。

信息

分类

AI与计算