Skip to main content

xraylib MCP Server

CI Docker Image PyPI License: BSD-3-Clause

A Model Context Protocol (MCP) server that provides access to xraylib X-ray interaction data through a standardized interface. Query cross-sections, fluorescence lines, edge energies, and more from any MCP-compatible client.

Table of Contents

Features

This server exposes 104 tools organized into the following categories:

Utility tools

  • AtomicNumberToSymbol / SymbolToAtomicNumber -- convert between atomic numbers and element symbols
  • AtomicWeight -- atomic weight (g/mol)
  • ElementDensity -- element density (g/cm3)
  • ElectronConfig -- electron configuration for a given shell
  • CompoundParser -- parse chemical formulas (e.g. SiO2, Ca5(PO4)3F)
  • Atomic_Factors -- atomic scattering factors f0, f', f''

Line, edge, and shell properties

  • LineEnergy / EdgeEnergy -- fluorescence line and absorption edge energies (keV)
  • FluorYield / JumpFactor / RadRate -- fluorescence yields, jump factors, radiative rates
  • AtomicLevelWidth -- natural widths of atomic levels (keV)

Cross-sections (element)

  • CS_Total, CS_Photo, CS_Rayl, CS_Compt, CS_Energy, CS_KN -- mass cross-sections (cm2/g)
  • CSb_Total, CSb_Photo, CSb_Rayl, CSb_Compt -- atomic cross-sections (barn/atom)

Fluorescence cross-sections

  • CS_FluorLine / CSb_FluorLine -- line fluorescence cross-sections
  • CS_FluorShell / CSb_FluorShell -- shell fluorescence cross-sections
  • Kissel photoionization variants with full, radiative, nonradiative, and no cascade options

Differential cross-sections

  • DCS_Rayl / DCS_Compt and barn/atom variants -- unpolarized differential cross-sections
  • DCSP_Rayl / DCSP_Compt and barn/atom variants -- polarized differential cross-sections

Scattering factors

  • FF_Rayl / SF_Compt -- Rayleigh form factor and Compton scattering function
  • MomentTransf / ComptonEnergy -- momentum transfer and Compton-scattered photon energy
  • Fi / Fii -- anomalous scattering factors
  • ComptonProfile / ComptonProfile_Partial -- Compton profiles (total and per-shell)

Auger and Coster-Kronig transitions

  • AugerRate / AugerYield -- Auger transition rates and yields
  • CosKronTransProb -- Coster-Kronig transition probabilities

Compound cross-sections

  • All CS/CSb, DCS/DCSb, and DCSP/DCSPb variants for compounds (by chemical formula)
  • Kissel photoionization variants for compounds

Refractive index

  • Refractive_Index_Re / Refractive_Index_Im -- real and imaginary parts of the refractive index

NIST compounds

  • GetCompoundDataNISTByName / GetCompoundDataNISTByIndex / GetCompoundDataNISTList -- access the built-in NIST compound database

Radionuclide data

  • GetRadioNuclideDataByName / GetRadioNuclideDataByIndex / GetRadioNuclideDataList -- access the built-in radionuclide database (X-ray lines, intensities, gamma energies)

Constant listings

  • ListLineConstants / ListShellConstants / ListTransitionConstants / ListAugerConstants / ListNISTCompoundConstants -- enumerate valid constant names

Installation

Using uv (recommended)

uv tool install xraylib-mcp-server

Using pip

pip install xraylib-mcp-server

Usage

As a standalone server

# Run with stdio transport (for Claude Desktop, etc.)
xraylib-mcp-server

# Run with HTTP transport
xraylib-mcp-server --transport http --port 8000

# Run with SSE transport
xraylib-mcp-server --transport sse --port 8000

With Claude Desktop

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "xraylib": {
      "command": "uvx",
      "args": ["xraylib-mcp-server"]
    }
  }
}

Or using the pre-built Docker image:

{
  "mcpServers": {
    "xraylib": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/tschoonj/xraylib-mcp-server:latest"]
    }
  }
}

With VS Code

Add to your VS Code settings (.vscode/settings.json or user settings):

{
  "mcp.servers": {
    "xraylib": {
      "command": "uvx",
      "args": ["xraylib-mcp-server"]
    }
  }
}

Or using the pre-built Docker image:

{
  "mcp.servers": {
    "xraylib": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/tschoonj/xraylib-mcp-server:latest"]
    }
  }
}

With Claude Code

Add the server using the CLI:

claude mcp add xraylib -- uvx xraylib-mcp-server

Or using the pre-built Docker image:

claude mcp add xraylib -- docker run -i --rm ghcr.io/tschoonj/xraylib-mcp-server:latest

As a development server

# Run in development mode with MCP inspector
uv run mcp dev src/xraylib_mcp_server/server.py

Using Docker

Pre-built images from GitHub Container Registry

# Pull the latest image
docker pull ghcr.io/tschoonj/xraylib-mcp-server:latest

# Run with stdio transport
docker run -i --rm ghcr.io/tschoonj/xraylib-mcp-server:latest

# Run with HTTP transport on port 8000
docker run --rm -p 8000:8000 ghcr.io/tschoonj/xraylib-mcp-server:latest xraylib-mcp-server --transport http --port 8000

# Use a specific version
docker pull ghcr.io/tschoonj/xraylib-mcp-server:0.1.0
docker run -i --rm ghcr.io/tschoonj/xraylib-mcp-server:0.1.0

Local development with Docker

# Build the Docker image locally
docker build -t xraylib-mcp-server .

# Run with stdio transport
docker run -i --rm xraylib-mcp-server

# Run with HTTP transport on port 8000
docker run --rm -p 8000:8000 xraylib-mcp-server xraylib-mcp-server --transport http --port 8000

Development

Setup

# Clone the repository
git clone https://github.com/tschoonj/xraylib-mcp-server.git
cd xraylib-mcp-server

# Install development dependencies
uv sync --dev

Running tests

# Run all tests
uv run pytest

# Run with coverage
uv run pytest --cov=src/xraylib_mcp_server --cov-report=html

Code quality

# Lint
uv run ruff check .

# Format
uv run ruff format .

# Type check
uv run mypy src/ --ignore-missing-imports

License

BSD 3-Clause License -- see LICENSE for details.

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Run the test suite
  6. Submit a pull request

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xraylib_mcp_server-0.1.6.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xraylib_mcp_server-0.1.6-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file xraylib_mcp_server-0.1.6.tar.gz.

File metadata

  • Download URL: xraylib_mcp_server-0.1.6.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for xraylib_mcp_server-0.1.6.tar.gz
Algorithm Hash digest
SHA256 a235e6c58e95fc4281c9b8ff6d378b0da4be441fec7939b2565dd6a1f186480c
MD5 f40975352f3d23eb7fb7ff048c39850f
BLAKE2b-256 2c4001f7f5ebf9c71f45575881cb7cb045bd953dca9291cd72acb51812f81bed

See more details on using hashes here.

Provenance

The following attestation bundles were made for xraylib_mcp_server-0.1.6.tar.gz:

Publisher: ci.yml on tschoonj/xraylib-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xraylib_mcp_server-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for xraylib_mcp_server-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 40291a7e90b668de3b0884f9437f0e2d87d90756e250e9b385310f2655482740
MD5 396d56066d49667313885a5f066374ed
BLAKE2b-256 bc6ad098dc40bab5dacbfacd3b671de2437fa8dbfbab0392b5d1696e8e78162d

See more details on using hashes here.

Provenance

The following attestation bundles were made for xraylib_mcp_server-0.1.6-py3-none-any.whl:

Publisher: ci.yml on tschoonj/xraylib-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page