Skip to main content
Glama
theepicsaxguy

OpenCollective MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HETZNER_TOTP_SECRETNoHetzner TOTP secret if 2FA is enabled. Shown when you enable 2FA.
OPENCOLLECTIVE_TOKENYesPersonal Token from OpenCollective dashboard (For Developers -> Personal Tokens). Required for write operations.
HETZNER_ACCOUNT_EMAILYesHetzner account email address. Required for invoice tools.
HETZNER_ACCOUNT_PASSWORDYesHetzner account password. Required for invoice tools.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
oc_get_account

Get detailed information about an OpenCollective account/collective by slug.

Returns account profile, stats (balance, budget, total received/spent), social links, and metadata. Works without authentication for public data.

oc_search_accounts

Search for OpenCollective accounts/collectives.

Supports filtering by search term and account type (COLLECTIVE, ORGANIZATION, INDIVIDUAL, FUND, PROJECT, EVENT).

oc_get_logged_in_account

Get information about the currently authenticated account.

Requires OPENCOLLECTIVE_TOKEN to be set.

oc_edit_account

Edit an OpenCollective account/collective profile.

Requires authentication. Use oc_get_account first to obtain the account ID. Only provided fields will be updated.

oc_edit_account_setting

Edit an account setting like monthly spending limits.

Requires authentication with account scope. Common keys:

  • 'expensesMonthlyLimit': Monthly expense limit in EUR

  • 'VIRTUAL_CARDS_MAX_MONTHLY_AMOUNT': Max monthly virtual card spending

  • 'VIRTUAL_CARDS_MAX_DAILY_AMOUNT': Max daily virtual card spending

oc_set_budget

Set the yearly budget goal for a collective.

Example: Set 800 EUR yearly budget for goingdark collective. Requires token with 'account' scope.

oc_get_members

List members and backers of an OpenCollective account.

Returns member roles (ADMIN, MEMBER, BACKER, etc.), donation totals, and linked account info.

oc_list_expenses

List expenses for an OpenCollective account with filtering.

Supports filtering by status, type, tags, date range, and search term. Use account_slug to filter by collective, from_account_slug to filter by payee.

oc_get_expense

Get detailed information about a specific expense by ID or legacy ID.

oc_create_expense

Submit a new expense to an OpenCollective collective.

Supports INVOICE, RECEIPT, FUNDING_REQUEST, GRANT, and UNCLASSIFIED types. Each expense requires at least one line item with description and amount.

The payee is the account that will receive the payment. The account is the collective the expense is submitted to. Requires authentication.

For bookkeeping expenses (e.g. when collective has negative balance), submit as INVOICE type.

oc_edit_expense

Edit an existing expense. Only provided fields will be updated.

Requires authentication and appropriate permissions.

oc_delete_expense

Delete an expense. Requires authentication and appropriate permissions.

oc_process_expense

Process an expense: approve, reject, pay, hold, release, etc.

Available actions: APPROVE, UNAPPROVE, REQUEST_RE_APPROVAL, REJECT, MARK_AS_UNPAID, SCHEDULE_FOR_PAYMENT, UNSCHEDULE_PAYMENT, PAY, MARK_AS_SPAM, MARK_AS_INCOMPLETE, HOLD, RELEASE.

Requires authentication and admin/host permissions.

oc_list_transactions

List transactions for an OpenCollective account (the ledger).

Shows credits and debits with amounts, descriptions, linked expenses/orders. Supports filtering by type (CREDIT/DEBIT), date range, kind, and search term.

oc_execute_graphql

Execute a raw GraphQL query or mutation against the OpenCollective API v2.

Use this as an escape hatch for operations not covered by other tools. The API endpoint is https://api.opencollective.com/graphql/v2. Authentication is applied automatically if OPENCOLLECTIVE_TOKEN is set.

hetzner_list_invoices

List invoices from Hetzner Cloud.

