ProPublica MCP Server

Busca y analiza datos del Formulario 990 de organizaciones sin fines de lucro utilizando la API de Nonprofit Explorer de ProPublica.

Documentación

Servidor MCP de ProPublica

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso a la API de Nonprofit Explorer de ProPublica, permitiendo a los modelos de IA buscar y analizar los datos del Formulario 990 de organizaciones sin fines de lucro para la integración con CRM e investigación de prospectos.

🚨 Cambios importantes en v1.0.0

La versión 1.0.0 introduce cambios importantes con la implementación del transporte HTTP Streamable MCP 2025-03-26:

  • Implementaciones remotas ahora usan un único endpoint / en lugar de /sse y /messages
  • La configuración del cliente MCP ha cambiado para implementaciones en la nube (consulte la sección Uso a continuación)
  • Compatibilidad mejorada con Claude Desktop, Cursor y otros clientes MCP
  • No compatible con versiones anteriores de clientes MCP que esperaban el transporte SSE antiguo

Características

  • Buscar organizaciones sin fines de lucro por nombre, ubicación y categoría
  • Recuperar perfiles detallados de organizaciones e información de contacto
  • Acceder a datos financieros del Formulario 990 e historial de presentaciones
  • Analizar tendencias financieras a lo largo de múltiples años
  • Exportar datos en formatos listos para CRM
  • Construido con FastMCP para un rendimiento óptimo

🚀 Implementación con un clic

Implemente el servidor MCP de ProPublica instantáneamente en su plataforma en la nube preferida:

Plataforma de aplicaciones de DigitalOcean

Deploy to DO

Cloudflare Workers

Deploy to Cloudflare Workers

Ambas plataformas ofrecen:

  • DigitalOcean: Implementación basada en contenedores con escalado automático y monitoreo
  • Cloudflare: Implementación sin servidor con distribución global en el borde y cero arranques en frío

Inicio rápido

Requisitos previos

  • Cliente MCP compatible (Claude Desktop, Cursor, etc.)
  • Para desarrollo: Python 3.8 o superior, Git

Instalación

Opción 1: Extensión DXT (Recomendada)

La forma más fácil de instalar el servidor MCP de ProPublica es usando el formato de extensión DXT:

Instalar desde GitHub Releases:

  1. Vaya a la página de versiones
  2. Descargue el último archivo propublica-mcp-[version].dxt
  3. Instale la extensión DXT:

Para Claude Desktop:

# Install from downloaded file
claude-desktop install propublica-mcp-[version].dxt

# Or install directly from GitHub release
claude-desktop install https://github.com/asachs01/propublica-mcp/releases/latest/download/propublica-mcp.dxt

Para otros clientes MCP: Siga las instrucciones de instalación DXT de su cliente o extraiga el archivo DXT a su directorio de extensiones MCP.

Opción 2: Docker (Producción)

Para implementaciones de producción o entornos contenedorizados:

Inicio rápido con Docker:

# Pull the latest image from GitHub Container Registry
docker pull ghcr.io/asachs01/propublica-mcp:latest

# Run the server
docker run -it --rm ghcr.io/asachs01/propublica-mcp:latest

Usando Docker Compose:

  1. Descargue el archivo de composición:
curl -O https://raw.githubusercontent.com/asachs01/propublica-mcp/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/asachs01/propublica-mcp/main/env.example
  1. Configure el entorno (opcional):
cp env.example .env
# Edit .env file with your preferred settings
  1. Inicie el servicio:
docker-compose up -d

Opción 3: Implementación en la nube

Plataforma de aplicaciones de DigitalOcean:

  1. Haga clic en el botón "Implementar en DO" arriba
  2. Conecte su cuenta de GitHub (si aún no está conectada)
  3. Configure las variables de entorno (opcional - se proporcionan valores predeterminados)
  4. Haga clic en "Implementar" - su aplicación estará en línea en minutos con una URL pública

Cloudflare Workers:

  1. Haga clic en el botón "Implementar en Cloudflare Workers" arriba
  2. Conecte su cuenta de GitHub y autorice Cloudflare
  3. Configure las variables de entorno según sea necesario
  4. Implemente - su función sin servidor estará en línea globalmente

🚀 Estrategia de implementación de producción

Las implementaciones en la nube solo se implementan desde la rama deploy, que contiene versiones estables y probadas:

  • Desarrollo: Todo el trabajo ocurre en la rama main
  • Versiones: Cuando se crean etiquetas (por ejemplo, v0.2.0), la rama deploy se actualiza automáticamente
  • Plataformas en la nube: DigitalOcean y Cloudflare implementan solo desde la rama deploy
  • Beneficios: Garantiza que solo las versiones estables y publicadas lleguen a los entornos de producción

