Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CT_URLYesThe URL of your ChurchTools instance, e.g. https://your-church.church.tools. Must be https; the server follows no redirects.
CT_PASSWORDYesThe password for the ChurchTools account. Keep the value in double quotes in .env, since a # in an unquoted value starts a comment. With 2FA enabled, Claude is asked for the current authenticator code at login.
CT_USERNAMEYesThe username (email address) of the ChurchTools account the server logs in as, e.g. you@example.org.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
ct_search_personsA

Finds persons by text, email, status or archive state. Lists only id, first and last name, email and status id; use ct_get_person for the whole record.

ct_get_personC

Shows the whole record of one person.

ct_create_personA

Writes nothing: returns a plan to create a person, with persons of the same name as possible duplicates. Department ids come from GET /person/masterdata (ct_api_request). Most instances also demand statusId and campusId in fields, both from the same masterdata; an instance that makes the privacy agreement mandatory also demands privacyPolicyAgreementTypeId, privacyPolicyAgreementWhoId and privacyPolicyAgreementDate, which only the user can state. If ChurchTools refuses a duplicate, the result names duplicatePersonId.

ct_update_personB

Writes nothing: returns a plan that patches only the fields whose value changes; null clears a field.

ct_delete_personA

Writes nothing: returns a plan to delete a person; the preview shows the whole record, as a delete cannot be undone.

ct_search_groupsA

Finds groups by text, group type or status. Lists only id, name, group type id and status id; use ct_get_group for the whole group.

ct_get_groupA

Shows a group's id, name, information (type, status, note, meeting time…) and settings. Its roles come from GET /groups/{groupId}/roles (ct_api_request).

ct_list_group_membersB

Lists a group's members with person id, name, role id (groupTypeRoleId) and membership status.

ct_create_groupB

Writes nothing: returns a plan to create a group. If ChurchTools refuses a group of the same name, the result says so.

ct_update_groupB

Writes nothing: returns a plan that patches only the fields whose value changes; null clears a field. Fields go by their flat names, e.g. name, note, groupStatusId, visibility.

ct_delete_groupB

Writes nothing: returns a plan to delete a group and with it every membership; the preview shows the whole group, as a delete cannot be undone.

ct_add_group_memberA

Writes nothing: returns a plan that adds the person to the group. A person who is already a member is an error; use ct_update_group_member. Role ids come from GET /groups/{groupId}/roles (ct_api_request).

ct_update_group_memberA

Writes nothing: returns a plan that patches only the membership fields whose value changes: role, status, comment, start and end date.

ct_remove_group_memberA

Writes nothing: returns a plan that removes the person from the group; the preview shows the whole membership.

ct_list_calendarsA

Lists every calendar the user can see with id, name and visibility.

ct_list_appointmentsA

Lists the occurrences of appointments in the given calendars and date range, each with appointment id, calendar id, title, the occurrence's start and end, and repeatId (0 once, any other value a series). Use ct_get_appointment for the whole appointment.

ct_get_appointmentA

Shows the stored appointment (for a series: its first occurrence, repeat pattern, exceptions and additional dates) with its calculated dates.

ct_create_appointmentB

Writes nothing: returns a plan to create an appointment, a single one by default or a series through repeatId in fields.

ct_update_appointmentA

Writes nothing: returns a plan that changes the stored appointment. ChurchTools has no partial update here, so the plan sends the whole current appointment with the changes; the preview lists the changed fields. For a series the change applies to every occurrence.

ct_delete_appointmentB

Writes nothing: returns a plan to delete an appointment; for a series every occurrence goes. The preview shows the whole appointment, as a delete cannot be undone.

ct_list_eventsA

Lists the events in a date range with id, name, start, end, canceled state and their service assignments (id, serviceId, personId, assignee name, isAccepted, isValid). Use ct_get_event for service names and the whole event.

ct_get_eventB

Shows the whole event with each service assignment: its id (the eventServiceId of the service tools), serviceId, service name, personId, assignee name, isAccepted and isValid (false for a superseded or declined assignment).

ct_list_servicesA

Lists every service (e.g. sermon, sound) with id, name, service group id and service group name.

ct_update_eventA

Writes nothing: returns a plan that changes whether the event is canceled, its note or its admins; ChurchTools takes no other event field here. Only fields whose value changes are sent.

ct_delete_eventA

Writes nothing: returns a plan to delete an event with its service assignments; the preview shows the whole event, as a delete cannot be undone.

ct_assign_event_serviceA

Writes nothing: returns a plan that assigns one service assignment of an event (ct_get_event) to a ChurchTools person (personId) or to a name; give exactly one. For a helper without a ChurchTools account, ct_set_external_event_service is the alternative. ChurchTools gives the filled assignment a new id; ct_get_event shows it.

ct_set_external_event_serviceA

Writes nothing: returns a plan that fills one service assignment of an event (ct_get_event) with the name of a helper who has no ChurchTools account. For a ChurchTools person use ct_assign_event_service. ChurchTools gives the filled assignment a new id; ct_get_event shows it.

ct_loginA

Logs in with the configured user. If the account has 2FA, ask the user for the current code and pass it; never guess it. Without 2FA, omit the code. A new call replaces the current session.

ct_statusA

Shows whether the configuration is valid, the login state, the logged-in user and the ChurchTools version, build and site name.

ct_execute_planA

Runs the writes of a plan that a ChurchTools write tool returned. Call it only after the user saw the preview and said yes. A token is valid once, for 10 minutes. Every guarded record is re-read first; if one changed, nothing is written.

ct_search_apiA

Finds operations of this instance's ChurchTools REST API by keywords over method, path, summary and tags. Use it for anything no other tool covers, then ct_get_operation for the parameters and ct_api_request to call it.

ct_get_operationA

Shows the parameters and the request body schema of one ChurchTools API operation. Schemas are cut below depth 4, long answers at 20 000 characters.

ct_api_requestA

Calls any operation of the ChurchTools REST API. GET runs at once. POST, PUT, PATCH and DELETE write nothing: they return a plan with a preview and a token for ct_execute_plan. The path must match an operation of the spec, with every value filled in.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 33 tools

Disambiguation4/5

Most tools map to a single resource/action, and the plan/preview write workflow is explicit, so agents can usually select correctly. However, the generic ct_search_api/ct_get_operation/ct_api_request trio overlaps in capability with every specialized tool, and the event-service assignment tools require close reading to distinguish.

Naming Consistency4/5

All names use a consistent ct_ snake_case prefix and mostly follow verb_noun (list_, get_, create_, update_, delete_, search_). A few exceptions such as ct_status, ct_login, and ct_api_request break the verb_noun pattern but remain readable and consistent in style.

Tool Count3/5

33 tools is heavy for an MCP server, and the generic API fallback means some specialized tools are optional rather than essential. Still, the broad ChurchTools domain (persons, groups, appointments, events, services) and the safe plan/execute pattern justify a larger surface, so it is borderline rather than excessive.

Completeness4/5

Core resources have strong lifecycle coverage: persons and groups are near-CRUD, appointments have full CRUD, and events support list/get/update/delete plus service assignment. Minor gaps remain (e.g., no create_event, calendar/service CRUD), but the generic ct_api_request provides a documented workaround.

Maintenance

ActivityMaintained
ResponsivenessNo issues