OPTIMADE MCP Server

Un servidor MCP configurable para la API de OPTIMADE, que permite filtros y endpoints personalizados para bases de datos de ciencia de materiales.

Documentación

SERVIDOR MCP DE OPTIMADE

Una herramienta del Protocolo de Contexto de Modelos (MCP) para consultar bases de datos de materiales compatibles con Optimade, con presets de filtros personalizados totalmente configurables y endpoints de proveedores.


🎯 Descripción general

Esta herramienta permite consultas de datos estructurados en múltiples bases de datos OPTIMADE (por ejemplo, Materials Project, Materials Cloud, COD), mediante el protocolo MCP. Las capacidades clave incluyen:

1..Fácilmente desplegable mediante uvx, cline

2.Es posible interactuar con el cliente en lenguaje natural, lo que permite que el modelo de lenguaje grande genere el filtro de consulta OPTIMADE.

3.El JSON devuelto por OPTIMADE se guardará localmente y se generará un resumen durante la interacción.

Nota: La consulta requiere dos parámetros. Uno es el filtro de consulta optimade y el otro es la base de datos a consultar.


✨ Características

  • Recursos MCP que el modelo puede leer bajo demanda:
    • optimade://docs/filters – Gramática de filtros y ejemplos (Markdown)
    • optimade://spec/queryable_props – Lista blanca de campos marcados como “Query: MUST be a queryable property …” (JSON)
    • optimade://docs/providers – URLs de proveedores predeterminados (JSON, generados a partir de la configuración)
    • optimade://docs/filter_presets – Fragmentos de filtros con nombre (JSON)
    • optimade://prompts/ask_for_provider – Prompt del sistema para guiar la selección de URL y el linting (Texto)
    • optimade://results/<uuid> – Dinámico: JSON completo de consultas anteriores
  • Herramientas
    • lint_filter(filter) → "ok" / "warn: …" / "syntax error: …"
      (Advertencia = no está en la lista blanca pero está permitido; Error de sintaxis = bloqueado)
    • query_optimade(filter, baseUrls?) → vista previa (primeros 5) + enlace al recurso JSON completo
    • list_providers() → Descubrir endpoints públicos globales de OPTIMADE
  • Respaldo de proveedores
    1. baseUrls proporcionado por el usuario → 2) valores predeterminados de configuración → 3) espejo único de respaldo (https://optimade.fly.dev)
  • Listo para proxy mediante .env (HTTP_PROXY, HTTPS_PROXY).

🧩 Lo que el LLM puede leer (Recursos)

URITipoPropósito
optimade://docs/filterstext/markdownGramática completa y ejemplos
optimade://spec/queryable_propsapplication/jsonLista blanca: campos marcados como “MUST be queryable”
optimade://docs/providersapplication/jsonURLs de proveedores predeterminados desde la configuración
optimade://docs/filter_presetsapplication/jsonFragmentos de filtros con nombre para inspiración
optimade://prompts/ask_for_providertext/plainPrompt del sistema para guiar la elección de URL y el linting
optimade://results/<uuid>application/jsonDinámico: JSON completo de consultas anteriores

Importante: Los recursos no se inyectan automáticamente. Su cliente MCP debe llamar a resources/read (o configurar el inicio/flujo de trabajo para leerlos).


⚙️ Instalación y uso

✅ Recomendado mediante uv

1.Instale la herramienta:

uv pip install optimade-mcp-server

2.En cline o cualquier lanzador compatible con MCP, configure la herramienta de la siguiente manera:

{
  "mcpServers": {
    "optimade_mcp_server": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "uvx",
      "args": [
        "optimade-mcp-server"
      ]
    }
  }
}

🌐 Soporte de proxy (Opcional)

Si necesita usar una VPN o proxy, cree un archivo .env en la raíz del proyecto:

HTTP_PROXY=http://127.0.0.1:<your-port>
HTTPS_PROXY=http://127.0.0.1:<your-port>

Si no necesita un proxy, puede comentar o eliminar la configuración del proxy en el código fuente.


🪪 Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulte LICENSE para más detalles.


🙋 Preguntas frecuentes

P: ¿Los recursos se inyectan automáticamente en el contexto del modelo?
R: No. El cliente debe llamar a resources/read (o configurar un paso de inicio/flujo de trabajo). El servidor sí aplica el respaldo de proveedores automáticamente si se omiten baseUrls.

P: ¿Puedo usar campos que no estén en la lista blanca?
R: Sí. lint_filter devuelve warn: band_gap. El modelo debe mostrar una advertencia y pedirle confirmación antes de consultar.

P: ¿Cómo exporto el resultado completo?
R: El servidor siempre guarda un JSON completo en optimade://results/<uuid>.