还在为AI助手与外部系统连接发愁?PHP MCP Server为你提供标准化解决方案!这个开源项目基于Model Context Protocol,让开发者轻松构建统一的AI连接接口。无论你是要集成数据库、API还是其他业务系统,PHP MCP Server都能帮你快速实现。
快速上手指南
环境准备与安装
首先确保你的环境满足以下要求:
- PHP 8.1或更高版本
- Composer包管理器
- 推荐使用CLI环境以获得最佳性能
安装命令极其简单:
composer require php-mcp/server
第一个MCP服务器:计算器示例
让我们从最基础的例子开始,创建一个简单的计算器服务器:
1. 创建计算器元素类
<?php
namespace App;
use PhpMcp\Server\Attributes\McpTool;
use PhpMcp\Server\Attributes\Schema;
class CalculatorHandler
{
/**
* 加法计算器
*/
#[McpTool(name: 'add_numbers')]
public function add(int $a, int $b): int
{
return $a + $b;
}
/**
* 幂运算,带参数验证
*/
#[McpTool(name: 'calculate_power')]
public function power(
#[Schema(type: 'number', minimum: 0, maximum: 1000)]
float $base,
#[Schema(type: 'integer', minimum: 0, maximum: 10)]
int $exponent
): float {
return pow($base, $exponent);
}
}
2. 构建服务器脚本
#!/usr/bin/env php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpMcp\Server\Server;
use PhpMcp\Server\Transports\StdioServerTransport;
try {
$server = Server::make()
->withServerInfo('PHP计算器服务器', '1.0.0')
->build();
// 自动发现MCP元素
$server->discover(
basePath: __DIR__,
scanDirs: ['src']
);
$transport = new StdioServerTransport();
$server->listen($transport);
} catch (\Throwable $e) {
fwrite(STDERR, "服务器错误: " . $e->getMessage() . "\n");
exit(1);
}
3. 配置MCP客户端
在客户端配置文件中添加:
{
"mcpServers": {
"php-calculator": {
"command": "php",
"args": ["/你的路径/mcp-server.php"]
}
}
}
完成以上步骤后,你的AI助手就可以调用add_numbers和calculate_power这两个工具了!
核心功能详解
现代架构设计
PHP MCP Server采用分层架构,各组件职责清晰:
- 传输层:支持Stdio、HTTP+SSE和可流式HTTP
- 协议层:JSON-RPC 2.0标准通信
- 会话管理层:多后端会话存储
- 分发器:方法路由和请求处理
- 注册表:元素存储与智能缓存
智能元素发现机制
项目最大的亮点是自动发现功能。只需使用PHP 8的属性标注,系统就能自动扫描并注册你的MCP元素:
use PhpMcp\Server\Attributes\{
McpTool, McpResource, McpResourceTemplate, McpPrompt
};
class UserManagementService
{
// 工具:可执行操作
#[McpTool(name: 'create_user')]
public function createUser(string $email, string $name): array
{
return ['id' => uniqid(), 'email' => $email, 'name' => $name];
}
// 资源:通过URI访问的静态内容
#[McpResource(
uri: 'config://user/settings',
mimeType: 'application/json'
)]
public function getUserSettings(): array
{
return ['theme' => 'dark', 'language' => 'zh-CN'];
}
灵活的传输选项
根据部署需求选择合适的传输方式:
1. Stdio传输 - 推荐用于本地开发
$transport = new StdioServerTransport();
$server->listen($transport);
2. 可流式HTTP传输 - 推荐用于生产环境
$transport = new StreamableHttpServerTransport(
host: '127.0.0.1',
port: 8080
);
实际应用案例
案例一:用户资料管理系统
想象你要为AI助手提供用户资料查询功能:
class UserProfileService
{
/**
* 根据用户ID获取资料
*/
#[McpResourceTemplate(
uriTemplate: 'user://{userId}/profile'
)]
public function getUserProfile(string $userId): array
{
// 实际业务逻辑
return [
'id' => $userId,
'name' => '张三',
'email' => 'zhangsan@example.com'
];
}
}
案例二:环境变量管理工具
让AI助手能够安全地访问和修改环境变量:
class EnvironmentManager
{
#[McpTool(name: 'get_env_variable')]
public function getEnvironmentVariable(string $key): ?string
{
return $_ENV[$key] ?? null;
}
}
配置与优化技巧
性能优化策略
1. 智能缓存配置
$server = Server::make()
->withCache($cache) // PSR-16兼容缓存
->withSession('cache', 7200) // 缓存会话,2小时TTL
->build();
2. 依赖注入优化
// 使用PSR-11容器实现自动依赖注入
$container = new \PhpMcp\Server\Defaults\BasicContainer();
$container->set(DatabaseService::class, new DatabaseService());
$server = Server::make()
->withContainer($container)
->build();
错误处理最佳实践
确保你的MCP服务器稳定可靠:
#[McpTool(name: 'divide_numbers')]
public function divideNumbers(float $dividend, float $divisor): float
{
if ($divisor === 0.0) {
throw new \InvalidArgumentException('除数不能为零');
}
return $dividend / $divisor;
}
最佳实践建议
开发规范
- 命名约定:工具名称使用蛇形命名法,如
create_user - 参数验证:充分利用Schema属性进行输入验证
- 异常处理:提供清晰的错误信息给AI助手
部署建议
生产环境部署方案:
- 使用进程管理器管理进程
- Nginx反向代理配置
- SSL/TLS安全加密
监控与维护
- 配置日志记录系统
- 定期健康检查
- 性能指标监控
总结
PHP MCP Server为开发者提供了一个强大而灵活的工具,用于构建符合MCP标准的服务器。通过简单的属性标注,你就能将现有的PHP应用功能暴露给AI助手使用。无论是简单的计算器还是复杂的企业级系统,这个开源项目都能帮你轻松实现AI与外部世界的无缝连接。
现在就开始使用PHP MCP Server,让你的AI项目更上一层楼!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



