OpenCart MCP服务器
从Claude Code查询和编辑您的OpenCart商店。产品、订单、客户、Journal3模块、SEO URL、CMS页面——36个工具,全部通过自然语言。
专为厌倦了SSH+phpMyAdmin+管理面板点击以获得简单答案的商店所有者和开发人员而构建。
"Which products are low on stock?"
"Update the meta description for category 25"
"Show me today's orders over £50"
"Find the Journal3 module that contains our FAQ text and fix the typo"它只是工作。你问,克劳德调用正确的工具,你就会得到答案。
💻 更喜欢终端? 结账 opencart-cli --相同的OpenCart理解,漂亮的表格,火花线,壳中的AI(opencart ask "...")交互式REPL,实时订单观看。pip install opencart-cli.
______________________________________________________________________
默认安全
如果你要将AI连接到实时商店,这很重要。这里的每一个决定都考虑到了这一点。
- 只读查询 —
query()仅允许选择、显示、描述、解释 - DDL被阻止 --DROP、ALTER、TRUNCATE、CREATE永远不会运行,即使通过
run_sql() - SSH隧道 --数据库凭据保留在加密连接中,从不公开
- 路径遍历被阻止 —
get_file()和write_file()拒绝..在路径 - 写确认 --Claude Code会在任何写入工具执行之前提示您
- 您的服务器上没有运行任何内容 --没有代理,没有守护进程,没有上传PHP文件。服务器在您的计算机上运行,并通过SSH连接
你可以把它指向生产商店,不用担心它会做出愚蠢的事情。
______________________________________________________________________
你实际上能用它做什么?
店主
- “这周来了多少订单?”→ 每日细分的即时销售摘要
- “什么快用完了?”→ 按数量排序的库存报告,最低优先
- “将产品47的价格更新为29.99”→ 完成,单击一次确认
- “显示“关于我们”页面内容”→ 完整的CMS页面,可随时查看或编辑
开发者
- “显示oc_order的架构”→ 不打开phpMyAdmin的列定义
- “列出所有OCMOD修改及其状态”→ 即时审计
- “安装了哪些扩展?”→ 完整列表,无需管理面板
- “对订单表运行此SELECT”→ 带有安全栏的自定义SQL
管理多家门店的机构
- 在同一个Claude会话中作为单独的MCP实例运行dev和live
opencart_dev__get_productsvsopencart_live__get_products--没有混淆- 比较不同环境中的库存水平、设置或模块内容
Journal3用户
- 列出、检查和编辑J3模块——常见问题解答手风琴、滑块、横幅、产品选项卡
- 读取并更新主题设置和每个皮肤的皮肤设置
- 查找/替换模块内部的JSON --安全地更改文本,而无需重写整个模块
- 如果未安装Journal3,J3工具将返回空结果(而不是错误),因此服务器可以使用任何主题
______________________________________________________________________
如何比较
| 任务 | 管理面板 | SSH+SQL | 此MCP服务器 |
|---|---|---|---|
| 检查库存水平 | 点击页面 | 写一个查询,运行它 | “什么库存不足?” |
| 更新产品价格 | 查找产品、编辑、保存 | 手动更新查询 | “将产品47设置为29.99英镑” |
| 读取J3模块 | 数据库中的JSON blob | 从phpMyAdmin复制粘贴 | “显示模块505” |
| 编辑常见问题文本 | 查找模块,解码JSON,编辑,重新编码 | 痛苦 | “在模块505中将X替换为Y” |
| 销售报告 | 报告页面,手动筛选 | 编写汇总查询 | “过去7天的销售摘要” |
| 检查SEO URL | 管理>营销>SEO URL,分页 | 从oc_SEO_URL | “显示包含'耳机'的SEO URL”中选择 |
| 管理CMS页面 | 管理>目录>信息 | 直接访问数据库 | “显示关于我们页面” |
______________________________________________________________________
快速开始
1.安装
git clone https://github.com/chrisbray85/opencart-mcp.git
cd opencart-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .2.配置
cp .env.example .env填写您的服务器详细信息:
OPENCART_SSH_HOST=your-server-ip
OPENCART_SSH_USER=your-ssh-username
OPENCART_SSH_KEY=~/.ssh/id_ed25519
OPENCART_DB_USER=your_db_user
OPENCART_DB_PASS=your_db_password
OPENCART_DB_NAME=your_opencart_database
OPENCART_ROOT=/path/to/opencart
OPENCART_STORAGE=/path/to/storage在哪里找到你的路: -OPENCART_ROOT--包含以下内容的目录index.php,admin/,catalog/,system/-OPENCART_STORAGE--检查你的config.php为了DIR_STORAGE值(通常在OpenCart 3.0.3.3+的web根目录之外)
使用DDEV进行本地开发?
集 OPENCART_SSH_HOST=ddev 和点 OPENCART_ROOT 在本地项目目录中,命令将通过以下方式运行 ddev exec 在容器内部而不是SSH中:
OPENCART_SSH_HOST=ddev
OPENCART_DB_USER=db
OPENCART_DB_PASS=db
OPENCART_DB_NAME=db
OPENCART_ROOT=/Users/you/Sites/your-opencart-project容器路径(/var/www/html 等等)是自动解析的——您只需要本地项目路径。(DDEV支持由 @冰熊 --谢谢!)
3.测试连接
source .venv/bin/activate
PYTHONPATH=src python -c "
from opencart_mcp.config import Config
from opencart_mcp.db import OpenCartDB
import json
config = Config.from_env()
db = OpenCartDB(config)
result = db.run_query('SELECT COUNT(*) as product_count FROM oc_product WHERE status = 1')
print(json.dumps(result, indent=2))
db.close()
"你应该看看这样的东西 [{"product_count": "42"}]如果没有,请检查 故障排除.
4.添加到克劳德代码
VS Code (Claude Code extension)
打开您的VS代码设置JSON(Cmd+Shift+P → “打开用户设置(JSON)”)并添加:
{
"claude.mcpServers": {
"opencart": {
"command": "/absolute/path/to/opencart-mcp/.venv/bin/python",
"args": ["-m", "opencart_mcp.server"],
"cwd": "/absolute/path/to/opencart-mcp",
"env": {
"PYTHONPATH": "/absolute/path/to/opencart-mcp/src",
"OPENCART_SSH_HOST": "your-server-ip",
"OPENCART_SSH_USER": "your-ssh-username",
"OPENCART_SSH_KEY": "~/.ssh/id_ed25519",
"OPENCART_DB_USER": "your_db_user",
"OPENCART_DB_PASS": "your_db_password",
"OPENCART_DB_NAME": "your_opencart_database",
"OPENCART_ROOT": "/path/to/opencart",
"OPENCART_STORAGE": "/path/to/storage"
}
}
}
}重新启动VS Code,工具将出现在Claude Code面板中。
Claude Code CLI
添加 ~/.claude.json (全球)或 .claude/settings.json (项目层面):
{
"mcpServers": {
"opencart": {
"command": "/absolute/path/to/opencart-mcp/.venv/bin/python",
"args": ["-m", "opencart_mcp.server"],
"cwd": "/absolute/path/to/opencart-mcp",
"env": {
"PYTHONPATH": "/absolute/path/to/opencart-mcp/src",
"OPENCART_SSH_HOST": "your-server-ip",
"OPENCART_SSH_USER": "your-ssh-username",
"OPENCART_SSH_KEY": "~/.ssh/id_ed25519",
"OPENCART_DB_USER": "your_db_user",
"OPENCART_DB_PASS": "your_db_password",
"OPENCART_DB_NAME": "your_opencart_database",
"OPENCART_ROOT": "/path/to/opencart",
"OPENCART_STORAGE": "/path/to/storage"
}
}
}
}重新启动Claude Code,工具将自动加载。
JetBrains (Claude Code extension)
JetBrains使用相同的 ~/.claude.json 配置为CLI。按照上面的CLI说明重新启动IDE。
______________________________________________________________________
示例提示
这些都是开箱即用的。只需将它们键入Claude Code即可。
产品与库存
"Show me all products with less than 5 in stock"
"Get full details for product 123 including options and images"
"Search for products with 'wireless' in the name"
"Update the price of product 47 to 34.99"订单和客户
"Show me today's orders"
"Get order 5892 with line items and status history"
"Find customer john@example.com — how many orders have they placed?"
"Sales summary for the last 7 days with top sellers"SEO和内容
"List all SEO URLs containing 'sale'"
"Update the SEO URL for product 23 to 'wireless-mouse-pro'"
"Show me the FAQ page content"
"Replace 'old company name' with 'new company name' in the About Us page"日志3主题
"List all Journal3 FAQ modules"
"Show me the full content of module 505"
"Replace 'Free shipping over £50' with 'Free shipping over £75' in the banner module"
"What skin settings are configured for skin 1?"技术的
"Show the schema for oc_order_product"
"List all tables matching 'journal3'"
"Run: SELECT order_id, total FROM oc_order WHERE total > 100 ORDER BY date_added DESC LIMIT 10"
"What OCMOD modifications are active?"______________________________________________________________________
全部36个工具
阅读(24)
| 工具 | 它做什么 |
|---|---|
get_products | 搜索有库存、价格、SEO数据的产品。按类别筛选 |
get_product | 完整的产品详细信息——图片、选项、类别、属性 |
get_orders | 按状态和日期范围筛选的最近订单 |
get_order | 包含行项目、总计、状态历史记录的完整订单 |
get_customers | 按姓名/电子邮件搜索,包括订单数量和总支出 |
get_categories | 包含产品数量和SEO URL的类别树 |
get_stock_report | 按库存水平排序的所有产品(最低优先) |
get_settings | 按组/键设置OpenCart核心 |
get_j3_settings | Journal3主题设置 |
get_j3_skin_settings | 日志3每个皮肤的皮肤/布局设置 |
get_modules | 按类型分类的Journal3模块--在模块内搜索内容 |
get_j3_module | 任何J3模块的完整模块JSON数据 |
get_information_pages | 列出带有内容预览的CMS页面(关于我们、常见问题解答、条款和条件) |
get_information_page | 单个CMS/信息页面的完整HTML内容 |
get_order_statuses | 所有带有ID的订单状态映射 |
get_product_attributes | 产品属性(重量、储存条件等) |
sales_summary | 任何时期的收入、畅销书、每日统计数据 |
get_modifications | OCMOD修改及其状态 |
get_extensions | 已安装扩展列表 |
get_seo_urls | 带有过滤功能的SEO URL映射 |
query | 自定义只读SQL(仅限选择/显示/描述/解释) |
get_table_schema | 任何表的列定义 |
list_tables | 列出与模式匹配的表 |
get_file | 从服务器读取文件(路径遍历被阻止) |
写作(12)
| 工具 | 它做什么 |
|---|---|
update_product | 更新价格、股票、名称、SEO标题、元描述 |
update_setting | 更改OpenCart核心设置 |
update_j3_setting | 更改Journal3主题设置 |
update_j3_skin_setting | 更改Journal3皮肤设置 |
update_j3_module | 在J3模块JSON中查找/替换文本(横幅、常见问题解答、滑块) |
update_information | 在CMS页面HTML中查找/替换文本(关于我们、条款和条件等) |
update_seo_url | 创建或更新SEO URL映射 |
update_category | 更新类别名称、元、状态 |
write_file | 通过SFTP将文件写入服务器 |
run_sql | 执行插入/更新/删除(DDL被阻止) |
clear_cache | 刷新OpenCart+Journal3缓存 |
refresh_modifications | 重新编译OCMOD修改缓存 |
______________________________________________________________________
运作原理
Your machine Your server
┌──────────────┐ ┌──────────────┐
│ Claude Code │ │ │
│ ↓ │ SSH tunnel │ PHP cli │
│ MCP Server │ ──────────────────→ │ ↓ │
│ (Python) │ PHP via stdin │ MySQL │
│ │ ←────────────────── │ (JSON) │
└──────────────┘ └──────────────┘服务器正在运行 在您的机器上。它通过SSH连接到您的OpenCart服务器,通过stdin将PHP传输到远程解释器,并返回JSON。您的服务器上没有安装任何东西。没有上传文件,没有清理,没有打开端口。
- 通过stdin使用PHP --适用于任何PHP版本,不写入磁盘
- SSH隧道 --凭据永远不会离开加密连接
- 参数 --纯Python SSH,无Python 3.10以外的系统依赖+
______________________________________________________________________
多家店铺
在同一个Claude会话中作为单独的实例运行dev和live:
{
"mcpServers": {
"opencart_dev": {
"command": "/path/to/opencart-mcp/.venv/bin/python",
"args": ["-m", "opencart_mcp.server"],
"cwd": "/path/to/opencart-mcp",
"env": { "OPENCART_DB_NAME": "my_dev_database", "..." }
},
"opencart_live": {
"command": "/path/to/opencart-mcp/.venv/bin/python",
"args": ["-m", "opencart_mcp.server"],
"cwd": "/path/to/opencart-mcp",
"env": { "OPENCART_DB_NAME": "my_live_database", "..." }
}
}
}Claude自动为工具添加前缀-- opencart_dev__get_products vs opencart_live__get_products --因此,您查询的是哪个商店,这并不令人困惑。
______________________________________________________________________
经过测试
| 组件 | 版本 |
|---|---|
| OpenCart | 3.0.3.2-3.0.5.0(任何3.x版本都可以) |
| PHP | 5.6+(服务器端) |
| Python | 3.10+(本地机器) |
| Journal3 | 3.x(可选——没有它一切正常) |
| 主机 | VPS、专用服务器、SSH共享主机 |
| 客户端 | Claude Code CLI、VS Code扩展、JetBrains扩展 |
每天在生产商店使用,有100多种产品、数千份订单和Journal3主题。
______________________________________________________________________
故障排除
SSH连接失败
# Test SSH works
ssh your-user@your-server "echo ok"
# Test PHP is available
ssh your-user@your-server "echo '<?php echo 1;' | php"如果SSH需要密码而不是密钥:
ssh-copy-id -i ~/.ssh/id_ed25519.pub your-user@your-server空结果
- 跑吧 测试脚本 检查凭据
OPENCART_ROOT应指向包含以下内容的目录index.phpOPENCART_STORAGE应该匹配DIR_STORAGE在你的config.php
cPanel/共享主机
cPanel打印 tput: No value for $TERM SSH上的警告。服务器会自动过滤这些内容。
查询速度慢
默认超时为30秒。如果查询速度较慢,请检查SSH是否通过VPN(增加延迟)或服务器是否负载过重。
未找到日志3表
如果你没有运行Journal3,这很正常。J3工具返回空结果而不是错误。
常见路径问题
| 托管 | 典型的OPENCART_ROOT | 典型的OPENCART_STORAGE |
|---|---|---|
| cPanel | /home/user/public_html | /home/user/oc_storage |
| Plesk | /var/www/vhosts/domain/httpdocs | 网络根目录上方 |
| 自定义VPS | /var/www/html 或 /var/www/opencart | 变化多样 |
检查你的 config.php --两者皆有 DIR_APPLICATION 和 DIR_STORAGE 在那里定义。
______________________________________________________________________
路线图
- \[\]支持OpenCart 4.x
- \[\]优惠券和凭证管理工具
- \[\]订单状态更新工具
- \[\]大宗产品进出口
- \[\]客户群管理
- \[\]仪表板摘要工具(一个提示,完整商店概览)
有功能请求吗? 打开一个问题.
______________________________________________________________________
更新日志
看 发布 完整的历史。
______________________________________________________________________
贡献
欢迎发布问题和PR。如果您在上面未列出的托管设置或OpenCart版本上运行此程序,请告诉我们哪些有效,哪些无效。
许可证
麻省理工学院——见 许可证 了解详情。
