@nh-civic-crm/mcp-server
v2.0.0
Published
Model Context Protocol (MCP) server for NH Civic CRM — lets Claude and other MCP clients read and write contacts, donations, petitions, events, campaigns, lists, and email blasts in your CRM org.
Maintainers
Readme
NH Civic CRM MCP Server
An MCP (Model Context Protocol) server that allows Claude to interact with your NH Civic CRM organization.
Features
- Dashboard: Get a quick overview of contacts, donations, subscriber growth, and recent activity
- Contacts: List, search, filter, create, update contacts. Manage tags.
- Email Blasts: List blasts with open/click rates, view details, create drafts
- Petitions: Create petitions, view signatures, track progress
- Events: Create and manage events, view RSVPs
- Campaigns: Create action alert campaigns
- Lists: Create and manage contact lists, view list members
- Donations: View donation history and summary stats with top donors
Setup
1. Get an API Key
- Log into your NH Civic CRM dashboard
- Go to Settings > API Keys
- Create a new API key with the permissions you need
- Copy the key (it's only shown once!)
2. Configure Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on Mac):
{
"mcpServers": {
"my-crm": {
"command": "node",
"args": ["/path/to/nh-civic-crm/mcp-server/index.js"],
"env": {
"NH_CRM_API_KEY": "nh_your_api_key_here",
"NH_CRM_BASE_URL": "https://actioncenter.rebuildnh.com"
}
}
}
}Replace:
/path/to/nh-civic-crmwith the actual path to the cloned reponh_your_api_key_herewith your actual API keyhttps://actioncenter.rebuildnh.comwith your organization's CRM URL
3. Install Dependencies
cd mcp-server
npm install4. Restart Claude Desktop
After saving the settings, restart Claude Desktop. You should now have access to CRM tools.
Available Tools (31)
Dashboard
| Tool | Description |
|------|-------------|
| crm_get_info | Get info about your organization and permissions |
| crm_dashboard_stats | Quick overview: contacts, subscribers, donations, active items |
Contacts
| Tool | Description |
|------|-------------|
| crm_list_contacts | List/search/filter contacts (by tag, city, district, status) |
| crm_get_contact | Get full contact details (tags, lists, districts, donations) |
| crm_create_contact | Create or update a contact by email |
| crm_update_contact | Update contact fields (name, phone, address, notes, etc.) |
| crm_upload_contacts_csv | Bulk upload contacts from CSV data |
Tags
| Tool | Description |
|------|-------------|
| crm_list_tags | List all tags with contact counts |
| crm_add_contact_tag | Add a tag to a contact (auto-creates if new) |
| crm_remove_contact_tag | Remove a tag from a contact |
Email Blasts
| Tool | Description |
|------|-------------|
| crm_list_blasts | List email blasts with open/click rates |
| crm_get_blast | Get blast details and delivery stats |
| crm_create_blast_draft | Create a draft email blast (must send from web UI) |
| crm_update_blast_draft | Update a draft or scheduled blast |
Petitions
| Tool | Description |
|------|-------------|
| crm_list_petitions | List petitions |
| crm_get_petition | Get petition details |
| crm_create_petition | Create a new petition |
| crm_get_petition_signatures | Get petition signatures |
Events
| Tool | Description |
|------|-------------|
| crm_list_events | List events (upcoming by default) |
| crm_get_event | Get event details |
| crm_create_event | Create an event |
| crm_get_event_rsvps | Get event RSVPs with check-in status |
Campaigns (Action Alerts)
| Tool | Description |
|------|-------------|
| crm_list_campaigns | List action campaigns |
| crm_create_campaign | Create a campaign |
Lists
| Tool | Description |
|------|-------------|
| crm_list_lists | List contact lists |
| crm_create_list | Create a list |
| crm_add_contacts_to_list | Add contacts to a list |
| crm_get_list_contacts | Get contacts in a list |
Donations
| Tool | Description |
|------|-------------|
| crm_list_donations | View donations (read-only) |
| crm_donation_summary | Donation totals by period + top donors |
Activity
| Tool | Description |
|------|-------------|
| crm_view_activity_logs | View API activity logs |
Example Usage in Claude
Once configured, you can ask Claude things like:
- "Show me my CRM dashboard stats"
- "How many new subscribers did we get this week?"
- "List my email blasts and their open rates"
- "Create a draft newsletter with subject 'March Update'"
- "Show me contacts tagged as 'VIP'"
- "Update John Smith's phone number to 603-555-1234"
- "Tag contact #42 as 'Board Member'"
- "How much did we raise in the last 30 days? Who are our top donors?"
- "Show me the RSVPs for event #15"
- "Create a petition called 'Support Local Schools' with a goal of 500 signatures"
- "List the contacts in our 'Newsletter' list"
Security
- Your API key is stored locally and never shared
- All API requests are made directly from your machine to the CRM
- Permissions are enforced by the API key's scopes
- Email blasts can only be created as drafts - sending must be done from the web UI
- Contact deletion is not available via the API
- All API activity is logged and auditable
- You can revoke API keys at any time from the CRM dashboard
Troubleshooting
"API key required" error
Make sure NH_CRM_API_KEY is set in the MCP server config.
"Invalid API key" error
Check that your API key is correct and hasn't been revoked.
"Insufficient scope" error
Your API key doesn't have permission for that action. Create a new key with the required scopes in Settings > API Keys.
Connection issues
Make sure NH_CRM_BASE_URL points to the correct CRM instance.
Support
For issues with this MCP server, contact your CRM administrator.
