使用说明

项目简介

这是一个用于构建 MCP 服务器的 PHP SDK,基于 Model Context Protocol 协议,旨在帮助开发者快速搭建与 LLM 应用后端。它提供了处理 MCP 协议消息、管理请求和通知、以及集成不同传输协议的基础框架。该 SDK 特别为 Symfony 框架做了集成优化,同时也兼容 Laravel 框架。

主要功能点

  • MCP 协议支持: 完整实现了 MCP 协议的消息结构 (Request, Response, Notification, Error) 和 JSON-RPC 通信机制。
  • 可扩展的传输层: 内置支持 Stdio 和 SSE 传输协议,方便与不同类型的 MCP 客户端集成。
  • 工具 (Tools) 集成:php-llm/llm-chain 库深度集成,支持工具的注册、发现和执行,允许 LLM 调用外部功能。
  • 请求和通知处理: 提供灵活的请求处理器 (RequestHandler) 和通知处理器 (NotificationHandler) 接口,方便开发者扩展 MCP 服务器的功能。
  • 错误处理: 完善的错误处理机制,能够按照 MCP 协议规范返回错误响应。
  • 基于 Symfony: 针对 Symfony 框架优化,可以通过 Console 命令和 HTTP Controller 轻松启动 MCP 服务器。

安装步骤

  1. 确保你的 PHP 环境已安装 Composer。

  2. 在你的项目中,通过 Composer 安装 SDK:

    composer require php-llm/mcp-sdk

服务器配置

MCP 客户端需要配置以下信息才能连接到使用此 SDK 构建的 MCP 服务器。以下是基于示例代码生成的两种传输协议 (Stdio, SSE) 的服务器配置信息,请根据实际使用的传输协议选择其一进行配置。

1. Stdio 服务器配置 (Symfony Console Command)

{
  "serverName": "mcp-stdio-server",
  "command": "php",
  "args": ["bin/console", "mcp"]
  // "command" 指令为 PHP 解释器
  // "args" 参数数组包含:
  //   - "bin/console": Symfony Console 应用的入口文件
  //   - "mcp": 注册在 Symfony Console 应用中的 MCP 服务器启动命令 (AsCommand('mcp'))
}

2. SSE 服务器配置 (Symfony HTTP Controller)

{
  "serverName": "mcp-sse-server",
  "command": "curl",
  "args": ["http://your-domain/mcp/sse"]
  // "command" 指令为 curl 命令,用于发起 HTTP 请求
  // "args" 参数数组包含:
  //   - "http://your-domain/mcp/sse":  SSE 服务器端点 URL,由 Symfony Route 定义 (#[Route('/mcp/sse', name: 'mcp_sse', methods: ['GET'])])
  //   - 请将 "http://your-domain" 替换为实际部署服务器的域名或地址
}

基本使用方法

  1. 创建 RequestHandler 和 NotificationHandler: 根据你的 MCP 服务器需要提供的功能,创建实现 'RequestHandler' 和 'NotificationHandler' 接口的类,并实现 'supports' 和 'createResponse'/'handle' 方法来处理特定的 MCP 请求和通知。
  2. 注册 Handler: 将你创建的 RequestHandler 和 NotificationHandler 注册到 'JsonRpcHandler' 中。在 Symfony 环境下,可以利用 Symfony 的依赖注入容器进行自动注册。
  3. 选择传输协议并启动服务器: 根据你的应用场景选择合适的传输协议 (Stdio 或 SSE),并使用 SDK 提供的 'Server' 类和相应的 'Transport' 实现来启动 MCP 服务器。参考示例代码,在 Symfony Console 命令或 HTTP Controller 中配置和启动服务器。
  4. 集成工具 (Tools): 如果需要使用工具功能,你需要安装 php-llm/llm-chainphp-llm/llm-chain-bundle (如果使用 Symfony)。 使用 '#[AsTool]' 注解定义你的工具类,并确保 'ToolboxInterface' 被正确配置并注入到 'ToolCallHandler' 和 'ToolListHandler' 中。

注意: 此 SDK 主要提供 MCP 服务器的基础框架,你需要根据具体的业务需求扩展 RequestHandler 和 NotificationHandler 来实现完整的 MCP 服务器功能,例如资源管理和 Prompt 模板渲染等。 工具功能的实现依赖于 php-llm/llm-chain 库。

信息

分类

开发者工具