A Model Context Protocol (MCP) server that provides access to the Breeze Church Management System API. This server allows AI assistants to interact with Breeze ChMS data including people management, events, contributions, tags, forms, volunteers, and families.
- List people with filtering options
- Get detailed person information
- Add new people
- Update person information
- Delete people
- Manage profile fields
- List events within date ranges
- Get event details and schedules
- Create new events
- Delete event instances
- Manage event calendars
- Handle event attendance and check-ins
- List all tags and tag folders
- Create new tags and folders
- Assign/unassign tags to people
- Organize with tag hierarchies
- List forms (active and archived)
- Get form field definitions
- Retrieve form entries
- Delete form entries
- List volunteers for events
- Schedule/unschedule volunteers
- Manage volunteer roles
- Create new families
- Add/remove people from families
- Destroy existing families
- Add contribution records
- Support multiple payment methods
- Handle fund allocations
- Batch contributions
- View detailed activity logs
- Filter by action type, date, user
- Track system changes
-
Clone this repository
-
Install dependencies:
npm install
-
Build the project:
npm run build
Set the following environment variables:
BREEZE_SUBDOMAIN: Your Breeze subdomain (e.g., "mychurch" for mychurch.breezechms.com)BREEZE_API_KEY: Your Breeze API key (available from Extensions > API page in Breeze)
- Log in to your Breeze ChMS account
- Go to Extensions > API
- Copy your API key
- Note your subdomain from your browser URL
# Development mode
npm run dev
# Production mode
npm run build && npm startAdd this server to your MCP client configuration:
{
"mcpServers": {
"breeze-chms": {
"command": "node",
"args": ["path/to/breeze-chms-mcp-server/dist/index.js"],
"env": {
"BREEZE_SUBDOMAIN": "your-church-subdomain",
"BREEZE_API_KEY": "your-api-key-here"
}
}
}
}For Claude Desktop, add to your configuration file:
{
"mcpServers": {
"breeze-chms": {
"command": "npx",
"args": ["breeze-chms-mcp-server"],
"env": {
"BREEZE_SUBDOMAIN": "your-church-subdomain",
"BREEZE_API_KEY": "your-api-key-here"
}
}
}
}list_people- List people with optional filtering and paginationget_person- Get detailed information about a specific personadd_person- Add a new person to the databaseupdate_person- Update existing person informationdelete_person- Delete a person from the databaselist_profile_fields- Get all profile field sections and definitions
list_tags- List all tags and tag foldersadd_tag- Create a new tagadd_tag_folder- Create a new tag folderassign_tag- Assign a tag to a personunassign_tag- Remove a tag from a person
list_events- List events within a date rangeget_event- Get details about a specific event instanceadd_event- Create a new eventdelete_event_instance- Delete a specific event instancelist_calendars- List all event calendars
checkin_person- Check a person into or out of an eventget_event_attendance- Get attendance records for an event
list_forms- List all forms (active or archived)list_form_fields- List fields for a specific formlist_form_entries- List entries for a specific form
list_volunteers- List volunteers for an event instanceschedule_volunteer- Schedule a volunteer for an eventunschedule_volunteer- Remove a volunteer from an event
create_family- Create a new family with specified peopledestroy_family- Destroy an existing familyadd_to_family- Add people to an existing familyremove_from_family- Remove people from their current families
add_contribution- Add a contribution/donation record
list_activity- List activity log entries with filtering options
// List first 50 people with basic info
{
"tool": "list_people",
"arguments": {
"details": 0,
"limit": 50
}
}
// List people with full details and filtering
{
"tool": "list_people",
"arguments": {
"details": 1,
"filter_json": "{\"tag_contains\": \"volunteer\"}"
}
}{
"tool": "add_person",
"arguments": {
"first": "John",
"last": "Doe",
"fields_json": "[{\"field_id\":\"email_primary\",\"field_type\":\"email\",\"response\":true,\"details\":{\"address\":\"john.doe@example.com\"}}]"
}
}{
"tool": "checkin_person",
"arguments": {
"person_id": "12345678",
"instance_id": "98765432",
"direction": "in"
}
}{
"tool": "add_contribution",
"arguments": {
"date": "2024-01-15",
"person_json": "{\"name\":\"Jane Smith\",\"email\":\"jane@example.com\"}",
"method": "Check",
"amount": 100.00,
"funds_json": "[{\"name\":\"General Fund\",\"amount\":75},{\"name\":\"Missions Fund\",\"amount\":25}]"
}
}{
"tool": "assign_tag",
"arguments": {
"person_id": "12345678",
"tag_id": "567890"
}
}The Breeze API has a rate limit of 20 requests per minute. The server will handle this automatically, but for optimal performance, consider:
- Spacing out API calls (wait ~3.5 seconds between requests)
- Using bulk operations where possible
- Implementing caching for frequently accessed data
The server provides detailed error messages for common issues:
- Invalid API credentials
- Missing required parameters
- API rate limit exceeded
- Invalid person/event/tag IDs
- Network connectivity issues
When updating people or working with custom fields, you'll need to understand Breeze's field structure:
text- Simple text inputtextarea- Multi-line textradio- Multiple choice/dropdown (uses option IDs)checkbox- Multiple selectionsdate- Date fieldsemail- Email addressesphone- Phone numbersaddress- Street addressesbirthdate- Birth datesfamily_role- Family relationship roles
// Text field
{
"field_id": "123456789",
"field_type": "text",
"response": "Sample text value"
}
// Email field
{
"field_id": "987654321",
"field_type": "email",
"response": true,
"details": {
"address": "user@example.com"
}
}
// Phone field
{
"field_id": "456789123",
"field_type": "phone",
"response": true,
"details": {
"phone_mobile": "555-123-4567"
}
}-
Authentication Errors
- Verify your API key is correct
- Check that your subdomain matches your Breeze URL
- Ensure you have API access enabled in Breeze
-
Rate Limit Errors
- Reduce request frequency
- Implement delays between calls
- Use batch operations when available
-
Invalid Field IDs
- Use
list_profile_fieldsto get current field IDs - Field IDs can change if fields are recreated
- Use
-
Permission Errors
- Verify your Breeze user has appropriate permissions
- Some operations require admin-level access
Enable debug logging by setting the environment variable:
DEBUG=breeze-chms-mcp-server- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details.
This is an unofficial integration. For Breeze ChMS support, visit support.breezechms.com.
For issues with this MCP server, please open a GitHub issue.
- Initial release
- Complete API coverage for people, events, tags, forms, volunteers, families
- Support for contributions and activity logging
- Comprehensive error handling and validation