使用说明

项目简介

本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 配置文件进行服务器参数和传输协议的配置。

安装步骤

  1. 安装Bundle: 在 Symfony 项目根目录下,运行 Composer 命令安装 mcp-bundle:
    composer require php-llm/mcp-bundle
  2. 启用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