Skip to main content

MCP server exposing Google's Stim quantum stabilizer circuit library as LLM tools

Project description

stim-mcp-server

MCP server wrapping Google's Stim stabilizer circuit simulator. Wire it up to an LLM and you can build and sample circuits through conversation.

Tools

Tool Description
hello_quantum Health check — returns Stim version and active session count
create_circuit Validate a Stim circuit string and open a persistent session
append_operation Append one or more Stim instructions to an existing circuit
sample_circuit Simulate a circuit and return measurement statistics
analyze_errors Build the Detector Error Model and find shortest logical error paths
get_circuit_diagram Return an ASCII, SVG, or timeline diagram
inject_noise Add depolarizing or X error noise to a circuit

Connecting to the remote server

A hosted instance runs on Google Cloud Run:

URL: https://stim-mcp-5s3woqufqa-uc.a.run.app/mcp Transport: Streamable HTTP (MCP 1.x)

Claude.ai

Go to Settings → Integrations → Add custom integration and enter the URL above.

Claude Code (CLI)

Add to your ~/.claude/claude.json (or project-level .claude/claude.json):

{
  "mcpServers": {
    "stim-mcp": {
      "url": "https://stim-mcp-5s3woqufqa-uc.a.run.app/mcp"
    }
  }
}

Other MCP clients

Use POST https://stim-mcp-5s3woqufqa-uc.a.run.app/mcp with Content-Type: application/json and Accept: application/json, text/event-stream.

Cold start: The server scales to zero when idle. The first request after a period of inactivity may take 5–10 seconds. In-memory circuit sessions are lost on scale-down — circuits are cheap to recreate.

Installation

Needs uv.

Via PyPI (recommended)

No cloning needed. Configure your MCP client (see below) and uvx handles the rest on first run.

From source (development)

git clone https://github.com/DeDuckProject/stim-mcp
cd stim-mcp
uv sync

Running locally

Claude Desktop

macOS~/Library/Application Support/Claude/claude_desktop_config.json Windows%APPDATA%\Claude\claude_desktop_config.json Linux~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "stim": {
      "command": "/path/to/uvx",
      "args": ["--from", "stim-mcp-server", "stim-mcp-server"]
    }
  }
}

Replace /path/to/uvx with the output of which uvx.

Claude Code

claude mcp add stim -- /path/to/uvx --from stim-mcp-server stim-mcp-server

Replace /path/to/uvx with the output of which uvx.

From source (development)

claude mcp add stim -- /path/to/uv run --directory /path/to/stim-mcp stim-mcp-server

Stdio (direct)

uv run stim-mcp-server

HTTP / SSE (local testing)

MCP_TRANSPORT=sse stim-mcp-server
# Server listens on http://localhost:8080/mcp

Inspect with the MCP inspector:

npx @modelcontextprotocol/inspector http://localhost:8080/mcp

Docker

docker build -t stim-mcp .
docker run -p 8080:8080 stim-mcp
# Server listens on http://localhost:8080/mcp

MCP dev tools

uv run mcp dev src/stim_mcp_server/server.py

Deploying to Cloud Run

Prerequisites

brew install --cask google-cloud-sdk
gcloud auth login
gcloud config set project YOUR_PROJECT_ID
gcloud services enable run.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com

Deploy

gcloud run deploy stim-mcp \
  --source . \
  --region us-central1 \
  --allow-unauthenticated \
  --port 8080 \
  --memory 512Mi \
  --cpu 1 \
  --min-instances 0 \
  --max-instances 1

--source . triggers Cloud Build to build the Docker image — no local Docker required. --max-instances 1 keeps circuit sessions consistent (in-memory store). --min-instances 0 enables scale-to-zero.

Environment variables

Variable Default Description
MCP_TRANSPORT stdio Set to anything else (e.g. sse) to start the HTTP server
MCP_HOST 0.0.0.0 Bind address for HTTP mode
MCP_PORT 8080 Port for HTTP mode

Examples

"Create a Bell state and sample it 1000 times"

"What's the shortest error path in this surface code?"

"Add 0.1% depolarizing noise and show me what changes"

Development

uv sync
uv run pytest

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

stim_mcp_server-0.1.1.tar.gz (129.2 kB view details)

Uploaded Source

Built Distribution

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

stim_mcp_server-0.1.1-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file stim_mcp_server-0.1.1.tar.gz.

File metadata

  • Download URL: stim_mcp_server-0.1.1.tar.gz
  • Upload date:
  • Size: 129.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for stim_mcp_server-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4c1ff30aa6efbae9fd2ec253cd283c24d91f86e80b4e4695fa873237ecf1e4a7
MD5 c591a222226f17bb8c05619c2238c291
BLAKE2b-256 363f38b26aa5fec8979af0afbdca1742f52b3abc1cd9b885d5be708d7eec1c07

See more details on using hashes here.

File details

Details for the file stim_mcp_server-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: stim_mcp_server-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for stim_mcp_server-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2fd793abfaa73cf8608528c8f79fd79a92e0a96cc22dc820d990ef4eab886d0f
MD5 56a41fc465f567e1f166477092ce093f
BLAKE2b-256 8a1a96bfc406e5c19d5b2912572ddb69efc32eecdb965eb60ffc36474ffa44a3

See more details on using hashes here.

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