ChurchSuite Bookings MCP
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., "@ChurchSuite Bookings MCP show me all bookings for next week"
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.
ChurchSuite Bookings MCP
A lightweight FastMCP server that exposes read-only ChurchSuite booking data as MCP tools.
Setup
Create an API-enabled user or an OAuth App in ChurchSuite to obtain a Client ID and Client Secret (see ChurchSuite auth docs). Grant it the
bookings.read,rotas.read, andaddressbook.readscopes.Install dependencies:
uv syncCopy
.env.exampleto.envand fill in your credentials, or export the variables directly:export CHURCHSUITE_CLIENT_ID=... export CHURCHSUITE_CLIENT_SECRET=...Run the server:
uv run churchsuite-mcp
Related MCP server: Dezrez Rezi MCP server
Tools
list_bookings(status?, starts_after?, starts_before?, customer_ids?, type_ids?, q?, page?, per_page?)— list bookings with optional filters.get_booking(id)— fetch a single booking by ID.list_booked_resources(booking_ids?, page?, per_page?)— list resources booked against bookings.list_resources(category?, q?, status?, page?, per_page?)— list bookable resources (rooms, equipment, etc.).get_resource(id)— fetch a single bookable resource by ID.list_ministries(statuses?, q?, ids?, page?, per_page?)— list Rotas ministries.get_ministry(id)— fetch a single ministry, including its serving days/time/rotation type.list_ministry_teams(ministry_ids?, team_ids?, page?, per_page?)— list teams within ministries.get_ministry_team(id)— fetch a single ministry team.list_ministry_members(ministry_ids?, role_ids?, team_ids?, page?, per_page?)— list ministry members.list_rota_roles(member_ids?, ministry_ids?, page?, per_page?)— list roles defined within ministries.find_serving_pattern(person_id, person_type)— find a person's ministry memberships and their recurring serving pattern (days/time/rotation type).
Note on rotas: ChurchSuite's API v2 does not expose individual rota slot assignments or dates — only ministry membership and a ministry's recurring schedule definition.
find_serving_patternis the closest available answer to "when am I next serving?": it returns the ministries/ teams/roles a person belongs to and how often that ministry serves, not a confirmed next date.
Using with an MCP client
Add to your client's MCP config (e.g. .mcp.json for Claude Code):
{
"mcpServers": {
"churchsuite-bookings": {
"command": "uv",
"args": ["run", "--directory", "/path/to/churchsuite-mcp", "churchsuite-mcp"],
"env": {
"CHURCHSUITE_CLIENT_ID": "your-client-id",
"CHURCHSUITE_CLIENT_SECRET": "your-client-secret"
}
}
}
}Claude chat (desktop app)
To add this as a local MCP server in the Claude desktop app, open
Settings → Developer → Edit Config to locate claude_desktop_config.json,
then add the same churchsuite-bookings entry under mcpServers:
{
"mcpServers": {
"churchsuite-bookings": {
"command": "uv",
"args": ["run", "--directory", "/path/to/churchsuite-mcp", "churchsuite-mcp"],
"env": {
"CHURCHSUITE_CLIENT_ID": "your-client-id",
"CHURCHSUITE_CLIENT_SECRET": "your-client-secret"
}
}
}
}Replace /path/to/churchsuite-mcp with the absolute path to this project
(e.g. /Users/steve/churchsuite-mcp), fill in your real Client ID/Secret,
then restart Claude for the change to take effect.
Auth
Authentication uses the OAuth2 Client Credentials grant against
https://login.churchsuite.com/oauth2/token. Access tokens are cached in
memory and transparently refreshed before they expire.
Available Tools
16 toolsfind_next_booking_by_nameA
Find the next upcoming booking whose name/title fuzzy-matches the given string.
Searches /bookings/bookings by name (ChurchSuite's q filter also matches date, reference, and sequence_id). from_date (YYYY-MM-DD) is inclusive and defaults to today.
Inputs: name (required), from_date, status. Returns: object
find_next_booking_for_resourceA
Find the next upcoming booking that has a specific resource booked against it.
Provide either resource_id, or resource_name to resolve it via a fuzzy search against /bookings/resources (must match exactly one resource). from_date (YYYY-MM-DD) is inclusive and defaults to today.
Note: ChurchSuite's API has no resource or date filter on /bookings/booked_resources, so this fetches every booked resource record and filters client-side - it may be slow on accounts with a long booking history.
Inputs: resource_id, resource_name, from_date. Returns: object
find_serving_patternA
Find which Rotas ministries/teams/roles a person belongs to, and their typical serving pattern.
IMPORTANT: ChurchSuite's API v2 does not expose individual rota slot assignments or dates, only ministry membership and a ministry's recurring schedule definition (days, starts_at/ends_at, rotation_type). This tool cannot tell you the exact next date someone is rostered on; it returns the ministries they serve in plus that ministry's recurrence pattern so you can describe roughly how often/when they serve (e.g. "fortnightly on Sundays at 09:30"). For a confirmed next serving date, the user should check My ChurchSuite directly.
Inputs: person_id (required), person_type (required). Returns: object
get_bookingA
Retrieve a single ChurchSuite booking by its ID.
Inputs: id (required). Returns: object
get_contactA
Retrieve a single addressbook contact by its ID.
Inputs: id (required). Returns: object
get_ministryB
Retrieve a single Rotas ministry by its ID, including its serving days, times, and rotation type.
Inputs: id (required). Returns: object
get_ministry_teamB
Retrieve a single Rotas ministry team by its ID.
Inputs: id (required). Returns: object
get_resourceA
Retrieve a single bookable resource by its ID.
Inputs: id (required). Returns: object
list_booked_resourcesB
List resources booked against ChurchSuite bookings, optionally filtered by booking ID.
Inputs: booking_ids, page, per_page. Returns: object
list_bookingsA
List ChurchSuite bookings, optionally filtered by status, date range, customer, type, or a fuzzy search string.
Dates (starts_after/starts_before) must be in YYYY-MM-DD format.
Inputs: status, starts_after, starts_before, customer_ids, +4 more. Returns: object
list_contactsB
List addressbook contacts, optionally filtered by status, tag, or a fuzzy search string.
Use this to find a contact's numeric ID (person_id, with person_type "addressbook_contact") for use with find_serving_pattern. The fuzzy search (q) matches against first_name, last_name, formal_name, email, telephone, mobile, address, job, and employer.
Inputs: status, q, tag_ids, page, +1 more. Returns: object
list_ministriesC
List ChurchSuite Rotas ministries (e.g. Worship, Production), optionally filtered by status or name.
Inputs: statuses, q, ids, page, +1 more. Returns: object
list_ministry_membersA
List members of Rotas ministries, optionally filtered by ministry, role, or team.
Each member links to a person (an addressbook contact or child) via person.id and person.type. There is no API filter by person, so to find a specific person's memberships, list members for the relevant ministries/teams and filter the results by person.id client-side.
Inputs: ministry_ids, role_ids, team_ids, page, +1 more. Returns: object
list_ministry_teamsB
List the teams within Rotas ministries, optionally filtered by ministry or team ID.
Inputs: ministry_ids, team_ids, page, per_page. Returns: object
list_resourcesC
List the bookable resources (rooms, equipment, etc.) that can be booked against a booking.
Inputs: category, q, status, page, +1 more. Returns: object
list_rota_rolesC
List the roles (e.g. Worship Leader, Sound Engineer) defined within Rotas ministries.
Inputs: member_ids, ministry_ids, page, per_page. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Each tool targets a distinct entity or action: specific 'find' tools for next booking by name vs resource, separate 'get' and 'list' for each data type (bookings, contacts, ministries, etc.). No overlapping purposes.
All tool names use consistent snake_case with a verb_noun pattern ('list_', 'get_', 'find_'). No mixing of conventions, making the set predictable.
With 16 tools, the set covers bookings, contacts, resources, and rotas comprehensively. Slightly above the ideal range but still well-scoped; each tool has a clear role.
The tool set is entirely read-only, lacking any create, update, or delete operations. For a 'Bookings' server, missing mutation tools is a significant gap that will hinder common tasks.
Related MCP Connectors
Read ChurchSuite contacts, children, small groups, rotas, events and attendance; add contact notes.
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Read Appointedd bookings, customers and availability; create, change and cancel bookings.
WhatsApp® reminders and rescheduling for Calendly. Public read-only MCP endpoint.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables MCP clients to search availability, read services, resources, bookings and customers, and, when writes are enabled, reserve slots, create or cancel bookings, and add or update customers.10MIT
- AlicenseAqualityCmaintenanceIt enables MCP clients such as Claude and ChatGPT to read an estate agency's Dezrez Rezi CRM data, including properties and their timelines, people, groups, and offers. It is read-only and applies privacy redactions by default.10MIT
- AlicenseNot gradedqualityCmaintenanceLets MCP clients such as Claude and ChatGPT read a rota and time-and-attendance account, exposing venues, groups, shifts, absences and absence types, time entries, venue events and staff names through read-only tools that never return pay data.MIT
- AlicenseAqualityCmaintenanceEnables MCP clients such as Claude and ChatGPT to read a Timesheet Portal account, including timesheet time and cost reports, invoices, leave bookings and balances, projects or jobs, clients, users and cost centres, across both the Standard and Recruitment editions. It is read-only, with personal and pay data withheld unless explicitly requested.8MIT