ChopChop MCP Server
Provides tools for interacting with a multi-tenant Supabase commerce backend, including listing tenants, browsing catalogue items with variant pricing, retrieving recent orders with line items, and adding products.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ChopChop MCP Servershow me recent orders for the Acme tenant"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ChopChop MCP Server
A Model Context Protocol (MCP) server that exposes tools from a multi-tenant Supabase commerce backend. Lets an AI agent query tenants, browse catalogue items with pricing, pull recent orders, and add products — all through the MCP tool-calling interface.
Tools
Tool | Description |
| Returns all active tenants on the platform |
| Catalogue items with variant pricing for a tenant (embedded select join) |
| Recent orders with line items for a tenant |
| Adds a product with a default variant and price to a tenant's catalogue |
Related MCP server: agentstorefront-mcp
Setup
# Install dependencies
npm install
# Copy environment template and fill in your Supabase credentials
cp .env.example .env
# Build
npm run build
# Run
npm startEnvironment Variables
Variable | Description |
| Your Supabase project URL |
| Service-role key (bypasses RLS) |
Usage with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsThis opens a web UI where you can call each tool interactively.
Usage with Claude Desktop
Add to your Claude Desktop MCP config (claude_desktop_config.json):
{
"mcpServers": {
"chopchop": {
"command": "node",
"args": ["/absolute/path/to/chopchop-mcp-server/dist/index.js"]
}
}
}Architecture
See ARCHITECTURE.md for data flow, project structure, and schema details.
Design Decisions
See DECISIONS.md for rationale on transport choice, auth strategy, schema validation, and more.
Tech Stack
Runtime: Node.js + TypeScript (strict mode)
MCP: @modelcontextprotocol/sdk (official TypeScript SDK)
Database: Supabase (PostgreSQL) via @supabase/supabase-js
Validation: Zod (integrated with MCP SDK)
Transport: stdio
Available Tools
4 toolsadd_itemA
Adds a product to a tenant's catalogue. Creates both the item and a default variant with the given price.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Product name | |
| price | Yes | Price for the default variant | |
| tenant_id | Yes | Tenant UUID | |
| category_id | No | Category UUID to assign the item to | |
| description | No | Product description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It reveals the non-obvious dual side effect: both the item and a default variant are created. It does not cover permissions, errors, or response shape, but the core mutating behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The main action is first and the important variant-creation detail is included immediately after.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema covers all parameters and the description covers the core action, but with no output schema and no annotations, the agent is left without information about the response format, error conditions, or prerequisites such as an existing tenant. This is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds only mild context by tying 'price' to the default variant and 'tenant_id' to the catalogue; it doesn't explain category_id or description beyond their schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Adds') and identifies the resource ('product to a tenant's catalogue'), and adds a precise behavioral detail (creates the item and a default variant with the price). This clearly distinguishes it from the sibling get/list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames when to use the tool: to add a product to a tenant's catalogue. It doesn't explicitly name alternatives or list exclusions, but the siblings are all retrieval tools, so there is no competing creation tool to disambiguate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ordersA
Returns recent orders with line items for a tenant. Ordered by most recent first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max orders to return (default 10) | |
| status | No | Filter by order status | |
| tenant_id | Yes | Tenant UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that the tool returns recent orders, includes line items, and sorts by most recent first. However, it does not state whether the operation is read-only, what 'recent' means, whether pagination or rate limiting applies, or how errors are handled. The verb 'Returns' implies a read operation but falls short of explicit transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no wasted words. The core purpose is front-loaded in the first sentence, and the ordering detail in the second sentence adds value. Both sentences earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate 3-parameter read tool with no output schema and no annotations, the description provides essential context: the resource (orders), tenant scoping, inclusion of line items, and ordering. The schema covers parameter details. It does not describe the return shape beyond line items or mention pagination, but for a simple list-retrieval tool this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (tenant_id, limit, status) are already documented. The tool description does not add meaning beyond the schema; the only overlap is 'tenant' in the description aligning with tenant_id. Per the baseline rule, a score of 3 is appropriate since the schema handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Returns'), a resource ('recent orders with line items'), and a scope ('for a tenant'), which clearly identifies what the tool does. It also differentiates from siblings like list_tenants and get_products by focusing on orders. The additional ordering detail ('Ordered by most recent first') further sharpens the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for retrieving recent orders, but it does not explicitly state when to use it over alternatives or when not to use it. No sibling tools are mentioned, and no conditions or exclusions are provided. Usage guidance is left to inference from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productsA
Returns catalogue items with variant pricing for a tenant. Uses Supabase embedded select to join items with variants.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items to return (default 20) | |
| tenant_id | Yes | Tenant UUID | |
| category_id | No | Filter by category UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral weight. 'Returns' and 'Supabase embedded select' imply a read-only query, but it does not disclose authentication needs, rate limits, empty-result behavior, or response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two purposeful sentences with the main behavior front-loaded. The second sentence adds useful implementation context without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core call is clear for a simple read operation with fully described parameters. However, there is no output schema, and the description only vaguely specifies the return shape without field names, ordering, or pagination semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and tenant_id, limit, and category_id are already documented in the schema. The description adds tenant and variant-pricing context, but no meaningful parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear action and resource: 'Returns catalogue items with variant pricing for a tenant.' This differentiates it from siblings like get_orders and add_item by focusing on products and catalogue data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the resource type, but the description does not explicitly say when to prefer this tool over list_tenants, get_orders, or add_item. It also provides no exclusion criteria or alternative routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tenantsA
Returns all active tenants on the ChopChop platform
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It communicates that only active tenants are returned, which is a useful scoping detail. However, it does not mention potential pagination, ordering, authentication, or whether the full list is always returned at once.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core behavior. Every word earns its place, with no redundant phrasing or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only list tool, the description adequately conveys what the tool does and what it returns. While there is no output schema describing the structure of a tenant, this is a minor omission for such a simple tool and the description is otherwise sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no schema detail for the description to augment. Per the baseline for 0-parameter tools, a score of 4 is appropriate; the description correctly adds nothing because nothing is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Returns') and a specific resource ('all active tenants on the ChopChop platform'), making the tool's purpose immediately clear. It also distinguishes itself from sibling tools like get_products, get_orders, and add_item, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the resource name and description: if you need tenant data, use this tool. However, it never explicitly states when to use this tool versus alternatives, nor does it mention any exclusions or related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.0.0- First observed
add_item - First observed
get_orders - First observed
get_products - First observed
list_tenants
TDQS
Each tool maps to a distinct resource and action: tenants, products, orders, and product creation. There is no overlap in purpose, so an agent can reliably choose based on the resource it needs.
All tools use a consistent snake_case verb_noun pattern: list_tenants, get_products, get_orders, add_item. The minor variation between list/get and add/create does not break the pattern.
Four tools is a reasonable, tightly scoped set for a platform integration focused on reading tenants, products, and orders while supporting product creation. Each tool has a distinct role and none feel redundant.
The core read paths for tenants, products, and orders are covered, and product creation exists. However, product update/delete and any order lifecycle mutations are absent, leaving the write surface incomplete for fuller management workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP for e-commerce: live product catalog, stock, and pricing for AI agents.
Multi-tenant MCP gateway for AI commerce. One connection, every store.
Multi-tenant MCP gateway for AI commerce. One connection, every store.
Multi-tenant MCP gateway for AI commerce. One connection, every store.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage products, shopping carts, and orders in an online store through a well-defined MCP API.-
- AlicenseAqualityDmaintenanceEnables AI agents to discover, subscribe to, and call paid agent services from the AgentStorefront marketplace directly within MCP-aware clients like Claude or Cursor.420MIT
- AlicenseNot gradedqualityBmaintenanceExposes order status lookup and knowledge base search tools from the Support Agent AI over MCP, enabling MCP clients to handle customer support queries with grounded, citation-backed answers.MIT
- FlicenseNot gradedqualityCmaintenanceEnables an AI to perform customer support workflows by looking up customers, retrieving orders, and creating support tickets through MCP tools.5-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/coder01128/chopchop-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server