Open Data Model Context Protocol

MIT License
90
  • Apple
  • Linux

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Protocolo de contexto del modelo de datos abiertos

Verlo en acción

https://github.com/user-attachments/assets/760e1a16-add6-49a1-bf71-dfbb335e893e

Habilitamos 2 cosas:

  • Acceso a datos abiertos : acceso a muchos conjuntos de datos públicos directamente desde su aplicación LLM (comenzando con Claude, habrá más por venir).
  • Publicación : Consigue apoyo comunitario y una red de distribución para distribuir tus Datos Abiertos. ¡Haz que todos los usen!

¿Cómo lo hacemos?

  • Acceso : configure nuestros servidores MCP en su aplicación LLM en 2 clics a través de nuestra herramienta CLI (comenzando con Claude, consulte la Hoja de ruta para los próximos pasos).
  • Publicar : Usa las plantillas y directrices proporcionadas para contribuir y publicar rápidamente en Open Data MCP. ¡Haz que tus datos sean fácilmente visibles!

Uso

Acceso: Acceda a datos abiertos mediante la herramienta CLI de Open Data MCP

Prerrequisitos

Si desea utilizar Open Data MCP con el cliente de la aplicación Claude Desktop, debe instalar la aplicación Claude Desktop .

También necesitarás uv para ejecutar fácilmente nuestros servidores CLI y MCP.

macOS
# you need to install uv through homebrew as using the install shell script # will install it locally to your user which make it unavailable in the Claude Desktop app context. brew install uv
Ventanas
# (UNTESTED) powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Herramienta CLI de Open Data MCP

Descripción general
# show available commands uvx odmcp # show available providers uvx odmcp list # show info about a provider uvx odmcp info $PROVIDER_NAME # setup a provider's MCP server on your Claude Desktop app uvx odmcp setup $PROVIDER_NAME # remove a provider's MCP server from your Claude Desktop app uvx odmcp remove $PROVIDER_NAME
Ejemplo

Guía de inicio rápido para el proveedor SBB (compañía ferroviaria) de Suiza:

# make sure claude is installed uvx odmcp setup ch_sbb

Reinicia a Claude y deberías ver un nuevo ícono de martillo en la parte inferior derecha del chat.

Ahora puedes hacerle preguntas a Claude sobre las interrupciones en la red de trenes SBB y te responderá basándose en los datos recopilados en data.sbb.ch

Publicar: Contribuya creando y publicando conjuntos de datos públicos.

Prerrequisitos

  1. Instalar el Administrador de paquetes UV
    # macOS brew install uv # Windows (PowerShell) powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Linux/WSL curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Clonar y configurar el repositorio
    # Clone the repository git clone https://github.com/OpenDataMCP/OpenDataMCP.git cd OpenDataMCP # Create and activate virtual environment uv venv source .venv/bin/activate # Unix/macOS # or .venv\Scripts\activate # Windows # Install dependencies uv sync
  3. Instalar ganchos de pre-confirmación
    # Install pre-commit hooks for code quality pre-commit install

Instrucciones de publicación

  1. Crear un nuevo módulo de proveedor
    • Cada fuente de datos necesita su propio módulo de Python.
    • Cree un nuevo módulo de Python en src/odmcp/providers/ .
    • Utilice un nombre descriptivo que siga el patrón: {country_code}_{organization}.py (por ejemplo, ch_sbb.py ).
    • Comience con nuestro archivo de plantilla como base.
  2. Implementar los componentes necesarios
    • Define tus herramientas y recursos siguiendo la estructura de la plantilla
    • Cada herramienta o recurso debe tener:
      • Descripción clara de su propósito
      • Esquemas de entrada/salida bien definidos utilizando modelos Pydantic
      • Manejo adecuado de errores
      • Cadenas de documentación
  3. Herramienta vs. recurso
    • Elija Implementación de la herramienta si sus datos necesitan:
      • Consulta o cálculo activo
      • Filtrado basado en parámetros
      • Transformaciones complejas
    • Elija Implementación de recursos si sus datos son:
      • Estático o que rara vez cambia
      • Lo suficientemente pequeño para ser cargado en la memoria
      • Contenido simple basado en archivos
      • Documentación de referencia o tablas de búsqueda
    • Consulte la documentación de MCP para obtener orientación.
  4. Pruebas
    • Agregar pruebas en el directorio tests/
    • Siga los patrones de prueba existentes (consulte las pruebas de otros proveedores)
    • Cobertura de prueba requerida:
      • Funcionalidad básica
      • Casos extremos
      • Manejo de errores
  5. Validación
    • Pruebe su servidor MCP usando nuestro cliente experimental: uv run src/odmcp/providers/client.py
    • Verificar que todos los puntos finales respondan correctamente
    • Asegúrese de que los mensajes de error sean útiles
    • Comprobar el rendimiento con cargas de consulta típicas

