patreon-mcp-server
Provides tools to access and read Patreon creator data, including campaigns, patrons (members), posts, and pledge information, enabling AI assistants to query creator analytics and supporter details.
Click on "Deploy 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., "@patreon-mcp-serverShow me my Patreon campaigns"
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.
Patreon MCP Server
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 |
| Your authenticated profile |
|
| List all your campaigns |
|
| Campaign details with tier breakdown |
|
| Paginated patron list (100/page) |
|
| Paginated post list (20/page) |
|
| Single post by ID |
|
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.pyProject 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 toolsfetch_campaignC
Fetch details for a specific campaign including tiers.
Args: campaign_id: The campaign ID to fetch (numeric)
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| campaign | Yes | |
| tiers | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| full_name | No | |
| No | ||
| image_url | No | |
| about | No | |
| url | No | |
| created | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ||
| cursor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| members | No | |
| next_cursor | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | No | |
| content | No | |
| is_paid | No | |
| is_public | No | |
| published_at | No | |
| url | No | |
| embed_data | No | |
| embed_url | No | |
| app_id | No | |
| app_status | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ||
| cursor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| posts | No | |
| next_cursor | No |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.1.1- First observed
fetch_campaign - First observed
fetch_campaigns - First observed
fetch_identity - First observed
fetch_members - First observed
fetch_post - First observed
fetch_posts
TDQS
Scored across 6 tools
Each tool fetches a distinct resource (campaign, campaigns, identity, members, post, posts) with clear singular/plural differentiation, so an agent can easily distinguish them.
All tool names follow the consistent pattern 'fetch_noun' (or 'fetch_nouns' for plurals), using lowercase and underscores without deviation.
6 tools is well-scoped for a Patreon API server covering core fetching of campaigns, identity, members, and posts, offering essential reads without bloat.
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
Related MCP Connectors
- HAVNOAuthapp.havnre
Read-only AI access to HAVN properties, leads, tasks, files, media, and analytics.
- OsboonOAuthcom.osboon
Read-only AI access to Osboon business card analytics, viewers, links, connections and contacts.
- AgentioOAuthcom.agentio
Ask about your Agentio campaigns, Creator deals, and performance on YouTube and Meta. Read-only.
Connect an AI assistant to a Capacities space (objects, daily notes, search).
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to access and analyze your Hevy workout data, including workout history, exercise progress, personal records, and routines.468 npm3MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants read-only access to Sprinklr data via MCP, allowing querying reports, searching cases, and calling Sprinklr API endpoints.4 npmISC
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Basecamp projects, messages, to-dos, and Card Tables, with read-only access by default and write operations requiring explicit approval.MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to read, search, and traverse your entire reMarkable library, including handwritten notes via OCR.14234MIT