Model Context Protocol for Hyperf
Fund package maintenance!
huangdijia
hdj.me/sponsors
Requires
- php: >=8.1
- huangdijia/mcp-sdk-php: ^0.1.0
- hyperf/command: ~3.1.0
- hyperf/event: ~3.1.0
- hyperf/framework: ~3.1.0
- hyperf/http-server: ~3.1.0
Requires (Dev)
- huangdijia/php-coding-standard: ^2.3
- hyperf/redis: ~3.1.0
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^10.0
README
friendsofhyperf/mcp
是一个基于 Hyperf 框架的 Model Context Protocol 服务器实现,帮助您创建和管理 MCP 服务,用于构建智能 AI 助手交互系统。
简介
Model Context Protocol (MCP) 是一种用于 AI 模型和应用程序之间交互的协议,friendsofhyperf/mcp
为 Hyperf 框架提供了完整的 MCP 服务器实现,支持:
- 工具定义与调用
- 资源管理
- 提示模板
- SSE (Server-Sent Events) 和命令行交互方式
安装
通过 Composer 安装:
composer require friendsofhyperf/mcp
配置
安装完成后,执行以下命令发布配置文件:
php bin/hyperf.php vendor:publish friendsofhyperf/mcp
配置文件位于 config/autoload/mcp.php
:
<?php return [ 'servers' => [ [ 'name' => 'demo', 'version' => '1.0.0', 'description' => 'This is a demo mcp server.', // SSE 服务器配置选项 'sse' => [ 'server' => 'http', 'endpoint' => '/sse', 'middlewares' => [], ], // 其他配置选项 'options' => [ 'logger' => null, 'enforceStrictCapabilities' => false, ], ], ], ];
快速开始
创建工具
使用 #[Tool]
注解创建工具:
<?php namespace App\Controller; use FriendsOfHyperf\MCP\Annotation\Tool; class FileController { #[Tool(name: 'read_file', description: '读取文件内容', server: 'demo')] public function readFile(string $path): string { return ['toolResult' => file_get_contents($path)]; } #[Tool(name: 'write_file', description: '写入文件内容', server: 'demo')] public function writeFile(string $path, string $content): bool { return (bool) file_put_contents($path, $content); } }
创建资源
使用 #[Resource]
注解创建资源:
<?php namespace App\Controller; use FriendsOfHyperf\MCP\Annotation\Resource; class FileController { #[Resource(scheme: 'file', server: 'demo')] public function getResource(string $path): string { return file_get_contents($path); } }
创建 Prompt
使用 #[Prompt]
注解创建 Prompt:
<?php namespace App\Controller; use FriendsOfHyperf\MCP\Annotation\Prompt; class ChatController { #[Prompt(name: 'chat', description: '聊天功能', server: 'demo')] public function chat(string $message): string { return "您发送的消息是:{$message}"; } }
运行服务
通过 HTTP 服务器运行
MCP 服务会自动注册到 Hyperf 的 HTTP 服务器中。启动 Hyperf HTTP 服务器:
php bin/hyperf.php start
然后可以通过配置的 SSE 端点(如 /sse
)访问 MCP 服务。
通过命令行运行
您也可以在命令行模式下运行 MCP 服务:
php bin/hyperf.php mcp:run --name=demo
工具包介绍
MCP 服务器提供以下主要功能:
- 工具 (Tools): 可以通过注解方式定义工具,供 AI 模型调用来执行特定操作。
- 资源 (Resources): 定义资源处理器,用于获取系统资源。
- 提示 (Prompts): 定义提示处理器,用于与 AI 模型交互。
架构
核心组件:
- ServerRegistry: 服务注册器,管理所有 MCP 服务实例。
- Collectors: 收集工具、资源和提示定义,并在运行时注册它们。
- Transport: 提供与客户端通信的传输层,包括 SSE 和 STDIO 两种方式。
VS Code 扩展
项目包含 .vscode/mcp.json
配置文件,可用于配置 VS Code MCP 扩展。您可以在此文件中自定义 MCP 服务器配置。
开发和测试
代码风格修复
composer cs-fix
静态分析
composer analyse
运行测试
composer test
贡献
欢迎提交 Pull Request 或创建 Issue 来完善此项目。
协议
本项目采用 MIT 许可证。