Xraylarch
FreeNot checkedMCP server that wraps xraylarch for X-ray spectroscopy analysis, enabling loading, processing, analyzing, and plotting XAS/XAFS spectra through natural language
About
MCP server that wraps xraylarch for X-ray spectroscopy analysis, enabling loading, processing, analyzing, and plotting XAS/XAFS spectra through natural language.
README
MCP (Model Context Protocol) server that wraps xraylarch for X-ray spectroscopy analysis. Load, process, analyze, and plot XAS/XAFS spectra through Claude Desktop or Claude Code with natural language tool calls. Supports XANES normalization, EXAFS extraction, Fourier transforms, linear combination fitting, PCA, FEFFIT shell fitting, and publication-quality plotting.
Installation
pip install xraylarch-mcp
Configuration
Claude Desktop
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"xraylarch": {
"command": "python",
"args": ["-m", "xraylarch_mcp"]
}
}
}
Claude Code
claude mcp add xraylarch -- python -m xraylarch_mcp
Quick Start
Ask Claude:
"Load the spectrum at ~/data/fe_foil.xdi and show me the normalized XANES"
Claude will:
- Call
larch_load_spectrumto read your data - Call
larch_normalizeto perform pre-edge subtraction and normalization - Call
larch_plotwithplot_type="norm"to generate a publication-quality plot
Tool Reference
I/O Tools
| Tool | Description |
|---|---|
larch_load_spectrum |
Load a spectrum from file (.xdi, .dat, .csv, .prj, etc.) |
larch_read_athena_project |
Read/inspect Athena project files |
larch_list_groups |
List all loaded spectrum groups |
larch_inspect_group |
Detailed view of a group's arrays and scalars |
larch_remove_group |
Remove a group to free memory |
XAFS Analysis Tools
| Tool | Description |
|---|---|
larch_normalize |
Pre-edge subtraction and normalization (wraps pre_edge) |
larch_autobk |
EXAFS background removal (AUTOBK algorithm) |
larch_xftf |
Forward Fourier transform: chi(k) -> chi(R) |
larch_xftr |
Back Fourier transform: chi(R) -> chi(q) |
larch_fluo_corr |
Fluorescence self-absorption correction |
larch_mback_norm |
MBACK normalization (alternative for problematic data) |
larch_estimate_noise |
Noise estimation in chi(k) and chi(R) |
larch_cauchy_wavelet |
Cauchy wavelet transform for simultaneous k- and R-resolution |
larch_rebin |
Rebin to standard 3-region XAFS energy grid |
Plot Tools
| Tool | Description |
|---|---|
larch_plot |
Publication-quality plots (mu, norm, flat, dmude, chi_k, chi_r, chi_q, cauchy_wavelet) |
Math Tools
| Tool | Description |
|---|---|
larch_smooth |
Smooth arrays with Lorentzian/Gaussian/Voigt kernel |
larch_deriv |
Numerical derivative |
larch_interpolate |
Interpolate onto new energy grid |
larch_merge_groups |
Merge/average multiple spectra |
larch_deglitch |
Remove glitch points |
Fitting Tools
| Tool | Description |
|---|---|
larch_lcf |
Linear combination fitting against standards |
larch_pca |
Principal Component Analysis |
larch_feffit |
FEFFIT EXAFS shell fitting |
larch_peak_fit |
Peak fitting (Gaussian, Voigt, etc.) |
Interactive Tools
| Tool | Description |
|---|---|
larch_interactive_norm |
Open an interactive HTML page to tune normalization parameters |
larch_apply_norm_params |
Apply normalization parameters from a saved JSON file |
Interactive normalization workflow
- Ask Claude to interactively normalize your spectrum
- An HTML page opens in your browser with Plotly.js plots and sliders
- Adjust E0, pre-edge range, post-edge range, and polynomial degree — plots update in real time
- Click Save Parameters to download a JSON file, or Copy to Clipboard
- Tell Claude to apply the saved parameters
"Load Pdfoil.prj and let me interactively choose the normalization parameters"
Advanced
| Tool | Description |
|---|---|
larch_run_code |
Execute arbitrary Python code in the larch session |
Resources
The server exposes documentation resources that Claude can read on demand:
larch://docs/xafs— XAFS analysis referencelarch://docs/io— I/O functions referencelarch://docs/fitting— Fitting referencelarch://docs/feff— FEFF interface referencelarch://docs/interactive— Interactive tools referencelarch://docs/examples/xanes— XANES workflow examplelarch://docs/examples/exafs— EXAFS workflow example
Links
License
BSD-3-Clause (matching xraylarch)
from github.com/Joint-Photon-Sciences-Institute/xraylarch-mcp
Install Xraylarch in Claude Desktop, Claude Code & Cursor
unyly install xraylarch-mcpInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add xraylarch-mcp -- uvx xraylarch-mcpFAQ
Is Xraylarch MCP free?
Yes, Xraylarch MCP is free — one-click install via Unyly at no cost.
Does Xraylarch need an API key?
No, Xraylarch runs without API keys or environment variables.
Is Xraylarch hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Xraylarch in Claude Desktop, Claude Code or Cursor?
Open Xraylarch on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Xraylarch with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
