php-llm/mcp-sdk
最新稳定版本:0.1
Composer 安装命令:
composer require php-llm/mcp-sdk
包简介
Model Context Protocol SDK for Client and Server applications in PHP
README 文档
README
Important
PHP LLM becomes Symfony AI - this project moved to github.com/symfony/ai. Please use the new repository for all future development, issues, and contributions. Thanks for your contributions - we hope to see you at Symfony AI!
Model Context Protocol SDK for Client and Server applications in PHP. Currently only support Tool Calls as Server via Server-Sent Events (SSE) and STDIO.
See Demo App for a working example and MCP Bundle for Symfony integration.
Installation
composer require php-llm/mcp-sdk
Usage with Symfony
Server integration points for are tailored to Symfony Console and HttpFoundation (Laravel compatible).
Console Command for STDIO Server
namespace App\Command; use PhpLlm\McpSdk\Server; use PhpLlm\McpSdk\Server\Transport\Stdio\SymfonyConsoleTransport; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; #[AsCommand('mcp', 'Starts an MCP server')] final class McpCommand extends Command { public function __construct( private readonly Server $server, ) { parent::__construct(); } protected function execute(InputInterface $input, OutputInterface $output): int { $this->server->connect( new SymfonyConsoleTransport($input, $output) ); return Command::SUCCESS; } }
Controller for Server-Sent Events Server
namespace App\Controller; use PhpLlm\McpSdk\Server; use PhpLlm\McpSdk\Server\Transport\Sse\Store\CachePoolStore; use PhpLlm\McpSdk\Server\Transport\Sse\StreamTransport; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpKernel\Attribute\AsController; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Uid\Uuid; #[AsController] #[Route('/mcp', name: 'mcp_')] final readonly class McpController { public function __construct( private Server $server, private CachePoolStore $store, private UrlGeneratorInterface $urlGenerator, ) { } #[Route('/sse', name: 'sse', methods: ['GET'])] public function sse(): StreamedResponse { $id = Uuid::v4(); $endpoint = $this->urlGenerator->generate('mcp_messages', ['id' => $id], UrlGeneratorInterface::ABSOLUTE_URL); $transport = new StreamTransport($endpoint, $this->store, $id); return new StreamedResponse(fn() => $this->server->connect($transport), headers: [ 'Content-Type' => 'text/event-stream', 'Cache-Control' => 'no-cache', 'X-Accel-Buffering' => 'no', ]); } #[Route('/messages/{id}', name: 'messages', methods: ['POST'])] public function messages(Request $request, Uuid $id): Response { $this->store->push($id, $request->getContent()); return new Response(); } }
Exposing Tools
Under the hood the SDK uses LLM Chain's ToolBox to register, analyze and
execute tools. In combination with its Symfony Bundle you can expose
tools with #[AsTool] attribute.
use PhpLlm\LlmChain\ToolBox\Attribute\AsTool; #[AsTool('company_name', 'Provides the name of your company')] final class CompanyName { public function __invoke(): string { return 'ACME Corp.' } }
See LLM Chain Documentation for more information.
php-llm/mcp-sdk 适用场景与选型建议
php-llm/mcp-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 575 次下载、GitHub Stars 达 36, 最近一次更新时间为 2025 年 03 月 07 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 php-llm/mcp-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 php-llm/mcp-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 575
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 36
- 点击次数: 28
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-03-07