Opción 4: Instalación local de Python (Desarrollo)

Para desarrollo y personalización:

  1. Clone el repositorio:
git clone https://github.com/asachs01/propublica-mcp.git
cd propublica-mcp
  1. Cree y active un entorno virtual:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Instale las dependencias:
pip install -r requirements.txt
  1. Instale el paquete:
pip install -e .
  1. Ejecute el servidor:

Para modo stdio (clientes MCP locales):

python -m propublica_mcp.server

Para modo HTTP (clientes MCP remotos):

python -m propublica_mcp.server --http --host 0.0.0.0 --port 8080

Opciones disponibles:

  • --http: Habilitar modo de servidor HTTP para clientes MCP remotos
  • --host: Host al que vincular (predeterminado: 127.0.0.1)
  • --port: Puerto al que vincular (predeterminado: 8080)
  • --log-level: Establecer nivel de registro (DEBUG, INFO, WARNING, ERROR)

Uso con clientes MCP

Este servidor implementa el protocolo de transporte HTTP Streamable MCP 2025-03-26 y se puede usar con cualquier cliente MCP, incluidos Claude Desktop, Cursor y otras herramientas compatibles.

Para extensión DXT (Recomendada):

Una vez instalado como extensión DXT, el servidor se configurará automáticamente. La mayoría de los clientes MCP detectarán y cargarán la extensión automáticamente.

Configuración manual de DXT (si es necesario):

{
  "mcpServers": {
    "propublica-mcp": {
      "extension": "propublica-mcp.dxt",
      "description": "ProPublica Nonprofit Explorer MCP Server (DXT Extension)"
    }
  }
}

Para implementación en la nube (servidor MCP remoto):

DigitalOcean/Cloudflare (HTTP Streamable):

Para servidores MCP remotos de Python, necesitará usar un transporte HTTP. Agregue esto a la configuración de su cliente MCP:

{
  "mcpServers": {
    "propublica-mcp": {
      "transport": {
        "type": "http",
        "url": "https://propublica-mcp-lk97f.ondigitalocean.app"
      },
      "description": "ProPublica Nonprofit Explorer MCP Server (Remote)"
    }
  }
}

Para instalación local (transporte stdio):

{
  "mcpServers": {
    "propublica-mcp": {
      "command": "python",
      "args": ["-m", "propublica_mcp.server"],
      "cwd": "/path/to/propublica-mcp",
      "env": {}
    }
  }
}

Para implementación con Docker (transporte stdio):

{
  "mcpServers": {
    "propublica-mcp": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "ghcr.io/asachs01/propublica-mcp:latest"
      ],
      "description": "ProPublica Nonprofit Explorer MCP Server"
    }
  }
}

Para servidor HTTP local (desarrollo):

# Start HTTP server locally
python -m propublica_mcp.server --http --host 0.0.0.0 --port 8080

Luego configure como servidor remoto:

{
  "mcpServers": {
    "propublica-mcp": {
      "transport": {
        "type": "http",
        "url": "http://localhost:8080"
      },
      "description": "ProPublica Nonprofit Explorer MCP Server (Local HTTP)"
    }
  }
}

Herramientas de API

Herramientas principales

  • search_nonprofits: Buscar organizaciones sin fines de lucro
  • get_organization: Obtener información detallada de la organización por EIN
  • get_organization_filings: Recuperar presentaciones del Formulario 990 para una organización

Herramientas avanzadas

  • analyze_nonprofit_financials: Analizar tendencias financieras a lo largo de múltiples años
  • search_similar_nonprofits: Encontrar organizaciones similares
  • export_nonprofit_data: Formatear datos para importación a CRM

Fuentes de datos

Este servidor utiliza la API de Nonprofit Explorer de ProPublica que proporciona:

  • Datos del Formulario 990 del IRS para organizaciones exentas de impuestos
  • Perfiles de organizaciones e información de contacto
  • Datos financieros e historial de presentaciones
  • Categorización NTEE y estado 501(c)

Desarrollo

Estructura del proyecto

