Skip to main content

LangMCP

PyPI version Python versions CI Publish License: MIT

Read-only MCP server for inspecting LangGraph checkpoints, thread state, and long-term memory.

LangMCP helps you answer the debugging question that traces do not always answer:

What is actually saved in my LangGraph persistence layer right now?

It is not a generic SQL MCP. It uses LangGraph-native checkpointer and store APIs, connects through named profiles, and keeps database credentials out of tool arguments.

Why LangMCP

When a stateful agent behaves strangely, the problem is often not only the prompt. It might be the checkpoint it resumed from, the user ID in configurable state, the store namespace used for memory, or an oversized message history.

LangMCP gives MCP clients such as Cursor and Claude Desktop a safe inspection surface for those questions.

LangMCP Not LangMCP
Read-only inspection of LangGraph persistence Arbitrary SQL execution
Profile-based connections Raw DSNs in model-facing arguments
Tools, resources, and prompts for debugging state A replacement for LangSmith or LangGraph Studio
Local stdio MCP server for development LangGraph Agent Server API

Use LangSmith for traces, LangGraph Studio for visual graph workflows, and LangMCP when you want an assistant in your editor to inspect persisted state through a narrow read-only interface.

Features

  • Profile-based config with environment variable expansion.
  • Read-only enforcement in v0.1.
  • Secret redaction in health checks and error output.
  • PostgreSQL, SQLite, and Redis checkpointer inspection.
  • PostgreSQL PostgresStore long-term memory inspection.
  • MCP tools for threads, checkpoints, store data, and analysis.
  • MCP resources for stable readable state URIs.
  • MCP prompts for repeatable debugging workflows.
  • Pagination and truncation for large responses.

Installation

uv pip install "langmcp[all]"

Or run without installing:

uvx "langmcp[all]" --version

LangMCP supports Python 3.11 and 3.12. The repository includes a .python-version file set to Python 3.12.

Configuration

Copy the example config and environment files:

cp examples/langmcp.example.toml langmcp.toml
cp .env.example .env

Set a read-only database URI in .env:

POSTGRES_URI=postgresql://READONLY_USER:READONLY_PASSWORD@HOST:5432/DB_NAME
LANGMCP_READ_ONLY=true

LangMCP loads .env automatically when present. Existing shell environment variables take precedence.

Example langmcp.toml:

[defaults]
profile = "dev"
read_only = true
max_response_chars = 250000

[profiles.dev]
checkpointer = "${POSTGRES_URI}"
store = "${POSTGRES_URI}"

[profiles.local_sqlite]
checkpointer = "sqlite:///./.langgraph/checkpoints.db"

[profiles.local_redis]
checkpointer = "redis://localhost:6379/0"

Environment overrides:

  • LANGMCP_CONFIG
  • LANGMCP_PROFILE
  • LANGMCP_READ_ONLY
  • POSTGRES_URI
  • LANGMCP_CHECKPOINTER_URI
  • LANGMCP_STORE_URI

Verify Setup

Run:

langmcp doctor --config ./langmcp.toml

The doctor command checks connectivity, backend types, setup status, package versions, and redacts sensitive URI fields.

Cursor Setup

See examples/cursor-mcp.json.

Minimal shape:

{
  "mcpServers": {
    "langmcp": {
      "command": "uvx",
      "args": ["langmcp[all]", "serve", "--config", "ABSOLUTE_PATH_TO_LANGMCP_TOML"],
      "env": {
        "LANGMCP_READ_ONLY": "true",
        "POSTGRES_URI": "postgresql://READONLY_USER:READONLY_PASSWORD@HOST:5432/DB_NAME"
      }
    }
  }
}

Start the server directly:

langmcp serve --config ./langmcp.toml

Example Assistant Prompts

Once connected through MCP, ask your assistant:

Use LangMCP to summarize thread THREAD_ID and check whether user memory exists for USER_ID.
Compare checkpoint CHECKPOINT_A and CHECKPOINT_B for thread THREAD_ID. Tell me what changed.
Analyze whether thread THREAD_ID is carrying too much context.
Investigate a possible memory gap for thread THREAD_ID and user USER_ID.

MCP Tools

All tools accept optional profile unless noted. Responses include profile, truncated, and pagination fields where applicable.

