使用说明
MCP服务器-Symfony实现
基于Symfony的MCP(模型上下文协议)服务器,通过HTTP和服务器发送事件(SSE)端点公开各种数据访问和实用工具。使用PHP 8.4和Symfony 7.3构建。
特性
- MCP协议支持:实现AI助手集成的模型上下文协议规范
- 多传输层:支持流式HTTP和SSE传输
- 可扩展工具系统:使用Symfony的服务容器轻松添加工具
- 数据访问工具:查询气象数据、情绪数据和PostgreSQL数据库
- 外部API集成:连接到Mapy.cz和其他外部服务
- Docker开发环境:与RoadRunner服务器进行一致的开发设置
可用的MCP工具
- Postgresmetotool:从PostgreSQL查询气象站数据
- MeteoDataool:访问气象数据集
- MeteoStation工具:检索气象站信息
- 情绪数据工具:访问情绪分析数据集
- 列表数据集工具:列出可用数据集
- 地图放置工具:使用Mapy.cz API搜索地点
- 最近流量工具:获取最近的交通信息
- 回声工具:回声消息(实用程序/测试)
- 全能闹钟:获取指定时区的当前时间(实用程序/测试)
快速开始
先决条件
- Docker和Docker Compose
- (可选)用于Mapy.cz等外部服务的API密钥
安装
docker-compose run --rm dev composer install
配置环境
复制 .env 到 .env.local 并配置任何必要的环境变量:
cp .env .env.local
特定工具所需的环境变量:
MAPY_API_KEY:适用于MapyPlacesToolPOSTGRES_HOST,POSTGRES_PORT,POSTGRES_DATABASE,POSTGRES_USERNAME,POSTGRES_PASSWORD:适用于PostgresMeteoTool
启动服务器
docker-compose up dev-server
服务器将在上运行 localhost:8080.
验证安装
检查运行状况端点:
curl localhost:8080/health-check
列出可用的MCP工具:
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'
使用Docker
Project已经设置了Docker开发环境,所以你不需要在本地计算机上安装任何东西,除了 Docker和Docker Compose。
要运行PHP脚本,请使用 dev 服务:
docker-compose run --rm dev composer install # install dependencies using Composer
docker-compose run --rm dev composer phpunit # run Phpunit as a Composer script
docker-compose run --rm dev vendor/bin/phpunit # run Phpunit standalone
docker-compose run --rm dev bin/console # run Symfony console commands
要运行Web服务器,托管您的应用程序,请使用 dev-server 服务:
docker-compose up dev-server
要运行所有CI检查(验证、代码样式、静态分析、测试),请使用 ci 服务:
docker-compose run --rm ci
MCP端点
服务器公开以下MCP协议端点:
流式HTTP传输
POST /mcp-MCP协议消息的直接HTTP请求/响应
苏格兰和南方能源公司运输
GET /mcp/sse-用于实时流式传输的服务器发送事件端点POST /mcp/messages-向活动的SSE会话提交消息
示例:调用工具
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get-time",
"arguments": {
"timezone": "America/New_York",
"format": "Y-m-d H:i:s"
}
}
}'
有关更多示例,请参见 MCP_TEST.md.
创建新工具
- 在中创建新类
src/Mcp/实现StreamableToolInterface - 将工具类添加到
config/packages/klp_mcp_server.yaml - 该工具将被自动发现和注册
看 MCP_TEST.md 举一个完整的例子。
环境配置
对于本地开发,该应用程序遵循Symfony的最佳实践 .env 文件夹:
.env-本地开发的版本默认值.env.local-本地覆盖(未版本化).env.test-测试环境配置
生产部署使用常规环境变量(Docker -e 旗帜)而不是 .env 文件夹。
发展
代码质量
# Run code style check
docker-compose run --rm dev composer phpcs
# Auto-fix code style issues
docker-compose run --rm dev composer phpcbf
# Run static analysis
docker-compose run --rm dev composer phpstan
# Run tests
docker-compose run --rm dev composer phpunit
运行单个测试
# Run specific test file
docker-compose run --rm dev vendor/bin/phpunit tests/Controller/IndexActionTest.php
# Run specific test method
docker-compose run --rm dev vendor/bin/phpunit --filter testActionReturnsResponse
许可证
专有的
