Hybris MCP服务器
用于SAP Commerce Cloud(Hybris)集成的MCP(模型上下文协议)服务器。此服务器允许像Claude这样的AI助手与您的Hybris实例进行交互。
特性
- 产品管理:搜索产品、获取产品详细信息、浏览类别
- 订单管理:查看订单和订单详细信息
- 灵活搜索:直接执行FlexibleSearch查询
- Groovy脚本:通过脚本控制台运行Groovy脚本
- ImpEx:使用ImpEx格式导入和导出数据
- 工作排程:列出并触发cron作业
- 缓存管理:清除Hybris缓存
- 目录同步:触发目录同步
- 健康检查:监视系统运行状况
安装
git clone
cd hybris-mcp
npm install
npm run build配置
通过环境变量进行配置:
| 变量 | 必填 | 描述 | 默认值 |
|---|---|---|---|
HYBRIS_BASE_URL | 是 | Hybris实例的基本URL | - |
HYBRIS_USERNAME | 是 | 管理员用户名(需要HAC访问权限) | - |
HYBRIS_PASSWORD | 是 | 管理员密码 | - |
HYBRIS_BASE_SITE_ID | 无 | OCC基站ID | electronics |
HYBRIS_CATALOG_ID | 否 | 产品目录ID | electronicsProductCatalog |
HYBRIS_CATALOG_VERSION | 否 | 目录版本 | Online |
HYBRIS_HAC_PATH | 无 | HAC路径前缀 | /hac |
常见配置
标准Hybris(本地主机):
HYBRIS_BASE_URL=https://localhost:9002
HYBRIS_USERNAME=admin
HYBRIS_PASSWORD=nimdaSAP商务云(CCv2):
HYBRIS_BASE_URL=https://backoffice.your-environment.model-t.cc.commerce.ondemand.com
HYBRIS_USERNAME=admin
HYBRIS_PASSWORD=your-password
HYBRIS_HAC_PATH=/hac自定义站点配置:
HYBRIS_BASE_URL=https://localhost:9002
HYBRIS_USERNAME=admin
HYBRIS_PASSWORD=nimda
HYBRIS_BASE_SITE_ID=yoursite
HYBRIS_CATALOG_ID=yourProductCatalog
HYBRIS_CATALOG_VERSION=Online使用Claude代码
使用CLI添加MCP服务器:
claude mcp add hybris \
-e HYBRIS_BASE_URL=https://localhost:9002 \
-e HYBRIS_USERNAME=admin \
-e HYBRIS_PASSWORD=nimda \
-- node /path/to/hybris-mcp/dist/index.js或者手动添加到您的Claude Code MCP设置中(~/.claude.json 或项目配置):
{
"mcpServers": {
"hybris": {
"type": "stdio",
"command": "node",
"args": ["/path/to/hybris-mcp/dist/index.js"],
"env": {
"HYBRIS_BASE_URL": "https://localhost:9002",
"HYBRIS_USERNAME": "admin",
"HYBRIS_PASSWORD": "nimda"
}
}
}
}使用Claude Desktop
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"hybris": {
"command": "node",
"args": ["/path/to/hybris-mcp/dist/index.js"],
"env": {
"HYBRIS_BASE_URL": "https://localhost:9002",
"HYBRIS_USERNAME": "admin",
"HYBRIS_PASSWORD": "nimda"
}
}
}
}使用游标
添加到光标MCP配置(~/.cursor/mcp.json):
{
"mcpServers": {
"hybris": {
"command": "node",
"args": ["/path/to/hybris-mcp/dist/index.js"],
"env": {
"HYBRIS_BASE_URL": "https://localhost:9002",
"HYBRIS_USERNAME": "admin",
"HYBRIS_PASSWORD": "nimda"
}
}
}
}与Windsurf一起使用
添加到您的Windsurf MCP配置(~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"hybris": {
"command": "node",
"args": ["/path/to/hybris-mcp/dist/index.js"],
"env": {
"HYBRIS_BASE_URL": "https://localhost:9002",
"HYBRIS_USERNAME": "admin",
"HYBRIS_PASSWORD": "nimda"
}
}
}
}使用VS代码(复制/继续/临床)
对于支持MCP的VS Code扩展,请添加到您的工作区 .vscode/mcp.json:
{
"servers": {
"hybris": {
"command": "node",
"args": ["/path/to/hybris-mcp/dist/index.js"],
"env": {
"HYBRIS_BASE_URL": "https://localhost:9002",
"HYBRIS_USERNAME": "admin",
"HYBRIS_PASSWORD": "nimda"
}
}
}
}使用Zed
添加到Zed设置(~/.config/zed/settings.json):
{
"context_servers": {
"hybris": {
"command": {
"path": "node",
"args": ["/path/to/hybris-mcp/dist/index.js"],
"env": {
"HYBRIS_BASE_URL": "https://localhost:9002",
"HYBRIS_USERNAME": "admin",
"HYBRIS_PASSWORD": "nimda"
}
}
}
}
}使用JetBrains IDE
对于IntelliJ IDEA、WebStorm、PyCharm和其他带有AI Assistant的JetBrains IDE,请添加到您的MCP配置中:
macOS/Linux: ~/.config/JetBrains/mcp.json 窗户: %APPDATA%\JetBrains\mcp.json
{
"mcpServers": {
"hybris": {
"command": "node",
"args": ["/path/to/hybris-mcp/dist/index.js"],
"env": {
"HYBRIS_BASE_URL": "https://localhost:9002",
"HYBRIS_USERNAME": "admin",
"HYBRIS_PASSWORD": "nimda"
}
}
}
}使用Sourcegraph Cody
添加到您的Cody MCP配置(~/.config/cody/mcp.json):
{
"mcpServers": {
"hybris": {
"command": "node",
"args": ["/path/to/hybris-mcp/dist/index.js"],
"env": {
"HYBRIS_BASE_URL": "https://localhost:9002",
"HYBRIS_USERNAME": "admin",
"HYBRIS_PASSWORD": "nimda"
}
}
}
}与Raycast一起使用
添加到您的Raycast AI扩展MCP设置(~/.config/raycast/mcp.json):
{
"mcpServers": {
"hybris": {
"command": "node",
"args": ["/path/to/hybris-mcp/dist/index.js"],
"env": {
"HYBRIS_BASE_URL": "https://localhost:9002",
"HYBRIS_USERNAME": "admin",
"HYBRIS_PASSWORD": "nimda"
}
}
}
}通用MCP配置
对于任何其他兼容MCP的客户端,服务器使用 stdio传输.运行:
node /path/to/hybris-mcp/dist/index.js所需的环境变量:
HYBRIS_BASE_URLHYBRIS_USERNAMEHYBRIS_PASSWORD
可用工具
管理(HAC)-全面支持
所有基于HAC的工具都能可靠地使用基本身份验证:
| 工具 | 说明 |
|---|---|
flexible_search | 执行灵活搜索查询 |
execute_groovy | 运行Groovy脚本 |
import_impex | 导入ImpEx数据 |
export_impex | 将数据导出为ImpEx格式 |
get_cronjobs | 列出cron作业及其状态 |
trigger_cronjob | 触发cron作业运行 |
clear_cache | 清除Hybris缓存 |
get_system_info | 获取系统信息 |
trigger_catalog_sync | 同步目录版本 |
产品和目录(OCC API)
| 工具 | 说明 | 注释 |
|---|---|---|
health_check | 检查系统运行状况 | 始终有效 |
get_product | 按代码获取详细的产品信息 | 使用基本身份验证 |
get_category | 按代码获取类别详细信息 | 使用基本身份验证 |
search_products | 在目录中搜索产品 | 需要Solr索引\* |
get_categories | 列出目录中的所有类别 | 端点可能不会公开\* |
订单(货币监理署API)
| 工具 | 说明 | 注释 |
|---|---|---|
get_orders | 获取用户订单 | 需要OAuth\* |
get_order | 获取特定订单详细信息 | 需要OAuth\* |
\*请参阅 已知限制 在......下面
示例提示
搜索产品
Search for "camera" products in Hybris灵活搜索
Run a FlexibleSearch query: SELECT {pk}, {code}, {name[en]} FROM {Product} WHERE {code} LIKE '%camera%'执行Groovy
Execute this Groovy script to count products:
import de.hybris.platform.core.Registry
def ctx = Registry.getApplicationContext()
def flexibleSearchService = ctx.getBean("flexibleSearchService")
def query = "SELECT COUNT(*) FROM {Product}"
def result = flexibleSearchService.search(query)
println "Total products: ${result.result[0]}"进口进口
Import this ImpEx to create a product:
INSERT_UPDATE Product; code[unique=true]; name[lang=en]; catalogVersion(catalog(id),version)
; testProduct001 ; Test Product ; electronicsProductCatalog:Online触发器目录同步
Sync the electronics catalog from Staged to Online已知限制
OCC订单端点需要OAuth
这 get_orders 和 get_order 这些工具需要OAuth用户身份验证,而不仅仅是基本身份验证。这些端点需要通过密码授权流程获得用户特定的OAuth令牌:
POST /authorizationserver/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=user@example.com&password=secret&client_id=mobile_android&client_secret=secret变通方案:使用 flexible_search 直接查询订单:
SELECT {pk}, {code}, {user}, {totalPrice} FROM {Order} WHERE {user} = ?user产品搜索需要Solr
这 search_products 该工具使用需要Solr索引的OCC搜索端点。如果您的实例使用不同的搜索提供程序(例如Algolia),则此端点可能会返回空结果。
变通方案:使用 flexible_search 查询产品:
SELECT {pk}, {code}, {name[en]} FROM {Product} WHERE {name[en]} LIKE '%search_term%'类别端点可能不会暴露
这 get_categories 该工具使用的OCC端点可能不会在所有Hybris配置中公开。
变通方案:使用 flexible_search 查询类别:
SELECT {pk}, {code}, {name[en]} FROM {Category} WHERE {catalogVersion} IN (
{{ SELECT {pk} FROM {CatalogVersion} WHERE {version} = 'Online' }}
)安全说明
- 安全地存储凭据-永远不要将其提交给版本控制
- 使用环境变量或安全密钥管理
- 服务器需要HAC管理员权限才能使用管理工具
- 如果您只需要访问OCC API,请考虑使用只读凭据
安全考虑
此MCP服务器提供对Hybris实例的强大管理访问:
- 灵活搜索:可以查询任何数据,包括敏感表(用户、密码、令牌)
- Groovy脚本:以完全系统访问权限(文件系统、网络、进程)执行任意代码
- ImpEx:可以修改系统中的任何数据,包括用户帐户和权限
建议:
- 使用具有最低所需权限的专用服务帐户
- 在Hybris实例上启用审计日志记录,以跟踪所有操作
- 切勿将MCP服务器暴露给不受信任的网络或用户
- 在生产环境中执行之前,请检查所有Groovy脚本
- 考虑网络分段以限制对HAC端点的访问
发展
# Watch mode for development
npm run dev
# Build
npm run build
# Run directly
HYBRIS_BASE_URL=https://localhost:9002 \
HYBRIS_USERNAME=admin \
HYBRIS_PASSWORD=nimda \
npm start故障排除
连接问题
- 验证您的Hybris实例是否正在运行且可访问
- 检查HAC是否已启用,并且可以在配置的路径上访问
- 确保凭据具有对HAC的管理员访问权限
SSL证书错误
对于具有自签名证书的本地开发:
NODE_TLS_REJECT_UNAUTHORIZED=0 node dist/index.js警告: 从不使用 NODE_TLS_REJECT_UNAUTHORIZED=0 在生产环境中。这将禁用TLS证书验证,并使您暴露于中间人攻击。对于生产,配置正确的SSL证书。CSRF令牌错误
服务器自动处理CSRF令牌。如果您看到CSRF错误:
- 检查HAC登录是否手动工作
- 验证HAC路径是否正确
- 尝试重新启动MCP服务器以获取新的会话
许可证
麻省理工学院
