项目简介
'ai-demo' 是一个演示 Symfony AI 组件的应用程序。它包含一个基于 Model Context Protocol (MCP) 标准构建的服务器实现,用于向 LLM(大型语言模型)客户端提供标准化上下文信息和功能。此 MCP 服务器通过 JSON-RPC 协议进行通信,并展示了如何注册和执行自定义工具,例如获取当前时间。
主要功能点
- MCP 服务器功能: 提供符合 MCP 规范的服务器端服务,支持 JSON-RPC 协议与 LLM 客户端通信,实现会话管理和能力声明。
- 工具注册与执行: 演示了如何注册一个名为 'current-time' 的工具,该工具可以根据可选的格式字符串返回当前的 UTC 时间。LLM 客户端可以通过 MCP 协议调用此工具获取实时信息。
- 上下文提供: 作为 LLM 应用的后端,能够以标准化的方式提供上下文信息,增强 LLM 的功能和交互模式。
安装步骤
- 克隆仓库:
首先,通过 Git 命令将仓库克隆到你的本地计算机:
git clone [email protected]:symfony/ai-demo.git cd ai-demo - 安装 PHP 依赖:
进入仓库目录后,使用 Composer 安装所有必要的 PHP 依赖:
composer install - 启动 Docker 环境 (可选,用于运行完整的 Demo 应用程序):
如果你想运行完整的 Symfony AI Demo 应用程序,包括前端界面和各种聊天示例,你需要启动 Docker 环境。如果仅测试 MCP 服务器,此步骤不是必需的。
docker compose up -d - 配置 OpenAI API Key (可选,用于完整的 AI Demo 功能):
完整的 Demo 应用程序使用 OpenAI 的 GPT 和 Embeddings 模型。你需要一个有效的 OpenAI API Key,并将其配置为环境变量。如果仅测试 MCP 服务器的 'current-time' 工具,此步骤不是必需的。
echo "OPENAI_API_KEY='sk-...'" > .env.local - 初始化 Chroma DB (可选,用于完整的 AI Demo 功能):
Chroma DB 是一个向量存储,用于存储聊天上下文的嵌入。如果仅测试 MCP 服务器的 'current-time' 工具,此步骤不是必需的。
symfony console app:blog:embed -vv
MCP 服务器配置 (用于 MCP 客户端)
MCP 服务器是为 MCP 客户端(例如集成开发环境中的 LLM 插件)设计的。要让你的 MCP 客户端连接到此 Symfony MCP 服务器,你需要在客户端的设置中添加以下配置。请根据你的实际安装路径调整 'command' 中的路径。
{ "servers": { "symfony": { "command": "php", "args": [ "/your/full/path/to/bin/console", "mcp:server" ] } } }
说明:
- '"symfony"': 这是你在 MCP 客户端为该服务器实例定义的唯一名称。
- '"command"': 指示 MCP 客户端如何启动 MCP 服务器进程。在这里,它指定使用 'php' 解释器来运行服务器。
- '"args"': 这是一个数组,包含传递给 'command' 的参数。
- 第一个参数 '"/your/full/path/to/bin/console"' 是 Symfony 应用程序的控制台脚本的完整路径。你需要将其替换为你的 'ai-demo' 仓库中 'bin/console' 文件的实际绝对路径。
- 第二个参数 '"mcp:server"' 是 Symfony 应用程序中用于启动 MCP 服务的一个特定命令。
基本使用方法
-
启动 MCP 服务器: 你可以通过运行以下命令在终端中单独启动 MCP 服务器进行测试。服务器启动后会监听标准输入/输出,等待 JSON-RPC 请求。
symfony console mcp:server -
测试工具列表: 在 MCP 服务器运行的终端中,粘贴以下 JSON-RPC 请求,然后按回车键。服务器将返回所有可用的工具列表。
{"method":"tools/list","jsonrpc":"2.0","id":1}你会看到服务器返回一个包含 'current-time' 工具信息的 JSON 响应。
-
调用 'current-time' 工具: 你可以尝试调用 'current-time' 工具来获取当前 UTC 时间。你可以通过 'format' 参数指定时间格式。
{"method":"tools/call","params":{"name":"current-time","arguments":{"format":"H:i:s T"}},"jsonrpc":"2.0","id":2}服务器将返回当前的 UTC 时间,格式为你指定的值,例如 '"14:30:00 UTC"'。
信息
分类
AI与计算