使用说明
项目简介
本Symfony Bundle (mcp-bundle) 旨在帮助开发者快速搭建基于 Model Context Protocol (MCP) 的工具服务器。它集成了 php-llm/mcp-sdk PHP SDK,并提供了通过 Server-Sent Events (SSE) 和 STDIO 两种传输协议向 LLM 客户端暴露工具的能力。
当前版本主要聚焦于工具服务,资源和Prompt模板功能可能尚未完全实现。
主要功能点
- MCP服务器实现: 提供符合 MCP 协议规范的服务端实现,用于响应来自 LLM 客户端的工具调用请求。
- 工具暴露: 允许开发者将Symfony应用中注册的工具以 MCP 协议标准方式暴露给 LLM 客户端,例如 Claude Desktop。
- 多种传输协议支持: 目前支持通过 Server-Sent Events (SSE) 和 STDIO 两种协议与客户端通信。
- SSE: 通过 HTTP 长连接推送事件,实时性好,适用于Web应用场景。
- STDIO: 通过标准输入输出流通信,适用于命令行或后台服务场景。
- 易于集成: 作为 Symfony Bundle,可以方便地集成到现有的 Symfony 应用程序中。
- 配置灵活: 通过 YAML 配置文件进行服务器参数和传输协议的配置。
安装步骤
- 安装Bundle:
在 Symfony 项目根目录下,运行 Composer 命令安装 mcp-bundle:
composer require php-llm/mcp-bundle - 启用Bundle: Symfony 5.1 版本之后,Bundle 会自动启用。如果未自动启用,请检查 'config/bundles.php' 文件,确保 'PhpLlm\McpBundle\McpBundle::class => ['all' => true],' 已添加。
服务器配置
在你的 Symfony 项目的 'config/packages/mcp.yaml' 文件中进行 MCP 服务器配置。以下是配置示例,你可以根据需要启用 STDIO 或 SSE 传输协议,或者同时启用两者:
mcp: app: 'my-mcp-app' # 你的应用名称,会暴露给客户端 version: '1.0.0' # 你的应用版本,会暴露给客户端 client_transports: stdio: true # 启用 STDIO 传输协议 (通过命令行启动) sse: true # 启用 Server-Sent Events (SSE) 传输协议 (通过 HTTP Controller 提供)
配置说明:
- 'app': MCP 服务器的应用名称,客户端可以获取到此名称。
- 'version': MCP 服务器的版本号,客户端可以获取到此版本号。
- 'client_transports': 配置客户端可以使用的传输协议。
- 'stdio: true': 启用 STDIO 传输协议。启用后,你可以使用命令行 'php bin/console mcp:server' 启动 MCP 服务器。
- 'sse: true': 启用 Server-Sent Events 传输协议。启用后,MCP 服务器将通过 '/sse' 路由提供 SSE 端点。
MCP 客户端配置示例 (以 Claude Desktop 或其他 MCP 客户端为例):
对于 STDIO 传输协议,客户端需要配置启动命令:
{ "servers": [ { "name": "my-symfony-mcp-server-stdio", "transport": "stdio", "stdio": { "command": "php /path/to/your/symfony/project/bin/console mcp:server", "arguments": [] } } ] }
参数注释:
- 'name': 为你的 MCP 服务器起一个名称,方便在客户端中识别。
- 'transport': 指定传输协议为 "stdio"。
- 'stdio.command': 重要: 指定启动 MCP 服务器的命令。你需要将 '/path/to/your/symfony/project/bin/console' 替换为你的 Symfony 项目 'bin/console' 文件的实际路径。
- 'stdio.arguments': 启动命令的参数,当前示例为空。
对于 SSE 传输协议,客户端需要配置 SSE 端点 URL:
{ "servers": [ { "name": "my-symfony-mcp-server-sse", "transport": "sse", "sse": { "url": "http://your-domain.com/sse" } } ] }
参数注释:
- 'name': 为你的 MCP 服务器起一个名称。
- 'transport': 指定传输协议为 "sse"。
- 'sse.url': 重要: 指定 MCP 服务器的 SSE 端点 URL。你需要将 'http://your-domain.com/sse' 替换为你实际部署 Symfony 应用的域名和 '/sse' 路由。如果你的 Symfony 应用运行在本地 'localhost:8000',则 URL 可能是 'http://localhost:8000/sse'。
注意: 你需要根据你的 Symfony 应用部署环境和域名/端口,正确配置 'stdio.command' 或 'sse.url'。
基本使用方法
启动 MCP 服务器:
-
STDIO: 在 Symfony 项目根目录下,运行命令:
php bin/console mcp:server此命令将启动 MCP 服务器,并通过 STDIO 监听客户端请求。你需要将上述生成的 STDIO 配置信息填入 MCP 客户端。
-
SSE: 确保你的 Symfony 应用正常运行,并且可以通过 Web 访问。当你在 'mcp.yaml' 中启用 'sse: true' 后,MCP 服务器的 SSE 端点将自动在 '/sse' 路由下提供服务。 你需要将上述生成的 SSE 配置信息填入 MCP 客户端。
使用 MCP 客户端连接:
根据你选择的传输协议 (STDIO 或 SSE),在 MCP 客户端 (例如 Claude Desktop) 中配置相应的服务器连接信息(如上述 JSON 配置示例)。连接成功后,客户端即可向你的 Symfony MCP 服务器发送请求,调用你应用中暴露的工具。
工具注册:
本 Bundle 依赖于 php-llm/llm-chain-bundle 来注册和管理工具。你需要先安装并配置 'llm-chain-bundle',将你的工具注册到 'llm-chain-bundle' 中,这些工具才能被 MCP 服务器发现并暴露给客户端。 请参考 'llm-chain-bundle' 的文档了解如何注册工具。
信息
分类
网页与API