MCP server for managing Open Collective pages via GraphQL API v2
Open Collective MCP Server
Model Context Protocol server for managing Open Collective pages via the GraphQL API v2. Works with any collective — manage profiles, publish updates, create projects, configure tiers, track finances, and list members.
Built by Citizen Infra Builders Club.
Tools (19)
| Domain | Tools | Description |
|--------|-------|-------------|
| Profile | oc-get-collective, oc-edit-collective, oc-update-social-links | Read and update collective profiles, social links |
| Updates | oc-list-updates, oc-get-update, oc-create-update, oc-edit-update, oc-publish-update | Manage collective updates/blog posts |
| Projects | oc-list-projects, oc-get-project, oc-create-project, oc-edit-project | Manage sub-projects within a collective |
| Tiers | oc-list-tiers, oc-create-tier, oc-edit-tier | Configure contribution tiers |
| Financial | oc-get-balance, oc-list-transactions, oc-list-expenses | Track balance, transactions, expenses |
| Members | oc-list-members | List members with role filtering |
Quick Start
1. Get an Open Collective Personal Token
Go to your Open Collective account Settings → For Developers → Personal Tokens. When creating the token, enable all available scopes — at minimum the account scope is required for write operations (creating projects, editing profiles, publishing updates). Without it, mutations will fail with "not allowed for operations in scope account." Rate limit: 100 requests/minute.
2. Deploy
Option A: Railway (remote HTTP)
Set these environment variables:
| Variable | Description |
|----------|-------------|
| OPEN_COLLECTIVE_TOKEN | Open Collective Personal Token |
| API_KEY | Bearer token for MCP client authentication (generate any random string) |
| PORT | Set automatically by Railway |
Option B: Run locally (stdio)
git clone https://github.com/Citizen-Infra/open-collective-mcp.git
cd open-collective-mcp
npm install && npm run build
OPEN_COLLECTIVE_TOKEN=<your-token> node dist/index.js
3. Register in Claude Code
Remote HTTP (Railway):
claude mcp add --transport http \
--header "Authorization: Bearer <API_KEY>" \
-s local open-collective \
https://<your-railway-domain>/mcp
Local stdio:
claude mcp add -e OPEN_COLLECTIVE_TOKEN=<your-token> \
-s local open-collective -- node /path/to/open-collective-mcp/dist/index.js
Development
npm install
npm run dev # stdio mode (local)
PORT=3000 npm run dev # HTTP mode (local)
npm run build # compile TypeScript
Architecture
- Runtime: Node.js/TypeScript with
@modelcontextprotocol/sdk - Transport: Dual — stdio (local dev, no
PORT) / Streamable HTTP (Railway,PORTset) - GraphQL: Lightweight
fetchwrapper againsthttps://api.opencollective.com/graphql/v2 - Auth: Two layers —
Personal-Tokenheader for OC API; Bearer token (API_KEY) for MCP client auth - API Docs: https://developers.opencollective.com