The MCP foundation for the MolCrafts ecosystem
Documentation · Quickstart · Write a Provider · Issues
The MolCrafts ecosystem ships many packages — molpy, molcfg, molexp, molpack, mollog, molq, molrec, molvis — and each of them benefits from being callable by an LLM agent. Without coordination, every package would have to author its own MCP server, redo the same source-introspection plumbing, redo the same security defaults, redo the same plugin wiring. molmcp is the layer that the MolCrafts packages share so they don't have to.
It does two things:
- Exposes seven read-only source-introspection tools for any MolCrafts package, so an agent can ask "what does
molpy.core.atomisticcontain?" and get an exact answer from the live source. - Defines a Provider plugin contract so each MolCrafts package can ship its own domain tools (
molpackexposes "pack a box",molqexposes "submit a job",molexpexposes "run an experiment") under a single coordinated MCP server with shared security defaults.
molmcp itself imports nothing from the MolCrafts packages. That's the point — it's pure infrastructure, and any MolCrafts package can adopt it without dragging in the others.
- Seven introspection tools —
list_modules,list_symbols,get_source,get_docstring,get_signature,read_file,search_source— pointed at any MolCrafts import root. - Provider plugin contract — MolCrafts packages contribute domain tools via a
Providerclass plus an entry point. Auto-discovered, namespaced, version-able. - Security middleware that's on by default — path-traversal guard, response-size cap (256 KB), and a startup-time check that refuses to serve any tool missing a
readOnlyHint/destructiveHintannotation. safe_subprocesshelper — for MolCrafts packages that wrap external CLIs (Packmol, LAMMPS, AmberTools): forced list args, noshell=True, mandatory timeout.- Three transports —
stdio,streamable-http,sse.
pip install molcrafts-molmcpRequires Python ≥ 3.10. The PyPI distribution is molcrafts-molmcp; the import name is molmcp.
Expose a MolCrafts package as a set of MCP introspection tools:
python -m molmcp --import-root molpy --name molpyWire it into Claude Code:
claude mcp add molpy -- python -m molmcp --import-root molpy --name molpyThe agent now has mcp__molpy__list_modules, mcp__molpy__get_source, etc.
# in your MolCrafts package, e.g. src/molpack_mcp/__init__.py
from fastmcp import FastMCP
from mcp.types import ToolAnnotations
class MolpackProvider:
name = "molpack"
def register(self, mcp: FastMCP) -> None:
@mcp.tool(annotations=ToolAnnotations(destructiveHint=True))
def pack_box(spec: dict, workdir: str) -> dict:
"""Pack a simulation box from a MolCrafts pack spec."""
from molpack import pack
return pack(spec, workdir).to_dict()Declare the entry point in your package's pyproject.toml:
[project.entry-points."molmcp.providers"]
molpack = "molpack_mcp:MolpackProvider"Now python -m molmcp discovers it automatically. The new tool joins the introspection tools in the same server.
┌────────────────────────────────────┐
│ MCP clients │
│ (Claude Code, Claude Desktop, …) │
└──────────────┬─────────────────────┘
│ stdio / http / sse
▼
┌────────────────────────────────────┐
│ molmcp │
│ • Provider contract │
│ • IntrospectionProvider │
│ • PathSafety / ResponseLimit │
│ • run_safe / fence_untrusted │
└──────────────┬─────────────────────┘
│
┌───────────┬───────────┼───────────┬───────────┐
▼ ▼ ▼ ▼ ▼
molpy_mcp molpack_mcp molexp_mcp molq_mcp mollog_mcp
(domain) (domain) (domain) (domain) (domain)
molmcp itself is library code — no MolCrafts package depends on any other through molmcp. Each package writes its Provider against the molmcp contract and ships the entry point; the host process composes them at runtime.
Full documentation lives at molcrafts.github.io/molmcp:
To preview the docs locally:
pip install "molcrafts-molmcp[docs]"
zensical serveAlpha. The Provider contract and middleware surface may shift before 1.0. Pin to molcrafts-molmcp >= 0.1, < 0.2.
git clone https://github.com/MolCrafts/molmcp.git
cd molmcp
pip install -e ".[dev]"
pytestBSD-3-Clause. See LICENSE.
molmcp is part of the MolCrafts project. It implements the Model Context Protocol using the fastmcp server library.