friendsofhyperf/mcp
是一个基于
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:
<?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}";
}
}
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 两种方式。
项目包含 .vscode/mcp.json
配置文件,可用于配置 VS Code MCP 扩展。您可以在此文件中自定义 MCP 服务器配置。
composer cs-fix
composer analyse
composer test
欢迎提交 Pull Request 或创建 Issue 来完善此项目。
本项目采用 MIT 许可证。