PHP MCP扩展:我的开源实践与思考
2024年11月,Anthropic发布了MCP(模型上下文协议)标准,为大语言模型与外部系统的交互提供了统一接口。作为PHP开发者,尝试开发了
pfinalclub/php-mcp
php的 mcp 扩展。今天想和大家分享一下我的开发经历和思考。
🚀 MCP协议:大语言模型与外部系统的桥梁
模型上下文协议(Model Context Protocol,MCP)是由Anthropic于2024年11月提出的一项开源标准,旨在为大型语言模型与外部数据源、工具和系统之间的交互提供统一接口。
为什么我觉得MCP协议很重要?
说实话,当我第一次看到MCP协议的时候,我就觉得这玩意儿对整个开发社区来说都是个大机会。为什么呢?
- 打破信息孤岛:以前大语言模型和我们的数据之间总是有堵墙,现在MCP让模型能够安全、高效地访问我们的数据
- 开发更简单:通过属性注解,我们可以轻松地把方法暴露给模型调用,这比之前写复杂的API接口简单多了
- 生态整合:现在我们可以让各种大语言模型直接调用我们的代码,想想就兴奋
- 语言平等:MCP让所有编程语言都有了平等的机会,不再只是Python、JavaScript的天下
对比其他语言:
- Python:早就有了各种AI库,但MCP让集成更标准化
- JavaScript/Node.js:前端AI应用很多,但MCP让后端集成更简单
- Java:企业级应用多,但AI集成一直比较麻烦,MCP解决了这个问题
- Go:性能好,但AI生态相对薄弱,MCP提供了新的机会
- PHP:Web开发的主力,但AI领域一直被忽视,无论是之前的 PHP-ML 还是后面的 coze等 Ai 平台 提供 SDK 的时候 大多是没有 PHP 版本的
📅 我的开发历程
2024年11月
- Anthropic发布MCP协议标准
- 我看到这个消息后,第一反应就是:PHP生态需要这个!于是开始研究怎么实现
2024年12月
- 决定基于Workerman来开发,为什么选Workerman?因为它性能好,支持异步,特别适合实时应用
- 开始动手写
pfinalclub/php-mcp
2025年1月
- 基础架构搞定了,核心功能也实现了
- 第一个版本发布到Packagist,心里还是挺激动的
2025年9月5日
- PHP基金会官方宣布:要开发官方PHP MCP SDK
- 看到这个消息,我既高兴又有点小得意:看来我的判断是对的!
- 官方说会和现有社区项目协作,包括我的项目
🏗️ 我的技术选择
为什么选择Workerman?
说实话,当时选择技术栈的时候,我考虑了很多方案。最终选择Workerman,主要是这几个原因:
1. 性能优势
- Workerman的异步特性真的很强,能处理大量并发连接
- 协程模型让内存使用更高效
- 特别适合实时应用,比如聊天、客服这些场景
2. 开发体验
- API设计简洁,上手容易
- 文档还算完善,社区也比较活跃
- 部署相对简单,不需要太多配置
3. 实际需求
- 我主要想解决实时应用的问题
- 高并发场景下的性能表现很重要
- 轻量级,依赖少,部署方便
我的扩展特点
bash
# 安装我的扩展
composer require pfinalclub/php-mcp
核心特性:
- 基于Workerman的高性能异步架构
- 协程模型,适合高并发场景
- 简化的API设计,快速上手
- 专注于实时应用和低延迟需求
- 目前唯一可用于生产环境的PHP MCP实现
⚡ 我的扩展性能表现
性能特点
- 高并发处理:基于Workerman协程,能轻松处理大量并发连接
- 内存效率:协程模型比传统PHP进程模型更省内存
- 实时响应:特别适合需要低延迟的实时应用
- 部署简单:基于Workerman,部署相对简单
开发体验
- API简洁:设计简单,上手容易,不需要太多学习成本
- 轻量级:依赖少,不会给你的项目增加太多负担
- 实时特性:专门为实时应用优化,比如聊天、客服这些场景
- 生产可用:目前是唯一可以在生产环境使用的PHP MCP实现
🛡️ 安全性考虑
我的扩展安全特性
- 基础安全机制:已经实现了基本的安全防护
- 灵活配置:你可以根据具体需求自定义安全策略
- 生产可用:虽然还在完善中,但已经可以用于生产环境
- 持续改进:我会根据用户反馈不断改进安全机制
🌐 社区与生态
我的项目现状
- Workerman生态:与Workerman社区紧密集成,可以复用很多现有资源
- 轻量级设计:适合各种规模的项目,从小型到中型都行
- 快速响应:作为个人项目,我能快速响应用户需求和反馈
- 学习成本低:API设计简单,新手也能快速上手
- 开源友好:欢迎社区贡献,大家一起完善这个项目
🎯 我的扩展适合什么场景?
特别适合这些场景
- ✅ 生产环境:目前唯一可用于生产环境的PHP MCP实现
- 实时应用:聊天系统、在线客服、实时通知等
- 高并发场景:需要处理大量并发连接的应用
- 快速开发:想要快速集成MCP功能,不想折腾太多配置
- Workerman项目:已经在使用Workerman的项目
- 轻量级需求:不想引入太多依赖,希望保持项目简洁
- 性能优先:对响应速度和并发处理能力有较高要求
不太适合的场景
- 需要复杂的企业级功能(比如复杂的权限管理)
- 团队对Workerman不熟悉
- 需要与Symfony深度集成的项目
💡 实际应用案例
智能客服系统
php
// 使用我的扩展构建实时客服
use PfinalClub\PhpMcp\Server;
$server = new Server();
$server->addTool('getUserInfo', function($userId) {
// 获取用户信息逻辑
return $userInfo;
});
$server->addTool('sendMessage', function($message, $userId) {
// 发送消息逻辑
return ['status' => 'sent'];
});
实时数据监控
php
// 实时监控系统
$server->addTool('getSystemStatus', function() {
return [
'cpu' => getCpuUsage(),
'memory' => getMemoryUsage(),
'timestamp' => time()
];
});
$server->addTool('sendAlert', function($message, $level) {
// 发送告警逻辑
return ['alert_sent' => true];
});
简单的代码示例
php
// 一个简单的计算器工具
$server->addTool('calculate', function($expression) {
// 简单的计算逻辑(注意:生产环境需要更严格的验证)
return eval("return $expression;");
});
🔮 我的想法和展望
对PHP生态的思考
我的看法:
- 智能能力增强:PHP应用现在可以轻松集成智能功能了
- 开发效率提升:不用再写复杂的API接口,大语言模型可以直接调用我们的方法
- 生态繁荣:PHP在智能时代也有竞争力
- 人才需求:会需要更多既懂PHP又懂智能技术的开发者
我的项目规划
- 持续优化:会继续改进性能,增加更多功能
- 社区建设:希望有更多开发者参与进来
- 文档完善:会写更多教程和示例
- 生态整合:考虑与其他PHP工具和框架的集成
🎉 写在最后
看到PHP基金会宣布要开发官方MCP SDK的时候,我既高兴又有点小得意。高兴的是,这证明了我的判断是对的——MCP对PHP生态确实很重要。小得意的是,我在官方宣布之前就开始做了,说明我的技术嗅觉还算敏锐。
现在的状况:
- 我的扩展还不够成熟
- 官方SDK还在开发中,未来会有更多选择
- PHP开发者现在就可以开始探索大语言模型与PHP的深度集成
我的想法:
- 不管官方SDK什么时候发布,我的扩展都会继续维护和改进
- 希望能帮助更多PHP开发者快速上手MCP
- 欢迎大家一起参与,让PHP在智能时代更有竞争力
如果你对MCP感兴趣,或者想试试我的扩展,欢迎来GitHub看看。有问题也可以直接找我,我会尽力帮助大家。
让我们一起期待PHP MCP生态的蓬勃发展!