Symfony MCP服务器
使用Symfony 6和PHP构建的模型上下文协议(MCP)服务器的示例,为Symfony应用程序管理和PDF生成提供AI驱动的工具。
🚀 特性
- 缓存管理 -通过MCP工具清除Symfony缓存
- PDF生成 -使用当前日期/时间创建PDF文档
- HTTP传输 -使用ReactPHP HTTP服务器在Windows上工作
- 自动发现 -从代码库中自动发现MCP工具
- VS代码集成 -VS Code与GitHub Copilot无缝集成
📋 先决条件
- PHP 8.1或更高版本
- 作曲家
- Windows(配置为HTTP传输)
- VS代码与GitHub Copilot
🔧 安装
1.克隆存储库
git clone https://github.com/YOUR_USERNAME/mcp_app.git
cd mcp_app2.安装依赖项
composer install3.配置环境
复制 .env 根据需要进行文件和调整设置:
copy .env .env.local4.在VS代码中配置MCP
将您的MCP服务器配置添加到VS代码中 mcp.json 文件。
地点: %APPDATA%\Code\User\mcp.json
{
"servers": {
"my-mcp-server-52ab6668": {
"url": "http://localhost:8080/mcp/sse"
}
},
"inputs": []
}🎯 运行MCP服务器
启动服务器
php bin/mcp-server.php您应该看到:
MCP Server is starting...
Discovering tools...
Base path: C:\wamp64\www\mcp_app
Scan dirs: src/Toolkit
Discovery complete
Starting HTTP server on http://127.0.0.1:8080/mcp/sse保持服务器运行
服务器必须保持运行,VS Code才能与其通信。保持终端窗口打开。
🛠️ 可用的MCP工具
1.清除缓存(clear_cache)
清除开发环境的Symfony应用程序缓存。
VS代码中的用法:
- 问GitHub Copilot:“使用clear_cache工具”
- 或者使用命令面板:“GitHub Copilot:使用MCP工具”
例子:
User: "Clear the Symfony cache"
Copilot: [Executes clear_cache tool]2.创建带日期的PDF(create_pdf_with_date)
创建包含当前日期和时间的PDF文档。
参数:
title(可选):文档的自定义标题(默认:“日期文档”)content(可选):PDF中包含的其他内容
例子:
User: "Create a PDF with today's date"
Copilot: [Executes create_pdf_with_date tool]输出位置: var/pdfs/
3.列出生成的PDF(list_generated_pdfs)
列出已生成的所有PDF文件。
例子:
User: "Show me all generated PDFs"
Copilot: [Executes list_generated_pdfs tool]📁 项目结构
mcp_app/
├── bin/
│ ├── console # Symfony console
│ └── mcp-server.php # MCP server entry point
├── config/ # Symfony configuration
├── src/
│ ├── Kernel.php
│ └── Toolkit/ # MCP Tools directory
│ ├── AbstractToolkit.php
│ ├── CacheToolKit.php
│ ├── ConsoleRunner.php
│ └── PdfToolKit.php
├── var/
│ ├── cache/ # Symfony cache
│ ├── log/ # Application logs
│ └── pdfs/ # Generated PDF files
├── vendor/ # Composer dependencies
└── composer.json🔍 创建自定义MCP工具
步骤1:创建新的Toolkit类
在中创建新文件 src/Toolkit/:
true,
'message' => 'Tool executed successfully'
];
}
}步骤2:重新启动MCP服务器
服务器将在重新启动时自动发现您的新工具。
php bin/mcp-server.php第三步:使用你的工具
请GitHub Copilot在VS Code中使用您的新工具!
🐛 故障排除
服务器无法启动
问题: Failed opening required autoload.php
解决方案: 跑 composer install 安装依赖项。
404连接错误
问题: VS代码显示“404状态连接到http://localhost:8080/mcp/sse"
解决方案:
- 确保服务器正在运行(
php bin/mcp-server.php) - 检查您是否正在使用
HttpServerTransport(不是StdioServerTransport) - 验证中的URL
mcp.json是http://localhost:8080/mcp/sse
未发现工具
问题: “发现0个工具”
解决方案:
- 检查您的工具包类是否在
src/Toolkit/ - 确保
#[McpTool]属性仅使用有效参数:name,description,annotations - 验证该类是否具有无参数构造函数,或者是否正确配置了依赖注入
Windows STDIO错误
问题: “Windows不支持STDIN和STDOUT”
解决方案: 使用 HttpServerTransport 而不是 StdioServerTransport (已在此项目中配置)。
📝 开发说明
为什么是HTTP传输?
此项目使用HTTP传输(HttpServerTransport)而不是STDIO,因为:
- Windows上的PHP不支持STDIO传输所需的非阻塞管道
- ReactPHP的HTTP传输提供了一种可靠的替代方案
- SSE(服务器发送事件)支持实时通信
依赖项
关键包:
php-mcp/server:PHP的MCP服务器SDKreact/http:ReactPHP HTTP服务器tecnickcom/tcpdf:PDF生成库symfony/framework-bundle:Symfony框架
🤝 贡献
- 复刻仓库
- 创建要素分支(
git checkout -b feature/amazing-tool) - 在中创建MCP工具
src/Toolkit/ - 提交您的更改(
git commit -m 'Add amazing tool') - 推到分支(
git push origin feature/amazing-tool) - 打开拉取请求
📄 许可证
本项目根据专有许可证获得许可。
🔗 资源
👤 作者
你的名字- @你的博客
🙏 致谢
- 模型上下文协议团队
- Symfony社区
- PHP MCP服务器贡献者
