メインコンテンツに移動

Claude

Connect Anthropic's Claude to your church's B1 data. With an API key and a few minutes of setup, you can ask Claude questions like "how many first-time visitors came on Sunday?" or "draft a thank-you email to the people who gave to the building fund this month" — and Claude will read the answers directly from your church's records, scoped to your permissions.

Before You Begin

  • A church admin with the Edit Settings permission (to mint an API key)
  • One of: Claude Code (CLI / IDE extension), Claude Desktop (Mac/Windows), or a Claude Pro/Max/Team account
  • The full URL of your B1 API — usually https://api.churchapps.org for hosted churches, or your self-hosted Api host

What Claude Can See​

Claude talks to B1 through the Model Context Protocol (MCP) server built into the B1 API. Every call Claude makes runs through the same auth, permission, and church-scoping rules as a request from B1Admin — meaning Claude:

  • Only ever sees data for your church
  • Is limited to whatever permissions and scopes the API key you give it carries
  • Cannot reach webhooks, OAuth admin endpoints, or other operator-only paths (those are blocklisted)

A donations:read key lets Claude summarize giving but cannot record a gift. A people:write key can add a person but cannot see donations. Pick the scopes that match the work.

Setup​

1. Create an API key​

  1. In B1Admin go to Settings → Developer → API Keys.
  2. Click New API Key, name it Claude, and select the scopes Claude should have. Common starter sets:
    • Read-only assistant: people:read, groups:read, attendance:read, donations:read, content:read
    • Read + add notes / tasks: add people:write
    • Full operational assistant: add the matching :write scopes you want
  3. Save. The full cak_… key is shown once — copy it.

See API Keys for what each scope allows.

2. Connect Claude​

Pick the Claude client you use:

Claude Code (CLI)​

In a terminal:

claude mcp add --transport http b1 https://api.churchapps.org/mcp \
--header "Authorization: Bearer cak_<prefix>.<secret>"

That's it. Inside any Claude Code session, type /mcp to confirm the b1 server is connected, then ask Claude any question about your church.

Claude Desktop​

Edit Claude Desktop's config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add a b1 server entry. Newer versions of Claude Desktop speak HTTP MCP natively:

{
"mcpServers": {
"b1": {
"url": "https://api.churchapps.org/mcp",
"headers": {
"Authorization": "Bearer cak_<prefix>.<secret>"
}
}
}
}

If your Claude Desktop version only supports stdio servers, bridge through mcp-remote:

{
"mcpServers": {
"b1": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://api.churchapps.org/mcp",
"--header", "Authorization:Bearer cak_<prefix>.<secret>"
]
}
}
}

Restart Claude Desktop. The connector icon in the chat composer will show b1 with three tools (list_endpoints, describe_endpoint, api_call).

Claude.ai (web) — Custom Connector​

Claude.ai's "Add custom connector" feature requires OAuth, which the B1 MCP server does not support today. Use Claude Code or Claude Desktop instead.

3. Ask Claude something​

Once connected, no special syntax is needed — Claude discovers what's available on the fly. Examples:

  • "How many people are in my church and what are the active groups?"
  • "Summarize this month's donations by fund."
  • "List the people who attended the 10am service last Sunday but haven't been to a Wednesday group in the last 60 days."
  • "Draft a welcome email for the four people added this week, addressed by first name."

Behind the scenes Claude will call the MCP tools — first to discover the right endpoint, then to fetch the data — and answer in plain language.

How It Works​

The B1 API exposes a single MCP endpoint at /mcp. Claude connects to it, authenticates with your cak_… key, and gets access to three tools:

ToolWhat it does
list_endpointsLists the REST endpoints Claude can call, filterable by path. Used for discovery.
describe_endpointReturns a short summary and an example request/response for a specific endpoint.
api_callActually invokes a REST endpoint as the authenticated user.

This is the same /membership/people, /giving/donations, /attendance/visits etc. surface your B1Admin uses — every authorization rule applies identically.

Safety and Limits​

  • Per-church isolation. The API key resolves to one church. Claude has no way to see other churches' data.
  • Permission-scoped. If you remove a permission from the person who minted the key in B1Admin, Claude loses it on the next call — instantly.
  • Revocable. Delete the key in Settings → Developer → API Keys and Claude's access ends immediately.
  • Blocklist. Provider webhooks, OAuth client admin endpoints, and the operator-only apiEmails route are not callable via MCP.
  • Response size cap. A single tool response is capped at 64 KB so long lists don't blow out Claude's context — Claude will narrow the query with filters when this happens.
  • Audit trail. Mutations go through the same audit log as B1Admin actions; you can review them under Reports → Audit Log.

Cost​

ChurchApps is free and open-source — the MCP server is part of the API your church already runs. Anthropic charges for Claude usage per their plans. There is no per-call cost from ChurchApps.

Troubleshooting​

Claude reports "Unauthorized" or 401: the bearer token is missing, malformed, or the key has been revoked. Re-check the Authorization: Bearer cak_… header (note the space and the literal Bearer).

A tool call returns 403: the API key doesn't have the scope for that endpoint. Add the scope in Settings → Developer → API Keys (you'll need to create a new key — scopes can't be changed in place) and update Claude's config.

Claude can't find an endpoint: ask it to call list_endpoints with a filter, e.g. "use list_endpoints with filter 'donations' to find the right path". The route inventory is generated from the live API, so anything you can hit with curl is there.

Local development: swap https://api.churchapps.org/mcp for http://localhost:8084/mcp — same auth, same tools.