使用说明
项目简介
这是一个用于构建 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 服务器。
安装步骤
-
确保你的 PHP 环境已安装 Composer。
-
在你的项目中,通过 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" 替换为实际部署服务器的域名或地址 }
基本使用方法
- 创建 RequestHandler 和 NotificationHandler: 根据你的 MCP 服务器需要提供的功能,创建实现 'RequestHandler' 和 'NotificationHandler' 接口的类,并实现 'supports' 和 'createResponse'/'handle' 方法来处理特定的 MCP 请求和通知。
- 注册 Handler: 将你创建的 RequestHandler 和 NotificationHandler 注册到 'JsonRpcHandler' 中。在 Symfony 环境下,可以利用 Symfony 的依赖注入容器进行自动注册。
- 选择传输协议并启动服务器: 根据你的应用场景选择合适的传输协议 (Stdio 或 SSE),并使用 SDK 提供的 'Server' 类和相应的 'Transport' 实现来启动 MCP 服务器。参考示例代码,在 Symfony Console 命令或 HTTP Controller 中配置和启动服务器。
- 集成工具 (Tools): 如果需要使用工具功能,你需要安装 php-llm/llm-chain 和 php-llm/llm-chain-bundle (如果使用 Symfony)。 使用 '#[AsTool]' 注解定义你的工具类,并确保 'ToolboxInterface' 被正确配置并注入到 'ToolCallHandler' 和 'ToolListHandler' 中。
注意: 此 SDK 主要提供 MCP 服务器的基础框架,你需要根据具体的业务需求扩展 RequestHandler 和 NotificationHandler 来实现完整的 MCP 服务器功能,例如资源管理和 Prompt 模板渲染等。 工具功能的实现依赖于 php-llm/llm-chain 库。
信息
分类
开发者工具