Skip to main content
Glama
rosettawang

crystallography-mcp

by rosettawang

Servidor MCP de cristalografía

Inspección de CIF, espaciados d, patrones de polvo y huellas dactilares de polimorfos de triacilglicerol, respaldado por pymatgen.

Construido el 21 de agosto de 2026 para el trabajo de Laurelate bay-nut-fat, pero de dominio general.

Por qué esto y no un MCP de VESTA

VESTA no tiene interfaz de scripting — sin argumentos de línea de comandos documentados, sin modo por lotes, sin macros, sin operación headless. Un MCP sobre él solo podría ejecutar open -a VESTA file.cif y capturar la ventana. pymatgen expone la ciencia real, así que eso es lo que esto envuelve.

Mantén VESTA como visor humano. Es genuinamente bueno en eso.

Related MCP server: mofstructure-mcp

Configuración

Necesita Python ≥3.10 (el pymatgen actual lo requiere) y su propio venv:

python3 -m venv ~/.venvs/crystal
~/.venvs/crystal/bin/python -m pip install -r requirements.txt

Regístralo con Claude Code en el ámbito de usuario, para que se cargue en cada sesión:

claude mcp add -s user crystallography -- \
  "$HOME/.venvs/crystal/bin/python" \
  "$HOME/Documents/crystallography-mcp/server.py"

Comprueba y elimina:

claude mcp list
claude mcp remove -s user crystallography

Funciona con cualquier cliente MCP, no solo con Claude Code — es un servidor stdio simple, así que apunta tu cliente a <venv python> server.py.

Herramientas

Tool

Qué hace

list_datablocks

Enumera las estructuras dentro de un CIF. Llama a esto primero en un archivo desconocido.

read_structure

Celda, volumen, composición, densidad, grupo espacial de spglib

d_spacings

d y 2θ para reflexiones específicas [h,k,l]

powder_pattern

Patrón calculado completo con índices hkl e intensidades relativas

fingerprint_structure

Veredicto α / β′ / β a partir de los espaciados cortos de una estructura

fingerprint_pattern

Veredicto α / β′ / β a partir de un escaneo experimental (lista o archivo de dos columnas)

compare_structures

Ajuste de StructureMatcher de pymatgen + desplazamiento RMS

La trampa de múltiples bloques de datos

Algunos CIF depositados contienen más de una estructura. vanlangevelde2000_CLC_MPM_bprime.cif contiene ambas CLC (a = 57.368 Å, la plantilla β′ que importa) y MPM (a = 76.21 Å). Tomar el bloque 0 silenciosamente es como terminas analizando la estructura equivocada. list_datablocks existe para hacer eso visible.

Huellas dactilares de polimorfos

Espaciados cortos de subcelda de diagnóstico, Å:

Forma

Líneas

Firma

α

4.15

línea ancha única, subcelda hexagonal

β′

4.34 / 4.11 + 3.85 / 3.80

doblete, ortorrómbica perpendicular

β

4.60, 3.85, 3.70

singlete 4.6 fuerte, triclínica paralela

Validado contra ambas plantillas resueltas, que tienen respuestas conocidas:

  • vanlangevelde2000_CLC_MPM_bprime.cif bloque 0 → BETA_PRIME

  • vanlangevelde1999_PPP_beta.cifBETA

Y contra patrones sintéticos construidos a partir de cada conjunto de líneas de referencia → veredicto correcto en los tres casos.

Limitaciones conocidas

  • Las intensidades no son de grado Rietveld. Factores de forma tabulados, Debye–Waller omitido. Las posiciones de los picos son exactas; las intensidades relativas son suficientes para clasificar líneas, no para refinar ocupaciones.

  • La selección de picos es deliberadamente simple — máximos locales con un filtro de prominencia de línea base plana. Para un escaneo débil o ruidoso, baja min_prominence y revisa visualmente la lista seleccionada antes de confiar en el veredicto.

  • spglib puede discrepar con el grupo espacial declarado del CIF. Re-deriva la simetría a partir de las coordenadas, y las estructuras de cadena larga publicadas a menudo tienen sitios de extremo de cadena desordenados o divididos. Afloja symprec antes de concluir algo.

  • Que compare_structures devuelva False entre diferentes longitudes de cadena es esperado, no un error — una plantilla C16 nunca coincidirá con una grasa C10/C12.

Nota de procedencia

Este servidor encontró un error real en R&D/modeling/baynutfat/structure.py: la traslación de centrado I se estaba aplicando dos veces para β′-CLC (el CIF ya lista los 8 operadores centrados), dejando 4 carbonos duplicados — 284 C donde debería haber 280. Las posiciones de los picos no se vieron afectadas, los factores de estructura estaban ligeramente desviados. Ahora está protegido por la prueba de aceptación T10 y modeling/tests/crosscheck_pymatgen.py.

Ese es el argumento para tener una segunda implementación disponible.

Cómo citar

Si un resultado de esto termina en una publicación, cita a pymatgen — hace el trabajo real:

S.P. Ong et al., Comput. Mater. Sci. 68, 314–319 (2013).

Y si renderizaste algo en VESTA junto a esto, VESTA pide ser citado también:

K. Momma and F. Izumi, J. Appl. Crystallogr. 44, 1272–1276 (2011).

Licencia

MIT — ver LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for deconstructing and analyzing Metal-Organic Framework (MOF) structures, including SBU and ligand identification, guest removal, and COF stacking analysis. It enables AI agents to perform automated chemical informatics and structural characterization on crystal structures via CIF files.
    1
  • A
    license
    B
    quality
    B
    maintenance
    Headless PyMOL for molecular visualization, GROMACS/LAMMPS MD trajectories, and clathrate-hydrate cage analysis: H-bond networks, F3/F4 order parameters, and TRACE cage perception + occupancy.
    32
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rosettawang/crystallography-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server