ronydebnath/mcp-sdk
Composer 安装命令:
composer require ronydebnath/mcp-sdk
包简介
A Laravel package for building AI-driven conversational applications with real-time streaming, secure authentication, and flexible memory management.
README 文档
README
MCP SDK for Laravel
A Laravel package for interacting with Model Context Protocol (MCP) servers and implementing MCP servers.
Installation
You can install the package via composer:
composer require ronydebnath/mcp-sdk
The package will automatically register its service provider.
You can publish the config file with:
php artisan vendor:publish --provider="Ronydebnath\MCP\MCPServiceProvider" --tag="config"
This will create a config/mcp.php file in your config directory.
Configuration
The package configuration file includes settings for both client and server functionality:
return [ 'default' => env('MCP_CONNECTION', 'default'), 'connections' => [ 'default' => [ 'host' => env('MCP_HOST', 'localhost'), 'port' => env('MCP_PORT', 8000), 'timeout' => env('MCP_TIMEOUT', 30), 'verify' => env('MCP_VERIFY_SSL', true), ], ], 'server' => [ 'session_expiry' => env('MCP_SESSION_EXPIRY', 60), 'max_connections' => env('MCP_MAX_CONNECTIONS', 100), 'allowed_origins' => explode(',', env('MCP_ALLOWED_ORIGINS', '*')), ], 'auth' => [ 'token_expiry' => env('MCP_TOKEN_EXPIRY', 60), 'token_length' => env('MCP_TOKEN_LENGTH', 32), ], 'memory' => [ 'max_size' => env('MCP_MEMORY_MAX_SIZE', 100), 'persist' => env('MCP_MEMORY_PERSIST', false), 'storage_path' => env('MCP_MEMORY_STORAGE_PATH', storage_path('app/mcp/memory')), ], 'message' => [ 'default_type' => 'text', 'max_length' => env('MCP_MAX_MESSAGE_LENGTH', 4096), ], ];
Using the MCP Client
Using Dependency Injection
use Ronydebnath\MCP\Client\MCPClient; use Ronydebnath\MCP\Types\Message; use Ronydebnath\MCP\Types\Role; class YourController { public function __construct(private MCPClient $client) {} public function handle() { $message = new Message( role: Role::USER, content: 'Hello, how are you?', type: 'text' ); $response = $this->client->send($message); } }
Using the Facade
use Ronydebnath\MCP\Facades\MCP; use Ronydebnath\MCP\Types\Message; use Ronydebnath\MCP\Types\Role; $message = new Message( role: Role::USER, content: 'Hello, how are you?', type: 'text' ); $response = MCP::send($message);
Sending Multiple Messages
use Ronydebnath\MCP\Client\MCPClient; use Ronydebnath\MCP\Types\Message; use Ronydebnath\MCP\Types\Role; $messages = [ new Message(role: Role::USER, content: 'First message', type: 'text'), new Message(role: Role::USER, content: 'Second message', type: 'text'), ]; $responses = $client->sendMultiple($messages);
Using Streaming
use Ronydebnath\MCP\Client\StreamingMCPClient; use Ronydebnath\MCP\Types\Message; use Ronydebnath\MCP\Types\Role; // Using Dependency Injection class YourController { public function __construct(private StreamingMCPClient $client) {} public function handle() { $message = new Message( role: Role::USER, content: 'Hello, how are you?', type: 'text' ); $this->client->stream($message, function ($chunk) { // Handle each chunk of the response echo $chunk['content']; }); } } // Using the Facade MCP::stream($message, function ($chunk) { echo $chunk['content']; }); // Streaming multiple messages $messages = [ new Message(role: Role::USER, content: 'First message', type: 'text'), new Message(role: Role::USER, content: 'Second message', type: 'text'), ]; $client->streamMultiple($messages, function ($chunk) { echo $chunk['content']; });
Using the MCP Server
Setting Up Routes
Add the following route to your routes/api.php:
use Ronydebnath\MCP\Server\MCPServer; Route::post('/mcp', function (Request $request, MCPServer $server) { return $server->handle($request); });
Registering Message Handlers
use Ronydebnath\MCP\Server\MCPServer; use Ronydebnath\MCP\Types\Message; use Ronydebnath\MCP\Types\Role; $server->registerHandler('text', function (Message $message) { return [ 'role' => Role::ASSISTANT->value, 'content' => 'This is a response to: ' . $message->content, 'type' => 'text', ]; });
Using Authentication
The package includes built-in authentication support:
use Ronydebnath\MCP\Server\Auth\AuthMiddleware; use Ronydebnath\MCP\Server\Auth\AuthProvider; // Generate a token $token = $authProvider->generateToken(); // Register the authentication middleware $server->registerMiddleware(function ($request) use ($authMiddleware) { return $authMiddleware->handle($request); });
Clients can authenticate using either:
- Bearer token in the Authorization header:
Authorization: Bearer your-token-here
- Token as a query parameter:
/mcp?token=your-token-here
Handling Streaming Requests
The server automatically handles streaming requests when the client sets the Accept: text/event-stream header. The server will:
- Create a new session or use an existing one
- Send an initial connection message
- Stream response chunks as they become available
- Maintain the session for the duration of the connection
Memory and Context Management
The package includes memory and context management for maintaining conversation state:
Using Memory
use Ronydebnath\MCP\Shared\Memory; use Ronydebnath\MCP\Types\Message; use Ronydebnath\MCP\Types\Role; $memory = app(Memory::class); // Add messages to memory $memory->add(new Message( role: Role::USER, content: 'Hello', type: 'text' )); // Get messages by role $userMessages = $memory->getByRole(Role::USER); // Get messages by type $textMessages = $memory->getByType('text'); // Clear memory $memory->clear();
Using Context
use Ronydebnath\MCP\Shared\Context; use Ronydebnath\MCP\Types\Message; use Ronydebnath\MCP\Types\Role; $context = app(Context::class); // Set context data $context->set('user_id', 123); $context->set('preferences', ['theme' => 'dark']); // Add messages to context $context->addMessage(new Message( role: Role::USER, content: 'Hello', type: 'text' )); // Get context data $userId = $context->get('user_id'); $messages = $context->getMessages(); // Clear context $context->clear();
Using Progress Tracking
use Ronydebnath\MCP\Shared\Progress; $progress = app(Progress::class); // Update progress $progress->update(50, 'Processing...', ['step' => 'analysis']); // Increment progress $progress->increment(10, 'Moving to next step'); // Get progress information $percentage = $progress->getPercentage(); $status = $progress->getStatus(); $metadata = $progress->getMetadata(); // Check if complete if ($progress->isComplete()) { // Handle completion } // Reset progress $progress->reset();
Testing
composer test
Security
If you discover any security related issues, please email hello[at]ronydebnath.com instead of using the issue tracker.
License
The MIT License (MIT). Please see License File for more information.
ronydebnath/mcp-sdk 适用场景与选型建议
ronydebnath/mcp-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 06 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「chat」 「streaming」 「laravel」 「ai」 「ronydebnath」 「mcp-sdk」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ronydebnath/mcp-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ronydebnath/mcp-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ronydebnath/mcp-sdk 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
This simple PHP class allows you to easily generate Smartsupp.com JS chat code.
Client for the REST API plugin of the OpenFire Server
A laravel bundle for the OpenTok PHP SDK
Laravel Wrapper for the OpenTok PHP SDK
A robust, configuration-driven ETL and data import framework for Laravel. Handles CSV/Excel streaming, queues, validation, and relationships.
统计信息
- 总下载量: 2
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 23
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-06-04