medeval-mcp
Enables MCP clients to operate MedEval regulatory workspaces, including evidence retrieval, generation, evaluation, and immutable document revisions, all through a local, secure gateway.
README
MedEval MCP (local)
Local-only Model Context Protocol gateway for the private MedEval medical-device regulatory workbench.
It lets an MCP client operate MedEval workspaces, canonicalized materials, evidence retrieval, CEP/CER generation and evaluation, workflow observability, and immutable document revisions. MedEval remains the system of record; this project is a thin, bounded adapter.
Safety boundary
- stdio transport only; no network MCP listener
- connects to loopback by default, with explicit opt-in for trusted private-network IPs
- explicit workspace/task identifiers
- allowlisted local upload roots
- no delete, shell, deployment, or secret-management tools
- asynchronous starts return task IDs and must be polled, not duplicated
- product facts cannot be derived from external literature
- document edits require the current
base_revision_id
See SECURITY.md.
Requirements
- Windows or another Python 3.11+ environment
- MedEval running at
http://127.0.0.1:8000 - Python package dependencies from
pyproject.toml
Install
cd C:\path\to\medeval-mcp
py -3.11 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[test]"
Copy-Item .env.example .env
The MCP process reads normal environment variables. MCP clients generally supply them in their server configuration rather than loading .env automatically.
Configure
Minimum local configuration:
MEDEVAL_BASE_URL=http://127.0.0.1:8000
MEDEVAL_PROJECT_ROOT=C:\path\to\medeval
MEDEVAL_ALLOWED_FILE_ROOTS=C:\path\to\medeval;C:\path\to\materials
If MedEval enables MEDEVAL_API_TOKEN, give this MCP process the same MEDEVAL_API_TOKEN; it is sent as X-API-Token. A signed browser/session token can instead be supplied as MEDEVAL_BEARER_TOKEN.
macOS client to a trusted LAN backend
When MedEval is listening on another computer in the same trusted LAN, use its literal private IP and opt in explicitly:
MEDEVAL_BASE_URL=http://192.168.0.166:8001
MEDEVAL_ALLOW_PRIVATE_NETWORK=true
MEDEVAL_PROJECT_ROOT=/Users/your-name/MedEval
MEDEVAL_ALLOWED_FILE_ROOTS=/Users/your-name/MedEval:/Users/your-name/Documents
The MCP remains a local stdio process on the Mac. Public IP addresses and domain names are still rejected.
Connect from Codex
Use examples/codex.mcp.json as the MCP server definition. The command must point to this project's .venv Python and use:
-m medeval_mcp.server
Restart Codex after changing the MCP configuration, then ask it to call medeval_health.
Run manually
MCP stdio uses standard output for protocol messages, so a manual run appears idle:
.\.venv\Scripts\python.exe -m medeval_mcp.server
Use an MCP client or Inspector to interact with it.
The bundled local launcher sets the loopback backend and upload roots before starting stdio:
.\scripts\run_local.ps1
Protocol and backend smoke test:
.\.venv\Scripts\python.exe scripts\mcp_smoke.py --health
Tool surface
The first release provides 21 tools:
- workspace: health, project list, create/get workspace, workspace documents
- observability: run list, run detail, bounded agent context
- evidence: project documents, evidence search, section context
- ingestion: allowlisted local material upload and canonicalization
- generation: template list, start generation, generation/task status
- evaluation: start evaluation
- revisions: list, bounded read, diff, optimistic-lock patch
medeval_start_generation defaults to tag_index_agent, which uses MedEval's dependency-serial segmented writer. Full-context strategies remain opt-in.
Tests
.\.venv\Scripts\python.exe -m pytest
The tests use mock HTTP transports and do not start LLM generation or consume model quota. A separate integration smoke test lists MCP tools and calls the already-running local /api/health endpoint.
Not included yet
- remote Streamable HTTP transport
xiaoyuu.medeployment- multi-user API keys and workspace ownership
- remote upload staging
- destructive project/task deletion
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.