npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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.

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

  1. Log into your NH Civic CRM dashboard
  2. Go to Settings > API Keys
  3. Create a new API key with the permissions you need
  4. 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-crm with the actual path to the cloned repo
  • nh_your_api_key_here with your actual API key
  • https://actioncenter.rebuildnh.com with your organization's CRM URL

3. Install Dependencies

cd mcp-server
npm install

4. 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.