Returns paginated invoice data. Requires HETZNER_ACCOUNT_EMAIL and HETZNER_ACCOUNT_PASSWORD to be set. Uses browser automation to fetch invoices from accounts.hetzner.com.

hetzner_get_invoice

Get details of a specific Hetzner Cloud invoice by ID.

Requires HETZNER_ACCOUNT_EMAIL and HETZNER_ACCOUNT_PASSWORD to be set.

hetzner_get_latest_invoice

Get the most recent Hetzner Cloud invoice.

Fetches the first page of invoices and returns the latest one. Requires HETZNER_ACCOUNT_EMAIL and HETZNER_ACCOUNT_PASSWORD to be set.

Useful for automated monthly bookkeeping: fetch the latest Hetzner invoice and then use oc_create_expense to submit it to OpenCollective.

hetzner_get_invoice_pdf

Download a Hetzner invoice as PDF.

Returns the PDF content as base64-encoded string. Requires HETZNER_ACCOUNT_EMAIL and HETZNER_ACCOUNT_PASSWORD to be set.

hetzner_parse_invoice_pdf

Download and parse a Hetzner invoice PDF to JSON.

Extracts invoice data like invoice number, date, amount, net, VAT, etc. Requires HETZNER_ACCOUNT_EMAIL and HETZNER_ACCOUNT_PASSWORD to be set.

hetzner_get_invoice_details

Get detailed invoice information from Hetzner usage portal.

Fetches invoice line items as CSV from usage.hetzner.com. Requires HETZNER_ACCOUNT_EMAIL, HETZNER_ACCOUNT_PASSWORD, and HETZNER_CUSTOMER_NUMBER to be set.

cloudflare_list_invoices

List billing history from Cloudflare.

Returns billing items with cost and date. When convert_to_eur is True (default), automatically converts USD amounts to EUR using historical exchange rates from the European Central Bank (via Frankfurter API).

Each invoice includes:

  • amount: Original amount (usually USD)

  • currency: Original currency code

  • amount_eur: Converted EUR amount (when conversion enabled)

  • amount_cents_eur: EUR amount in cents (for OpenCollective)

  • exchange_rate: Rate used for conversion

  • rate_date: Date the exchange rate was fetched

Requires CLOUDFLARE_API_TOKEN to be set. Uses the Cloudflare API (deprecated but functional /user/billing/history endpoint).

cloudflare_get_invoice

Get details of a specific Cloudflare billing item by ID.

When convert_to_eur is True (default), automatically converts USD amounts to EUR using historical exchange rates from the European Central Bank.

Returns invoice with:

  • amount: Original amount (usually USD)

  • currency: Original currency code

  • amount_eur: Converted EUR amount (when conversion enabled)

  • amount_cents_eur: EUR amount in cents (for OpenCollective)

  • exchange_rate: Rate used for conversion

  • rate_date: Date the exchange rate was fetched

Requires CLOUDFLARE_API_TOKEN to be set.

cloudflare_get_latest_invoice

Get the most recent Cloudflare billing item.

Fetches the latest billing item with cost and date. When convert_to_eur is True (default), automatically converts USD amounts to EUR using historical exchange rates from the European Central Bank.

Returns invoice with:

  • amount: Original amount (usually USD)

  • currency: Original currency code

  • amount_eur: Converted EUR amount (when conversion enabled)

  • amount_cents_eur: EUR amount in cents (ready for OpenCollective)

  • exchange_rate: Rate used for conversion

  • rate_date: Date the exchange rate was fetched

Requires CLOUDFLARE_API_TOKEN to be set.

Useful for automated monthly bookkeeping: fetch the latest Cloudflare bill and then use oc_create_expense to submit it to OpenCollective.

Prompts

Interactive templates invoked by user choice

NameDescription
opencollective_overviewOverview of OpenCollective MCP tools.
expense_creation_guideGuide for creating expenses correctly.
budget_guideGuide for setting budgets.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/theepicsaxguy/opencollective-hetzner-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server