Skip to main content
Glama
2b3pro

propublica-npo-mcp

by 2b3pro
README.md
# propublica-npo-mcp

MCP server exposing the ProPublica Nonprofit Explorer API with curated nonprofit and filing summaries.

## Install

```bash
npm install
```

## Run

```bash
npm run start
```

For local development:

```bash
npm run dev
```

## Claude Desktop / Cline config

```json
{
  "mcpServers": {
    "propublica-npo": {
      "command": "npx",
      "args": ["tsx", "/absolute/path/to/propublica-npo-mcp/src/index.ts"]
    }
  }
}
```

## Tools

`search_nonprofits` searches the ProPublica Nonprofit Explorer index by name or keyword, with optional state, NTEE major category, 501(c) subtype, and page filters.

`get_organization` returns organization metadata plus a curated summary of up to five most recent filings by default. Pass `verbose: true` to get the raw upstream payload.

`list_organization_filings` returns all filings for an EIN, newest first. The default output is curated; `verbose: true` returns the raw filing arrays.

`compare_nonprofits` compares 2-5 organizations side by side using their latest filing with data, while preserving per-EIN 404s as row-level errors.

## Notes

The server uses a 100-entry in-memory LRU cache with a 1-hour TTL. Each upstream request has a 15-second timeout and retries once on network or 5xx failures. ProPublica is public but still rate-limited; if you hit a 429, wait and retry rather than looping.

---

## Support

If this project helps you research nonprofits or build cool agents, consider buying me a coffee! It helps keep the updates coming.

<a href="https://paypal.me/2b3/5">
  <img src="https://img.shields.io/badge/Donate-PayPal-blue.svg" alt="Donate with PayPal" />
</a>

**[https://paypal.me/2b3/5](https://paypal.me/2b3/5)**

---

## License

MIT License - Created by [Ian Shen](https://github.com/2b3pro).

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search for nonprofits, get details by EIN, list filings, and compare multiple nonprofits. There is no overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (compare_nonprofits, get_organization, list_organization_filings, search_nonprofits), ensuring predictability.

Tool Count5/5

With 4 tools, the server is well-scoped for its purpose of exploring and comparing nonprofit data. Each tool contributes a core operation without redundancy.

Completeness4/5

The tool set covers key operations: search, retrieve details, list filings, and compare. A minor gap is the lack of a tool to retrieve details of a specific filing beyond the summary, but verbose options partially address this.

Maintenance

ActivityInactive
ResponsivenessNo issues