Skip to main content
Glama
LiZhuBin

gumroad-mcp

by LiZhuBin

Gumroad MCP Server

A Model Context Protocol (MCP) server that integrates with Gumroad API, allowing Claude to interact with your Gumroad store.

Features

  • get_products: List all products in your Gumroad store

  • get_product: Get details of a specific product by ID or name

  • get_sales: View recent sales from your store

  • get_sales_summary: Get a summary of sales, revenue, and refunds

Related MCP server: Gumroad

Installation

Using npm

npm install -g gumroad-mcp

From source

git clone https://github.com/LiZhuBin/gumroad-mcp.git
cd gumroad-mcp
npm install
npm run build

Configuration

Getting your Gumroad Access Token

  1. Go to your Gumroad account settings

  2. Click on "Advanced" tab

  3. Click "Generate new access token"

  4. Copy the generated token

Setting up the environment variable

Create a .env file in the project root:

GUMROAD_ACCESS_TOKEN=your_token_here

Or set it as an environment variable in your system.

Usage with Claude

Add this to your MCP configuration (e.g., in claude_desktop_config.json or your MCP settings):

{
  "mcpServers": {
    "gumroad": {
      "command": "npx",
      "args": ["gumroad-mcp"],
      "env": {
        "GUMROAD_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

Or if installed globally:

{
  "mcpServers": {
    "gumroad": {
      "command": "gumroad-mcp",
      "env": {
        "GUMROAD_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

Available Tools

get_products

Returns a list of all products in your Gumroad store.

get_product

Get details of a specific product.

Arguments:

  • identifier (required): Product ID or name to search for

get_sales

Returns recent sales from your Gumroad store.

get_sales_summary

Returns a summary including:

  • Total number of sales

  • Total revenue

  • Number of refunds

Development

# Install dependencies
npm install

# Run in development mode
npm run dev

# Build for production
npm run build

# Start production build
npm start

License

MIT

Available Tools

4 tools
get_productB

Get a specific product by ID or name

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesProduct ID or name to search for

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only restates the operation ('Get...') and does not disclose whether it is read-only, require permissions, return a particular format, or handle errors. Some behavior may be inferred from 'get', but that is not explicit.

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?

A single, front-loaded sentence with no redundant words. It communicates the core purpose effectively in minimal space.

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 tool is simple with one parameter and no output schema, but the description omits any differentiation from siblings and provides no behavioral context. It is minimally viable for a straightforward get-by-identifier tool but has clear gaps around usage and expected output.

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% with the identifier parameter already described as 'Product ID or name to search for'. The description repeats the same semantics without adding any new information, so the baseline of 3 applies.

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 the verb 'Get', the resource 'specific product', and the identifier forms 'ID or name'. The word 'specific' clearly distinguishes it from get_products, which implies list retrieval. This is a precise and unambiguous definition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool instead of sibling tools like get_products or get_sales. There is no mention of alternatives, prerequisites, or conditions for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_productsA

Get all products from your Gumroad store

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. 'Get all products' clearly implies a read-only listing operation with no destructive effects, but it does not mention pagination, response shape, or any store-specific behavior that might affect an agent's expectations.

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, front-loaded sentence with no filler. Every word earns its place, and it fully states the operation without redundancy.

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 no-parameter list tool, 'Get all products from your Gumroad store' is largely complete. It could mention pagination or return format, but given the simplicity of the tool and lack of output schema, the description is adequate.

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 and schema coverage is 100%, so there is no parameter information missing. The baseline for a zero-parameter tool is 4, and the description does not need to add anything further.

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 ('Get') with a clear resource ('all products from your Gumroad store'), and the plural 'products' naturally distinguishes it from the sibling tool 'get_product'. An agent can understand exactly what this tool retrieves.

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 communicates when to use this tool: when the agent needs the full set of products from the store. It does not explicitly name alternatives or exclusions, but the context is clear and the sibling tool names reinforce the differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_salesB

Get recent sales from your Gumroad store

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It indicates a read operation via 'Get' and scoping via 'recent', but it does not disclose ordering, default limits, pagination, time window, authentication needs, or whether the result is a flat list. This leaves important behavior unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded, efficient sentence with no wasted words. It is appropriately sized for a zero-parameter tool, though it could have spent one more clause clarifying output behavior or sibling differences.

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?

For a zero-parameter, no-output-schema tool, the description is minimally viable: it states what is retrieved and from where. However, with no annotations and no output schema, the absence of information about the result shape, recency window, and how this differs from get_sales_summary leaves noticeable gaps.

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 and the schema coverage is 100%, so there is no parameter documentation gap. The description adds implicit meaning by suggesting the tool returns a time-scoped set of sales, which is sufficient given the absence of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Get'), a clear resource ('recent sales'), and a source ('your Gumroad store'). It is reasonably distinguishable from the sibling get_sales_summary because 'recent sales' implies a raw list rather than an aggregate, though it does not explicitly state that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus get_sales_summary, get_products, or get_product. The word 'recent' weakly implies it is for a list of sales rather than a summary, but no explicit context or alternative routing is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sales_summaryA

Get a summary of your Gumroad sales including total sales, revenue, and refunds

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/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 for behavioral transparency. It clearly signals a read-only operation through 'Get' and describes the content of the summary (total sales, revenue, refunds). However, it omits details such as time range, currency, or whether the summary is computed in real time. For a zero-parameter read tool, this is adequate but not comprehensive.

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 sentence that is front-loaded with the action and resource, followed by the key output fields. There is no fluff or redundant wording, so every word earns its 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?

The description names the primary return fields (total sales, revenue, refunds) and, given zero parameters, an agent knows exactly how to invoke the tool. It lacks an output schema or details on time range, but the simplicity of the tool lowers the completeness bar. The description is sufficient for a competent agent to call the tool correctly.

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 and the schema coverage is 100% trivially, so the description need not explain parameters. The rubric specifies a baseline of 4 for zero-parameter tools, and the description adds no unnecessary parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'Get' with a specific resource, 'summary of your Gumroad sales', and names three key metrics (total sales, revenue, refunds). This clearly states what the tool does and, through the word 'summary', hints at a distinction from the sibling get_sales tool, though it does not explicitly differentiate itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the siblings get_sales, get_products, or get_product. The word 'summary' implies a high-level use case, but there is no explicit 'use this when' or mention of alternatives, leaving the agent to infer the appropriate context.

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.

  1. 4 tool updatesv1.0.0
    • First observedget_product
    • First observedget_products
    • First observedget_sales
    • First observedget_sales_summary

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct retrieval need: product list vs individual product detail, and recent sales vs aggregate sales summary. The singular/plural and 'summary' qualifiers make it easy for an agent to choose the right one.

Naming Consistency5/5

All tool names follow the same get_<resource> pattern with consistent snake_case and a clear singular/plural convention. There are no mixed styles or vague verbs.

Tool Count5/5

Four tools is a narrow, focused scope for a read-only Gumroad store data server. Each tool provides a distinct and useful view of the store without redundancy.

Completeness4/5

The read-only product and sales retrieval surface is reasonably complete, covering list/detail for products and list/summary for sales. Minor gaps remain such as no individual sale detail endpoint and no write operations, but these may be outside the server's intended scope.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers