Skip to main content
Glama
coder01128

ChopChop MCP Server

by coder01128

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

list_tenants

Returns all active tenants on the platform

get_products

Catalogue items with variant pricing for a tenant (embedded select join)

get_orders

Recent orders with line items for a tenant

add_item

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 start

Environment Variables

Variable

Description

SUPABASE_URL

Your Supabase project URL

SUPABASE_SERVICE_ROLE_KEY

Service-role key (bypasses RLS)

Usage with MCP Inspector

npx @modelcontextprotocol/inspector node dist/index.js

This 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 tools
add_itemA

Adds a product to a tenant's catalogue. Creates both the item and a default variant with the given price.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProduct name
priceYesPrice for the default variant
tenant_idYesTenant UUID
category_idNoCategory UUID to assign the item to
descriptionNoProduct description

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax orders to return (default 10)
statusNoFilter by order status
tenant_idYesTenant UUID

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to return (default 20)
tenant_idYesTenant UUID
category_idNoFilter by category UUID

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 4 tool updatesv1.0.0
    • First observedadd_item
    • First observedget_orders
    • First observedget_products
    • First observedlist_tenants

TDQS

A4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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