Skip to main content
Glama
KyuRish

patreon-mcp-server

Patreon MCP Server

License: MIT Python 3.11+ MCP PyPI

mcp-name: io.github.KyuRish/patreon-mcp-server

Give AI assistants access to your Patreon creator data. The first authenticated Patreon MCP server - works with Claude Desktop, Cursor, Windsurf, VS Code Copilot, and any MCP-compatible client.

Quick Start

1. Get your Creator Access Token

Go to Patreon Developer Portal and copy your Creator Access Token. This token gives access to your own campaign data only.

2. Configure your MCP client

Claude Desktop - add to claude_desktop_config.json:

{
  "mcpServers": {
    "patreon": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/patreon-mcp-server", "src/patreon_mcp_server/server.py"],
      "env": {
        "PATREON_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

Claude Code - add to .mcp.json in your project root:

{
  "mcpServers": {
    "patreon": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/patreon-mcp-server", "src/patreon_mcp_server/server.py"],
      "env": {
        "PATREON_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

3. Start using it

Ask your AI assistant things like:

  • "Show me my Patreon campaigns"

  • "Who are my top patrons by lifetime support?"

  • "How many patrons are on each tier?"

  • "Which patrons have declining payments?"

  • "List my recent posts"

Related MCP server: Sprinklr MCP Server

Available Tools

Tool

Description

Returns

fetch_identity

Your authenticated profile

User

fetch_campaigns

List all your campaigns

Campaign[]

fetch_campaign

Campaign details with tier breakdown

CampaignDetail

fetch_members

Paginated patron list (100/page)

MemberPage

fetch_posts

Paginated post list (20/page)

PostPage

fetch_post

Single post by ID

Post

Pagination: fetch_members and fetch_posts return a next_cursor field. Pass it as the cursor parameter to fetch the next page.

Data Fields

Member

full_name, patron_status, pledge_cadence, lifetime_support_cents, currently_entitled_amount_cents, last_charge_date, last_charge_status, will_pay_amount_cents, is_follower, tiers, user_name

Campaign

creation_name, patron_count, pledge_url, published_at, url, vanity, is_monthly, created_at, image_url, summary, one_liner, pay_per_name

Tier

title, amount_cents, description, published, patron_count

Post

title, content, is_paid, is_public, published_at, url, embed_data, embed_url

Privacy & Data

This server is designed with patron privacy in mind:

  • No patron emails - email addresses are never requested from the API

  • No private notes - creator notes about patrons are excluded

  • Read-only - no write operations, the server only reads your data

  • No data storage - the MCP server itself does not cache or persist any data

Important: When using this server with an AI assistant, patron data (names, pledge amounts, charge status) is sent to your AI provider (e.g., Anthropic, OpenAI) and may be temporarily retained per their data processing policies. You are responsible for ensuring your use complies with Patreon's Creator Privacy Promise and applicable data protection laws.

This project is not affiliated with or endorsed by Patreon.

Prerequisites

  • Python 3.11+

  • uv package manager

# Clone the repo
git clone https://github.com/kyurish/patreon-mcp-server.git
cd patreon-mcp-server

# Install dependencies
uv sync

# Test it runs
PATREON_ACCESS_TOKEN=your_token uv run src/patreon_mcp_server/server.py

Project Structure

src/patreon_mcp_server/
  server.py        # Entry point
  mcp_server.py    # FastMCP init + client instance
  tools.py         # @mcp.tool() definitions
  models.py        # Pydantic models + JSON:API parsers
  utils/
    client.py      # PatreonClient (HTTP layer)

Roadmap

This server is currently read-only. Write operations (create posts, manage tiers, send messages to patrons) will be added if there's enough demand - open an issue or star the repo to show interest.

License

MIT License - see LICENSE for details.

Support

If you find this useful, consider supporting development on Patreon.

Available Tools

6 tools
fetch_campaignC

Fetch details for a specific campaign including tiers.

Args: campaign_id: The campaign ID to fetch (numeric)

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
campaignYes
tiersNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states it 'fetches details' without mentioning side effects, authentication needs, rate limits, or whether the operation is read-only. This is insufficient for a mutation-like tool.

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

Conciseness2/5

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

The description is very short, which is positive for conciseness, but the args section is redundant with the schema and contains a type contradiction. The efficiency is undermined by inaccuracy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one parameter and an output schema, but the description omits behavior details and usage context. For a single-campaign fetch tool, it should mention that it returns full campaign details including tiers, but that's already in the purpose. No additional behavioral context given.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds minimal value. It mentions campaign_id but incorrectly states it is numeric, contradicting the schema which declares type string. This misinformation harms clarity and usability.

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 clearly states it fetches details for a specific campaign including tiers, using the verb 'fetch' and resource 'campaign', and distinguishes from the sibling 'fetch_campaigns' (plural) by specifying 'specific campaign'.

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 alternatives like 'fetch_campaigns', or when not to use it. The description lacks any context on prerequisites or preferred scenarios.

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

fetch_campaignsA

Fetch all campaigns for the authenticated creator.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided; description only indicates a read operation ('Fetch') without detailing pagination, limits, or authentication specifics beyond implied 'authenticated creator.'

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?

Single sentence, maximum conciseness, no wasted words.

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?

Given zero parameters and existence of output schema, description adequately covers what the tool does. Could mention there is no filtering or sorting, but sufficient for a simple list tool.

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?

No parameters, so schema coverage is 100%. Description adds no additional parameter meaning, but baseline is 3 per rule.

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?

Clearly states 'Fetch all campaigns for the authenticated creator.' Distinguishes from sibling 'fetch_campaign' by specifying 'all' campaigns.

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?

Implies usage to retrieve a list of campaigns, but no explicit guidance on when to use vs. 'fetch_campaign' for a single campaign or when not to use.

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

fetch_identityA

Fetch the authenticated Patreon user's profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
full_nameNo
emailNo
image_urlNo
aboutNo
urlNo
createdNo

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are present, but the description indicates a read-only operation ('Fetch'). For a simple tool with no parameters, this is adequate, though it could mention authentication assumptions or return format.

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 with no extraneous words, efficiently conveying the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, the presence of an output schema, and sibling tools that cover other resources, the description fully and adequately explains the tool's function without needing further elaboration.

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 no parameters and schema coverage is 100%, so the description does not need to add parameter details. Baseline score of 4 applies as no additional value is required.

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 specifies the verb 'Fetch' and the resource 'authenticated Patreon user's profile', clearly distinguishing it from sibling tools that deal with campaigns, members, and posts.

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 implies this tool is for retrieving the user's own profile, and sibling tools cover different resources, so usage context is clear, but no explicit when-to-use or when-not-to-use guidance is provided.

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

fetch_membersA

Fetch members/patrons of a campaign with pagination. Returns up to 100 members per page. Pass next_cursor from the response as cursor to get the next page.

Args: campaign_id: The campaign ID (numeric) cursor: Pagination cursor for next page (from previous response)

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes
cursorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
membersNo
next_cursorNo

TDQS

A4/5.0
Behavior3/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 explains pagination behavior (limit 100, cursor-based) and required parameter, but does not mention authentication, rate limits, or error handling.

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 concise with three short paragraphs, front-loading the purpose, then detailing pagination and parameters. No wasted sentences.

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 adequately covers pagination mechanics and parameters for a simple fetch tool, especially given the presence of an output schema (though not shown). Could mention possible filters but not essential.

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?

With 0% schema description coverage, the description adds crucial meaning: campaign_id is numeric and cursor is for pagination from previous response, which goes beyond the schema's type/title info.

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 clearly states the tool fetches members/patrons of a campaign with pagination, using specific verbs and resources, and differs from siblings which fetch other entities.

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 usage for fetching campaign members and explains pagination usage, but provides no explicit guidance on when to use this tool over alternatives or when not to use it.

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

fetch_postA

Fetch a specific post by ID.

Args: post_id: The post ID to fetch (numeric)

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
titleNo
contentNo
is_paidNo
is_publicNo
published_atNo
urlNo
embed_dataNo
embed_urlNo
app_idNo
app_statusNo

TDQS

A3.7/5.0
Behavior2/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 context. It only states 'Fetch' without clarifying side effects, idempotency, authentication needs, or error behavior, which is insufficient for a complete understanding.

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 extremely concise with no extraneous text, and the parameter description is immediately appended after the main action, making it efficient and front-loaded.

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?

Given the presence of an output schema (not shown), the description doesn't need to detail return values. However, the lack of annotations and minimal behavioral context leaves gaps, though for a simple fetch tool it is minimally 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?

Schema description coverage is 0%, but the description adds semantic value by clarifying that post_id is numeric and provides a brief purpose, compensating for the missing schema parameter descriptions.

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 clearly states the action (Fetch) and the resource (a specific post by ID), with a direct verb+resource structure that distinguishes it from sibling tools like fetch_posts (plural) and fetch_campaign.

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 usage when a specific post ID is known, but provides no explicit guidance on when not to use the tool or mention alternatives like fetch_posts for multiple posts.

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

fetch_postsA

Fetch posts from a campaign with pagination. Returns up to 20 posts per page. Pass next_cursor from the response as cursor to get the next page.

Args: campaign_id: The campaign ID (numeric) cursor: Pagination cursor for next page (from previous response)

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes
cursorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
postsNo
next_cursorNo

TDQS

A4/5.0
Behavior3/5

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

No annotations provided. Description discloses pagination details (20 per page, cursor) but does not mention read-only nature, error conditions, or auth requirements. Adequate for a simple fetch tool.

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?

Concise and well-structured: purpose first, then pagination explanation, then parameter descriptions. No unnecessary words.

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?

Covers core functionality (pagination, parameters) but omits details like sorting or filtering. Output schema exists but is not described. Good enough for a straightforward list operation.

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?

Schema has 0% coverage, but description adds meaning: campaign_id is 'numeric' (despite string type in schema) and cursor is 'Pagination cursor for next page'. Provides useful context beyond schema types.

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?

Clearly states 'Fetch posts from a campaign with pagination.' Distinguishes from siblings like fetch_post (singular) and fetch_campaigns (different resource).

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?

Describes pagination usage but lacks explicit when-not scenarios or alternatives. Sibling names imply differentiation, but not directly stated.

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. 6 tool updatesv0.1.1
    • First observedfetch_campaign
    • First observedfetch_campaigns
    • First observedfetch_identity
    • First observedfetch_members
    • First observedfetch_post
    • First observedfetch_posts

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool fetches a distinct resource (campaign, campaigns, identity, members, post, posts) with clear singular/plural differentiation, so an agent can easily distinguish them.

Naming Consistency5/5

All tool names follow the consistent pattern 'fetch_noun' (or 'fetch_nouns' for plurals), using lowercase and underscores without deviation.

Tool Count5/5

6 tools is well-scoped for a Patreon API server covering core fetching of campaigns, identity, members, and posts, offering essential reads without bloat.

Completeness2/5

The server only provides read operations ('fetch_*') and lacks any create, update, or delete capabilities, which are essential for managing Patreon resources, leaving significant gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers