我们使用稳定、支持且最新的包版本。建议您也这样做。
| 包 | 版本 |
|---|---|
| PHP | ^8.2 |
| sylius/sylius | ^2.1 |
| MySQL | ^8.4 |
| NodeJS | ^20.x |
此安装说明假设您正在使用Symfony Flex。
composer require sylius/mcp-server-plugin
通过以下命令清除应用缓存:
bin/console cache:clear
模型上下文协议(MCP)是一种标准化的方式,用于连接语言模型(如ChatGPT)与外部工具、API和系统。它允许AI模型在对话过程中进行结构化的工具调用——类似于调用函数。
MCP服务器充当语言模型与应用程序逻辑之间的桥梁。它公开了一系列工具(例如“搜索产品”或“创建订单”),并根据来自AI的请求执行它们。
此插件将Sylius与MCP服务器集成,使AI代理能够与您的商店进行交互(例如,搜索产品、检查价格、开始结账)。
我们使用官方的php-mcp/server包来提供MCP服务器运行时。
┌────────────────┐ ┌───────────────┐ ┌────────┐
│ MCP客户端 │◄────────────────►│ MCP服务器 │◄─────►│ Sylius │
│ (OpenAI等) │ (Stdio/HTTP/SSE) │ (工具等) │ (API) │ │
└────────────────┘ └───────────────┘ └────────┘
要了解更多信息,请参阅模型上下文协议官网上的官方介绍。
您可以使用以下命令启动服务器:
bin/console sylius:mcp-server:start
默认情况下,服务器运行在:http://localhost:8080/mcp,并使用**流式HTTP传输**。
创建一个文件config/packages/sylius_mcp_server.yaml并根据需要自定义它。
以下是默认配置:
sylius_mcp_server:
server:
name: 'Sylius MCP服务器'
version: '0.1.0'
transport:
host: 127.0.0.1
port: 8080
prefix: 'mcp'
enable_json_response: false
ssl:
enabled: false
context: []
session:
driver: cache
ttl: 3600
discovery:
locations:
- { base_path: '%sylius_mcp_server.plugin_root%', scan_dirs: ['src/Tool'] }
您可以通过将ssl.enabled设置为true并配置适当的SSL上下文来启用SSL支持。
有关如何配置上下文的详细信息,请参阅php-mcp/server文档中的SSL部分。
默认情况下,服务器使用流式HTTP传输。
您可以通过创建实现Sylius\McpServerPlugin\Factory\ServerTransportFactoryInterface的自定义工厂来实现自己的传输。
然后,在McpServerCommand服务定义中覆盖传输。
工具通过预配置的HTTP客户端与Sylius API通信:
sylius_mcp_server.http_client.api_shop:
base_uri: '%sylius_mcp_server.api.shop_base_uri%'
headers:
- 'Accept: application/ld+json'
- 'Content-Type: application/ld+json'
sylius_mcp_server.http_client.api_shop_merge_patch:
base_uri: '%sylius_mcp_server.api.shop_base_uri%'
headers:
- 'Accept: application/ld+json'
- 'Content-Type: application/merge-patch+json'
默认API基础URI是http://localhost:8000/api/v2/shop/,并且可以使用环境变量`SYLIUS_MCP_SERVER_API_SHOP_BASE_URI`进行覆盖。
以下工具开箱即用:
| 名称 | 描述 |
|---|---|
| add_item_to_order | 将项目添加到订单。 |
| complete_checkout | 完成结账过程。(最终步骤) |
| create_order | 创建新订单。 |
| fetch_channel | 根据代码获取渠道。 |
| fetch_currency | 根据代码获取货币。 |
| fetch_order | 根据其代币获取订单。 |
| fetch_product | 根据其代码获取产品。 |
| fetch_product_variant | 根据其代码获取产品变体。 |
| list_payment_methods | 列出所有可用的支付方式。 |
| list_shipping_methods | 列出所有可用的运输方式。 |
| search_products | 按名称搜索产品。 |
| search_product_variants | 按名称搜索产品变体。 |
| select_payment_method | 选择订单的支付方式。(结账第3步) |
| select_shipping_method | 选择订单的运输方式。(结账第2步) |
| update_order_address | 更新订单地址。(结账第1步) |
这些工具目前仅在访客模式下操作——fetch_order仅返回没有关联客户账户的订单数据。
您可以通过创建带有属性如**#[McpTool]**注解的PHP类来扩展服务器。 这些工具将像内置工具一样被暴露给MCP客户端。
要了解如何定义和组织工具,请参阅php-mcp/server文档中的“定义MCP元素”部分。
一旦您的工具准备就绪,请确保插件配置为发现它:
sylius_mcp_server:
server:
discovery:
locations:
- { base_path: 'your_base_path', scan_dirs: ['your/custom/Tool/Directory'] }
您可以在OpenAI Playground中直接使用服务器,通过ngrok或其他隧道工具将其暴露出来。
在OpenAI Playground中添加一个新的工具。

使用以下设置配置工具:
http://localhost:8080/mcp(或您的ngrok URL)
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"tools": [
{
"type": "mcp",
"server_label": "Sylius",
"server_url": "$YOUR_MCP_SERVER_URL",
"require_approval": "never"
}
],
"input": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "找一双红色的鞋子给我"
}
]
}
],
"max_output_tokens": 1024
}'
如果您认为自己发现了安全问题,请不要使用问题跟踪器,也不要公开发布。相反,所有安全问题必须发送至security@sylius.com。
对于在线交流,我们邀请您与我们在Sylius Slack上聊天和其他用户交流。
此插件的源代码完全免费,并根据MIT许可证条款发布。