OpenCart MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENCART_ROOT | No | Path to your OpenCart root directory (containing index.php) | |
| OPENCART_DB_NAME | No | Your OpenCart database name | |
| OPENCART_DB_PASS | No | Your OpenCart database password | |
| OPENCART_DB_USER | No | Your OpenCart database username | |
| OPENCART_SSH_KEY | No | Path to your SSH private key | |
| OPENCART_STORAGE | No | Path to your OpenCart storage directory | |
| OPENCART_SSH_HOST | No | Your server IP or hostname (or 'ddev' for DDEV local development) | |
| OPENCART_SSH_USER | No | Your SSH username |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_productsA | List products with stock, prices, and SEO data. Search by name. Optionally filter by category_id. Set include_description=True to include full HTML descriptions. |
| get_productC | Get full details for a single product including images, options, and attributes. |
| get_ordersA | Get recent orders. Filter by status name (e.g. 'Complete', 'Pending'). Default: last 30 days, 20 orders. |
| get_orderC | Get full order details including line items and totals. |
| get_customersC | Search customers by name or email. |
| get_categoriesB | Get category tree. Set parent_id=0 for top-level categories. |
| get_settingsB | Get OpenCart settings. Filter by group (e.g. 'config') and/or key pattern (SQL LIKE). |
| get_j3_settingsA | Get Journal3 theme settings. Filter by setting_name pattern (SQL LIKE). |
| get_j3_skin_settingsB | Get Journal3 skin settings. Filter by setting_name pattern (SQL LIKE). |
| get_modulesA | List Journal3 modules. Filter by type (e.g. 'products', 'slider', 'product_tabs'). Search module_data content with search parameter. |
| get_j3_moduleA | Get full Journal3 module data for a single module by ID. Returns full JSON config — can be large for complex modules. |
| get_order_statusesA | List all order statuses with their IDs. |
| get_product_attributesB | Get all attributes for a product (e.g. CAS number, molecular weight, storage). |
| sales_summaryB | Get sales summary: total revenue, order count, top selling products. Covers the last N days. Excludes cancelled/failed/refunded orders. |
| get_modificationsB | List all OCMOD modifications with status. |
| get_extensionsB | List installed OpenCart extensions. |
| queryA | Execute a read-only SQL query. Only SELECT statements allowed. Use this for custom queries not covered by other tools. |
| get_table_schemaA | Show columns for an OpenCart table. The install's prefix (e.g. 'oc_') is added automatically if missing. |
| list_tablesB | List database tables matching pattern. Default: all OpenCart tables (using detected prefix). |
| get_fileA | Read a file from the VPS. Path is relative to OpenCart root unless absolute. By default returns the first max_lines lines (head). Set from_end=True for the last max_lines (tail) — preferred for large logs such as error.log. Optional grep is a fixed substring filter (not a regex). With from_end=True, grep only searches the last ~50k lines so huge logs stay fast; with from_end=False, grep scans the whole file then takes the first max_lines matches (can be slow on very large files). max_lines is capped at 2000. Requires SSH or DDEV. |
| update_productB | Update product fields. Only specified fields are changed. |
| update_settingC | Update an OpenCart setting. |
| update_j3_settingC | Update a Journal3 theme setting. |
| update_j3_skin_settingD | Update a Journal3 skin setting. |
| update_j3_moduleA | Update text within a Journal3 module's JSON data using find/replace. Safer than rewriting the entire module — only changes the matched text. Use get_j3_module first to see the current content. |
| update_seo_urlB | Update or create an SEO URL mapping. Query is e.g. 'product_id=123' or 'category_id=45'. Keyword is the URL slug (e.g. 'bpc-157-5mg'). |
| update_categoryC | Update category fields. Only specified fields are changed. |
| write_fileA | Write content to a file on the VPS via SFTP. Path is relative to OpenCart root unless absolute. Creates parent directories if needed. Use with caution. Requires SSH or DDEV. |
| clear_cacheA | Clear OpenCart and Journal3 caches on VPS. Requires SSH or DDEV. |
| run_sqlB | Execute a write SQL statement (INSERT/UPDATE/DELETE). Use with caution — changes the database directly. |
| refresh_modificationsA | Clear the OCMOD modification cache so OpenCart serves unmodified files. Run Admin > Extensions > Modifications > Refresh afterwards for the full recompile — this tool cannot do that step. |
| get_information_pagesA | List CMS/information pages (About Us, FAQ, T&Cs, etc.) with title and content preview. Search by title text. |
| get_information_pageC | Get full content of a single information/CMS page by ID. |
| update_informationB | Update text within an information/CMS page using find/replace. Works on the HTML description field. Use get_information_page first to see current content. |
| get_seo_urlsC | Get SEO URL mappings. Filter by query pattern (e.g. 'product_id=%'). |
| get_stock_reportB | Get stock levels for active products, sorted by quantity (lowest first). |
| update_order_statusA | Change an order's status and append an order-history entry — the same thing the admin status dropdown does. notify=True marks the history row as customer-notified but does NOT send the email itself. Use get_order_statuses to look up status IDs. |
| get_couponsA | List discount coupons with usage counts. Search by code or name. Default: enabled, unexpired coupons only. |
| create_couponC | Create a discount coupon, enabled and valid from today. type: 'P' = percentage, 'F' = fixed amount. uses_total=0 = unlimited total uses; uses_per_customer=0 = unlimited per customer. |
| update_couponA | Update a coupon: enable/disable (status 1/0), change discount, extend date_end (YYYY-MM-DD), adjust total-use limit, or rename. Only specified fields are changed. |
| get_vouchersB | List gift vouchers with amount, sender/recipient, and status. |
| dashboardA | One-call store overview: revenue today / 7 days / 30 days, order status breakdown, stock alerts, and the latest orders. The 'give me a store summary' tool. Excludes cancelled/failed/refunded orders from revenue. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 42 tools
Most tools target distinct resources (products, orders, coupons, settings) with clear read/write separation. Minor overlaps exist: dashboard vs sales_summary both report revenue, and the three settings tools (OpenCart vs Journal3 theme vs skin) could confuse without Journal3 familiarity.
The set predominantly uses a consistent verb_noun convention (get_*, update_*, list_*, create_*). A few exceptions like query, dashboard, sales_summary, and clear_cache break the pattern but remain readable and unambiguous.
42 tools is heavy for any single server, exceeding the 25-tool threshold where agents may struggle to scan the surface. The broad domain (OpenCart core, Journal3 theme, DB, VPS files) justifies many tools, but the count is still on the high side.
Read coverage is broad and write operations cover updates for products, categories, settings, SEO, and content, with run_sql as a fallback for missing writes. However, no create/delete tools exist for products, categories, customers, or vouchers, which are notable gaps for full lifecycle management.