返回市场
MCP服务器插件

MCP服务器插件

作者:Sylius16 星标更新:2025-07-10

项目介绍

<p align="center"> <a href="https://sylius.com" target="_blank"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://gips2.baidu.com/it/u=3884529464,827183784&fm=3081&app=3081&f=PNG?w=801&h=251"> <source media="(prefers-color-scheme: light)" srcset="https://gips3.baidu.com/it/u=3962642868,3744586627&fm=3081&app=3081&f=PNG?w=801&h=251"> <img alt="Sylius Logo." src="https://gips3.baidu.com/it/u=3962642868,3744586627&fm=3081&app=3081&f=PNG?w=801&h=251"> </picture> </a> </p> <h1 align="center">MCP服务器插件</h1> <p align="center"><a href="https://sylius.com/plugins/" target="_blank"><img src="https://gips2.baidu.com/it/u=3752046216,1012613445&fm=3081&app=3081&f=PNG?w=500&h=500" width="200"></a></p> <p align="center"> 这是一个Sylius插件,它暴露了一个模型上下文协议(MCP)服务器,使您可以通过大型语言模型(如ChatGPT)与您的商店进行交互。 </p>

安装

要求

我们使用稳定、支持且最新的包版本。建议您也这样做。

版本
PHP^8.2
sylius/sylius^2.1
MySQL^8.4
NodeJS^20.x

注意!

此安装说明假设您正在使用Symfony Flex。

  1. 使用composer安装插件:
  composer require sylius/mcp-server-plugin

通过以下命令清除应用缓存:

  bin/console cache:clear

文档

什么是MCP服务器?

模型上下文协议(MCP)是一种标准化的方式,用于连接语言模型(如ChatGPT)与外部工具、API和系统。它允许AI模型在对话过程中进行结构化的工具调用——类似于调用函数。

MCP服务器充当语言模型与应用程序逻辑之间的桥梁。它公开了一系列工具(例如“搜索产品”或“创建订单”),并根据来自AI的请求执行它们。

此插件将Sylius与MCP服务器集成,使AI代理能够与您的商店进行交互(例如,搜索产品、检查价格、开始结账)。

我们使用官方的php-mcp/server包来提供MCP服务器运行时。

┌────────────────┐                  ┌───────────────┐       ┌────────┐
│  MCP客户端    │◄────────────────►│  MCP服务器   │◄─────►│ Sylius │
│ (OpenAI等)    │ (Stdio/HTTP/SSE) │ (工具等)     │ (API) │        │
└────────────────┘                  └───────────────┘       └────────┘

要了解更多信息,请参阅模型上下文协议官网上的官方介绍。

运行MCP服务器

您可以使用以下命令启动服务器:

  bin/console sylius:mcp-server:start

默认情况下,服务器运行在:http://localhost:8080/mcp,并使用**流式HTTP传输**。

MCP服务器配置

创建一个文件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服务定义中覆盖传输。

Sylius API

工具通过预配置的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

  1. 在OpenAI Playground中添加一个新的工具。 add_tool

  2. 使用以下设置配置工具:

    • URL: http://localhost:8080/mcp(或您的ngrok URL)
    • 标签: Sylius
    • 认证: 无 configure_tool

示例与API调用

  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许可证条款发布。