以下为快速开始PHP MCP开发的步骤指南,整合主流开发实践:
一、环境准备
-
PHP版本要求
需PHP 8.1+环境,推荐使用Composer管理依赖composer require php-mcp/server
-
开发工具配置
在Cursor/VS Code中创建mcp.json
配置文件,声明SSE传输协议:{ "mcpServers": { "MyServer": { "url": "http://localhost:3000/sse", "type": "sse" } } }
二、核心开发步骤
-
声明MCP工具方法
使用PHP 8属性注解暴露业务逻辑:use PhpMcp\Server\Attributes\McpTool; class WeatherService { #[McpTool(name: "get_weather", description: "获取城市天气")] public function execute(string $city): array { // 调用第三方API实现 return ['city' => $city, 'temp' => 28, 'condition' => '晴']; } }
-
配置传输协议(二选一)
-
SSE模式(推荐Web应用):
// 创建HTTP+SSE服务器 $server = new \PhpMcp\Server\SseHttpServer(); $server->addService(new WeatherService()); $server->start(3000); // 监听3000端口
-
Stdio模式(适合CLI工具):
$stdio = new \PhpMcp\Server\StdioTransport(); $stdio->registerService(new WeatherService()); $stdio->listen(); // 监听标准输入输出
-
-
客户端集成验证
在Cursor中激活MCP服务:- 点击
@Add context
图标 - 选择配置的
mcp.json
- 输入自然语言指令(如“杭州天气”)
- 自动调用
get_weather
工具返回结构化数据
- 点击
三、调试与优化
sequenceDiagram
Cursor客户端->>+MCP服务器: SSE连接请求
MCP服务器-->>-客户端: 返回sessionID
客户端->>服务器: 调用get_weather工具
服务器->>第三方API: 请求天气数据
第三方API-->>服务器: JSON响应
服务器-->>客户端: 格式化结果
调用时序图参考
四、进阶能力
功能 | 实现方式 | 应用场景 |
---|---|---|
动态工具发现 | $server->scanDirectory('src/') | 插件系统扩展 |
数据库直连 | 在工具方法内集成Eloquent | 业务数据查询 |
多传输协议兼容 | 同时配置SSE+Stdio | 混合环境部署 |
注意事项:生产环境需在
.env
设置MCP_MAX_RETRIES=3
防止SSE断连,并通过try/catch
处理工具方法异常。