Skip to content

Latest commit

 

History

History
183 lines (138 loc) · 5.36 KB

File metadata and controls

183 lines (138 loc) · 5.36 KB

PHP MCP

模型上下文协议(MCP) 的完整 PHP 实现,提供服务器和客户端功能,支持多种传输协议。

CI codecov PHP Version License Latest Version

语言版本: English | 简体中文

✨ 核心特性

  • 🚀 最新 MCP 协议 - 支持 2025-03-26 版本的 MCP 协议
  • 🔧 完整实现 - 支持工具、资源和提示
  • 🔌 多种传输协议 - STDIO ✅、HTTP ✅、流式 HTTP 🚧
  • 🌐 框架兼容 - 兼容任何符合 PSR 标准的框架,内置 Hyperf 集成
  • 📚 文档完善 - 提供中英文完整指南

🚀 快速开始

安装

composer require dtyq/php-mcp

Hyperf 框架快速集成

如果您使用 Hyperf 框架,集成极其简单:

// 只需一行代码!
Router::addRoute(['POST', 'GET', 'DELETE'], '/mcp', function () {
    return \Hyperf\Context\ApplicationContext::getContainer()->get(HyperfMcpServer::class)->handle('default');
});

基于注解的注册

class CalculatorService
{
    #[McpTool(description: '数学计算')]
    public function calculate(string $operation, int $a, int $b): array
    {
        return ['result' => match($operation) {
            'add' => $a + $b,
            'multiply' => $a * $b,
            default => 0
        }];
    }
    
    #[McpResource(description: '系统信息')]
    public function systemInfo(): TextResourceContents
    {
        return new TextResourceContents('mcp://system/info', 
            json_encode(['php' => PHP_VERSION]), 'application/json');
    }
}

高级选项

  • 🔐 AuthenticatorInterface - 自定义认证
  • 📊 HttpTransportAuthenticatedEvent - 动态工具/资源注册
  • 📝 注解系统 - 自动注册工具、资源和提示

👉 查看完整 Hyperf 集成指南

基础服务器示例

<?php
require_once 'vendor/autoload.php';

use Dtyq\PhpMcp\Server\McpServer;
use Dtyq\PhpMcp\Shared\Kernel\Application;

// 使用简单容器创建服务器
$container = /* 您的 PSR-11 容器 */;
$app = new Application($container, ['sdk_name' => 'my-server']);
$server = new McpServer('my-server', '1.0.0', $app);

// 添加工具
$server->registerTool(
    new \Dtyq\PhpMcp\Types\Tools\Tool('echo', [
        'type' => 'object',
        'properties' => ['message' => ['type' => 'string']],
        'required' => ['message']
    ], '回显消息'),
    function(array $args): array {
        return ['response' => $args['message']];
    }
);

// 启动服务器
$server->stdio(); // 或 $server->http($request)

基础客户端示例

<?php
use Dtyq\PhpMcp\Client\McpClient;
use Dtyq\PhpMcp\Client\Configuration\StdioConfig;

$client = new McpClient('my-client', '1.0.0', $app);

// ✅ 推荐:使用类型化配置的快捷方法
$config = new StdioConfig('php server.php');
$session = $client->stdio($config);
$session->initialize();

// 调用工具
$result = $session->callTool('echo', ['message' => 'Hello, MCP!']);
echo $result->getContent()[0]->getText();

其他方法

// HTTP 快捷方法
use Dtyq\PhpMcp\Client\Configuration\HttpConfig;
$httpConfig = new HttpConfig('http://localhost:8080/mcp');
$session = $client->http($httpConfig);

// ⚠️ 传统方法(已弃用)
$session = $client->connect('stdio', ['command' => 'php server.php']);

📖 文档

实用示例

查看 /examples 目录:

  • stdio-server-test.php - 完整的 STDIO 服务器
  • http-server-test.php - 带工具的 HTTP 服务器
  • stdio-client-test.php - STDIO 客户端示例
  • http-client-test.php - HTTP 客户端示例

🌟 传输协议

协议 状态 描述
STDIO 进程通信
HTTP HTTP 上的 JSON-RPC
流式 HTTP 🚧 HTTP + 服务器发送事件

🛠️ 系统要求

  • PHP: 7.4+(推荐 8.0+)
  • 扩展: json, mbstring, openssl, pcntl, curl
  • Composer: 用于依赖管理

🤝 贡献

我们欢迎贡献!请查看我们的问题页面了解可以帮助的领域。

git clone https://github.com/dtyq/php-mcp.git
cd php-mcp
composer install
composer test

📄 许可证

MIT 许可证 - 详情请参阅 LICENSE 文件。

🙏 致谢


如果您觉得有用,请给这个仓库点个星 ⭐!