Skip to main content

The MCP foundation for the MolCrafts ecosystem

Project description

molmcp

The MCP foundation for the MolCrafts ecosystem

PyPI Python License CI

Documentation · Quickstart · Write a Provider · Issues


Why molmcp

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:

  1. Exposes seven read-only source-introspection tools for any MolCrafts package, so an agent can ask "what does molpy.core.atomistic contain?" and get an exact answer from the live source.
  2. Defines a Provider plugin contract so each MolCrafts package can ship its own domain tools (molpack exposes "pack a box", molq exposes "submit a job", molexp exposes "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.

Features

  • Seven introspection toolslist_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 Provider class 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/destructiveHint annotation.
  • safe_subprocess helper — for MolCrafts packages that wrap external CLIs (Packmol, LAMMPS, AmberTools): forced list args, no shell=True, mandatory timeout.
  • Three transportsstdio, streamable-http, sse.

Install

pip install molcrafts-molmcp

Requires Python ≥ 3.10. The PyPI distribution is molcrafts-molmcp; the import name is molmcp.

60-second quickstart

Expose a MolCrafts package as a set of MCP introspection tools:

python -m molmcp --import-root molpy --name molpy

Wire it into Claude Code:

claude mcp add molpy -- python -m molmcp --import-root molpy --name molpy

The agent now has mcp__molpy__list_modules, mcp__molpy__get_source, etc.

Adding domain tools (for MolCrafts packages)

# 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.

Architecture

                ┌────────────────────────────────────┐
                │  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.

Documentation

Full documentation lives at molcrafts.github.io/molmcp:

To preview the docs locally:

pip install "molcrafts-molmcp[docs]"
zensical serve

Status

Alpha. The Provider contract and middleware surface may shift before 1.0. Pin to molcrafts-molmcp >= 0.1, < 0.2.

Contributing

git clone https://github.com/MolCrafts/molmcp.git
cd molmcp
pip install -e ".[dev]"
pytest

License

BSD-3-Clause. See LICENSE.

Acknowledgements

molmcp is part of the MolCrafts project. It implements the Model Context Protocol using the fastmcp server library.

Project details


Download files

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

Source Distribution

molcrafts_molmcp-0.1.0.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

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

molcrafts_molmcp-0.1.0-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file molcrafts_molmcp-0.1.0.tar.gz.

File metadata

  • Download URL: molcrafts_molmcp-0.1.0.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for molcrafts_molmcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9b143eb0e7fa9ebbc14c8301e6337e963e02fb6b8f2cf0018389f29a7206cf4d
MD5 f4a9d014b06fb74eb5306ecc45c6cf98
BLAKE2b-256 fb9ee9a6446579fa65b07d2b50704ad3f1768ca568ceee7f39272fccda58bd9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for molcrafts_molmcp-0.1.0.tar.gz:

Publisher: release.yml on MolCrafts/molmcp

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

File details

Details for the file molcrafts_molmcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for molcrafts_molmcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5d105044ec0135cfb8b2dba4dd62f7f9d5b94d4ea31568698ac4f8b835eb4075
MD5 30236a9f0262ec408a59cd757befd269
BLAKE2b-256 d43583d156541a33862122946ad1a98c90fb6a08247aafa42412e6b079019c8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for molcrafts_molmcp-0.1.0-py3-none-any.whl:

Publisher: release.yml on MolCrafts/molmcp

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

Supported by

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