Memberful MCP server. Manage Memberful members, subscriptions, plans, passes and coupons via the GraphQL API.
Add to your MCP config, then reload & authorize:
{
"mcpServers": {
"memberful": {
"url": "https://memberful.usefulapi.io/mcp"
}
}
}| Tool | Type | What it does |
|---|---|---|
get_member | read | Get a member Fetch one Memberful member by id: profile, Stripe customer id, unrestricted-access flag, total spend, metadata, address, and their subscriptions (each with plan). Memberful GraphQL: member(id). |
list_members | read | List members List members as a Relay connection (profile, Stripe customer id, unrestricted-access flag, total spend, subscriptions); paginate with first + after, or set activeOnly for members with an ACTIVE membership. Memberful GraphQL: members connection. |
get_subscription | read | Get a subscription Fetch one subscription by id: status, activated/expires/trial timestamps, plan, member, orders, and coupon. Memberful GraphQL: subscription(id). |
list_subscriptions | read | List subscriptions List subscriptions as a Relay connection (status, expires/created timestamps, plan, member); paginate with first + after. Memberful GraphQL: subscriptions connection. |
list_plans | read | List plans List all plans (the Memberful dashboard 'Prices'): name, interval, price in cents, for-sale flag, and plan group. Memberful GraphQL: plans. |
list_passes | read | List passes List all passes (the access groups a member subscribes to): id and name. Memberful GraphQL: passes. |
memberful_query | read | Run a GraphQL query (read-only) Escape hatch to run an arbitrary read-only Memberful GraphQL query with optional variables; mutations are rejected. Useful for fields the curated read tools don't cover. |
create_member | write | Create a member Create a new member with an email and optional full name. Memberful GraphQL: memberCreate(email, fullName). |
update_member | write | Update a member Update a member's metadata (a JSON string; max 50 keys, 40-char keys, 500-char values). Memberful GraphQL: memberUpdate(id, metadata). |
change_subscription_expiration | write | Change subscription expiration Change when a subscription expires (extend or shorten access); expiresAt is a Unix timestamp in seconds. Memberful GraphQL: subscriptionChangeExpirationTime(id, expiresAt). |
create_coupons | write | Create coupons Create one or more coupon codes for a discount, given the discount id and the code strings. Memberful GraphQL: createCoupons(discountId, coupons). |
memberful_graphql | write | Run a GraphQL operation (query or mutation) Escape hatch to run an arbitrary Memberful GraphQL operation, including any mutation, with optional variables. Prefer memberful_query for read-only calls. |
memberful_usage_status | Usage status (free-tier meter) Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter. | |
memberful_upgrade | Upgrade to Pro (unlimited) Subscribe to the Pro plan for UNLIMITED Memberful tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Pro | $9/mo · $90/yr | Unlimited |
This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.