Tool Description
health_check Connectivity, backend types, redacted URIs
list_profiles Profile names and backend types
list_threads Discover thread IDs
get_thread_state Latest or specific checkpoint state
list_checkpoint_history Paginated checkpoint list
get_checkpoint Full snapshot for one checkpoint
compare_checkpoints Diff values and message count delta
summarize_thread Transcript-style summary
analyze_context_window Token estimate and size warnings
analyze_memory_gaps Store versus thread user ID hints
list_namespaces Store namespace tuples
search_store Search under namespace prefix
get_store_item Full store value by key
summarize_user_memory Grouped keys under user prefix

MCP Resources

Resources expose readable state through stable MCP URIs.

Resource URI Description
langmcp://profiles Configured profiles and active profile
langmcp://profiles/{profile}/health Connectivity and setup status
langmcp://profiles/{profile}/threads Discovered thread IDs
langmcp://profiles/{profile}/threads/{thread_id}/state Latest thread state
langmcp://profiles/{profile}/threads/{thread_id}/summary Transcript-style thread summary
langmcp://profiles/{profile}/threads/{thread_id}/checkpoints Recent checkpoint history
langmcp://profiles/{profile}/threads/{thread_id}/checkpoints/{checkpoint_id} Full checkpoint snapshot
langmcp://profiles/{profile}/threads/{thread_id}/context-analysis Context-window analysis
langmcp://profiles/{profile}/store/namespaces Long-term memory namespaces
langmcp://profiles/{profile}/store/items/{namespace}/{key} One store item
langmcp://profiles/{profile}/users/{user_id}/memory-summary User memory summary

For multi-part namespaces, prefer the get_store_item tool if your MCP client treats / as a path separator inside resource parameters.

MCP Prompts

Prompts package repeatable investigations.

Prompt Description
debug_thread Diagnose one thread from summary, checkpoints, context analysis, and memory hints
investigate_memory_gap Check whether thread state and long-term memory are aligned
compare_thread_checkpoints Explain behavioral differences between two checkpoints
inspect_user_memory Summarize and sanity-check long-term memory for one user

Backend Matrix

Backend Checkpointer Store in v0.1
PostgreSQL Full Full through PostgresStore
SQLite Full Not supported
Redis Full Not supported

Security

  1. Tools accept profile names, not raw DSNs.
  2. read_only=true is enforced in v0.1.
  3. Use a read-only PostgreSQL user for shared environments.
  4. Passwords are redacted in health_check and CLI output.
  5. Redis thread discovery uses SCAN with limits. Avoid broad scans on very large instances.
  6. Commit examples/langmcp.example.toml and .env.example, not real langmcp.toml or .env files.

Development

uv pip install -e ".[all,dev]"
ruff check .
pytest tests/unit -v

Integration tests use local Docker services:

docker compose -f docker-compose.test.yml up -d
POSTGRES_URI=postgresql://langgraph:langgraph@localhost:5442/langgraph \
  REDIS_URI=redis://localhost:6379/0 \
  pytest tests/integration -v -m integration

Use the local test values from docker-compose.test.yml. They are for Docker integration tests only.

Roadmap

  • LangGraph Agent Server adapter.
  • HTTP transport with team auth.
  • Vector store inspection tools.
  • Carefully scoped write workflows such as update_thread_state and resume_thread.

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md.

Good first issue ideas:

  • Add examples for a specific LangGraph persistence backend.
  • Improve error messages for unsupported store backends.
  • Add a resource or prompt test for an edge case.

License

MIT. See LICENSE.

Metadata

Release files for langmcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for langmcp 0.1.1
File Size Uploaded Provenance
langmcp-0.1.1.tar.gz 30.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for langmcp 0.1.1
File Interpreter ABI Platform
langmcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 62.5 kB

Release files / langmcp-0.1.1.tar.gz

Download URL langmcp-0.1.1.tar.gz
Size 30.3 kB
Tags Source
SHA-256 checksum
How to use checksums
99bf34b6f6c1d8b8dc4f13ea3edf054fe58fa3cbe3f2f063d65a96a6746b4f8c
BLAKE2b-256 checksum
How to use checksums
e334a8e75778af30e9f58c1097de959383e80d92e3f4813014ef61e6941e8392
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 27, 2026.

Transparency log

Release files / langmcp-0.1.1-py3-none-any.whl

Download URL langmcp-0.1.1-py3-none-any.whl
Size 32.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a94fc288153922eaf3e8f289ffa8a078314fc0255b5459724ed653a7094aba5f
BLAKE2b-256 checksum
How to use checksums
c1353480e0f12685444539a3bd6ceeb2c81e998235c4ee83cf7b739956eae7de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 27, 2026.

Transparency log

Security for langmcp 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for langmcp-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 27, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page