propublica-mcp/
├── server/                    # DXT extension structure
│   ├── src/
│   │   └── propublica_mcp/
│   │       ├── __init__.py
│   │       ├── server.py
│   │       ├── api_client.py
│   │       ├── models.py
│   │       └── tools/
│   ├── requirements.txt
│   └── manifest.json         # DXT extension manifest
├── src/                      # Legacy source structure (for compatibility)
│   └── propublica_mcp/
├── tests/
├── config/
├── .github/
│   └── workflows/
│       └── build-dxt.yml     # Automated DXT packaging
├── Dockerfile
├── docker-compose.yml
├── env.example
├── requirements.txt
├── manifest.json             # Root DXT manifest
└── README.md

El proyecto ahora admite tanto la estructura tradicional de paquetes de Python como el nuevo formato de extensión DXT. El directorio server/ contiene la estructura compatible con DXT que se empaqueta en archivos .dxt durante las versiones.

Desarrollo con Docker

Construcción de la imagen Docker

# Build the image
docker build -t propublica-mcp:dev .

# Or use docker-compose
docker-compose build

Ejecución del entorno de desarrollo

# Run with docker-compose (includes volume mounts for development)
docker-compose -f docker-compose.yml -f docker-compose.override.yml up

# Run tests in container
docker run --rm -v $(pwd):/app propublica-mcp:dev pytest tests/ -v

Variables de entorno

El contenedor Docker admite estas variables de entorno:

  • LOG_LEVEL: Establecer nivel de registro (DEBUG, INFO, WARNING, ERROR)
  • API_RATE_LIMIT: Solicitudes por minuto (predeterminado: 60)
  • PROPUBLICA_API_BASE_URL: URL base de la API (rara vez necesita cambios)

Ejecución de pruebas

Pruebas locales

# Run all tests
pytest tests/ -v

# Run with coverage
pytest tests/ -v --cov=src/propublica_mcp

Pruebas con Docker

# Run tests in Docker
docker run --rm ghcr.io/asachs01/propublica-mcp:latest \
  python -m pytest tests/ -v

# Or with docker compose
docker compose run --rm propublica-mcp pytest tests/ -v

Construcción de extensiones DXT

El proyecto incluye empaquetado DXT automatizado a través de GitHub Actions. Los archivos DXT se construyen automáticamente y se adjuntan a las versiones.

Construcción automatizada de DXT (Recomendada)

Cree una etiqueta para activar el empaquetado DXT automatizado:

# Create and push a version tag
git tag v1.0.0
git push origin v1.0.0

Esto:

  1. Empaquetará el directorio server/ en un archivo .dxt
  2. Creará una versión de GitHub con el archivo DXT adjunto
  3. Construirá y publicará imágenes Docker en GitHub Container Registry

Construcción manual de DXT

Para desarrollo o pruebas:

# Create DXT package manually
cd server/
zip -r ../propublica-mcp-dev.dxt .

Publicación en GitHub Container Registry

El proyecto incluye publicación automatizada a través de GitHub Actions, pero también puede publicar manualmente:

Requisitos previos

  1. Token de acceso personal de GitHub con alcance packages:write
  2. Autenticación en GitHub Container Registry:
    echo $GITHUB_TOKEN | docker login ghcr.io -u YOUR_USERNAME --password-stdin
    

Publicación automatizada (Recomendada)

Empuje a la rama main o cree una etiqueta para activar las compilaciones automatizadas:

# Trigger build for main branch
git push origin main

# Create and push a version tag (also builds DXT)
git tag v1.0.0
git push origin v1.0.0

Publicación manual

Use el script proporcionado (requiere configuración local):

# Build and publish latest
./scripts/docker-publish.sh

# Build and publish specific version
./scripts/docker-publish.sh v1.0.0

Paquetes disponibles

Una vez publicados, los siguientes paquetes estarán disponibles:

Extensiones DXT:

  • Última: Disponible en GitHub releases
  • Versiones etiquetadas: propublica-mcp-v1.0.0.dxt
  • Descarga directa: https://github.com/asachs01/propublica-mcp/releases/latest/download/propublica-mcp.dxt

Imágenes Docker:

  • Última: ghcr.io/asachs01/propublica-mcp:latest
  • Versiones etiquetadas: ghcr.io/asachs01/propublica-mcp:v1.0.0
  • Compilaciones de ramas: ghcr.io/asachs01/propublica-mcp:main

Contribuciones

  1. Siga el estilo de código existente
  2. Agregue pruebas para nuevas características
  3. Actualice la documentación según sea necesario
  4. Asegúrese de que todas las pruebas pasen antes de enviar

Licencia

Licencia MIT - consulte el archivo LICENSE para obtener detalles

Soporte

Para problemas y preguntas:

  • Consulte la documentación
  • Revise los problemas existentes de GitHub
  • Cree un nuevo problema con información detallada