Para ver otros ejemplos, consulte nuestros proveedores existentes en el directorio src/odmcp/providers/ .

Contribuyendo

Tenemos una hoja de ruta ambiciosa y queremos que este proyecto crezca con la comunidad. El objetivo final es que los millones de conjuntos de datos estén disponibles públicamente para todas las aplicaciones LLM.

¡Para esto necesitamos tu ayuda!

Discordia

Queremos construir una comunidad de apoyo en torno al reto de llevar datos abiertos a los programas de LLM. Únete a nuestro Discord para empezar a chatear: https://discord.gg/QPFFZWKW

Nuestras directrices básicas

Debido a nuestra escala objetivo, queremos mantener las cosas simples y pragmáticas al principio. Abordaremos los problemas con la comunidad conforme surjan.

  1. Simplicidad y mantenibilidad
    • Minimizar las abstracciones para mantener la base de código simple y escalable
    • Centrarse en implementaciones claras y sencillas
    • Evite la complejidad innecesaria
  2. Estandarización / Plantillas
    • Siga las plantillas y pautas proporcionadas de manera constante
    • Mantener una estructura uniforme entre todos los proveedores
    • Utilice patrones comunes para una funcionalidad similar
  3. Dependencias
    • Mantenga las dependencias externas al mínimo
    • Priorizar la configuración de un único repositorio/paquete
    • Evaluar cuidadosamente la necesidad de nuevas dependencias
  4. Calidad del código
    • Formatear código usando ruff
    • Mantenga una cobertura de pruebas integral con pytest
    • Seguir un estilo de código consistente
  5. Seguridad de tipos
    • Utilice sugerencias de tipos de Python en todo momento
    • Aproveche los modelos de Pydantic para la validación de solicitudes/respuestas de API
    • Garantizar la seguridad de tipos en el manejo de datos

Temas tácticos (nuestras prioridades actuales)

  • [x] Inicializar el repositorio con pautas, marco de prueba y flujo de trabajo de contribución
  • [x] Implementar una canalización de CI/CD con versiones automatizadas de PyPI
  • [x] Desarrollar plantilla de proveedor y primera implementación de referencia
  • [ ] Integrar conjuntos de datos abiertos adicionales (se busca activamente contribuyentes)
  • [ ] Establecer pautas claras para elegir entre Recursos y Herramientas
  • [ ] Desarrollar una arquitectura de repositorio escalable para el crecimiento a largo plazo
  • [ ] Ampliar la compatibilidad de parámetros del SDK de MCP (autenticación, limitación de velocidad, etc.)
  • [ ] Implementar funciones adicionales del protocolo MCP (avisos, plantillas de recursos)
  • [ ] Agregar soporte para protocolos de transporte alternativos más allá de stdio (SSE)
  • [ ] Implementar servidores MCP alojados para mejorar la accesibilidad

Hoja de ruta

¡Construyamos la infraestructura de código abierto que permitirá que todos los LLM puedan acceder a todos los datos abiertos juntos!

Acceso:

  • Poner los datos abiertos a disposición de todas las solicitudes de LLM (más allá de Claude)
  • Hacer que las fuentes de datos de datos abiertos se puedan buscar de forma escalable
  • Poner a disposición datos abiertos a través de MCP de forma remota (SSE) con infraestructura patrocinada públicamente

Publicar:

  • Construya los numerosos servidores MCP de Datos Abiertos para que todos los Datos Abiertos sean verdaderamente accesibles (¡lo necesitamos!).
  • De nuestro lado, estamos comenzando a construir servidores MCP para Suiza: ¡un conjunto de datos abierto de ~12 000!
  • Haga que sea aún más fácil crear servidores MCP de datos abiertos

Es muy pronto, y la falta de conjuntos de datos disponibles es actualmente un obstáculo. ¡Ayúdese! Cree su servidor MCP de Datos Abiertos e invite a los usuarios a usarlo también desde sus aplicaciones LLM. ¡Conectemos las LLM con los millones de conjuntos de datos abiertos de gobiernos, entidades públicas, empresas y ONG!

A medida que el MCP de Anthropic evolucione, adaptaremos y actualizaremos el MCP de datos abiertos.

Limitaciones

  • Todos los datos servidos por los servidores Open Data MCP deben ser abiertos.
  • Por favor, respete las licencias de datos de los proveedores de datos.
  • Nuestra Licencia debe ser citada en aplicaciones comerciales.

Referencias

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

ID: wxjcqeq3gt