CaVa MCP server — read-only agentive access to OMOP vocab, cohorts, and clinical vocabularies.
Project description
cava-mcp
cava-mcp is an atomic, read-only MCP (Model Context Protocol) tool library for navigating the OMOP vocabularies. It exposes OMOP vocabulary lookups, embedding similarity search, cohort concept references, and system status as typed MCP tools that any MCP client can call — including cava-datahub, Claude Code, and autonomous agents.
Read-only. No patient-level data. No write operations.
What it exposes
| Group | Tools |
|---|---|
| Concept | concept_get, concept_by_code, concept_ancestors, concept_descendants, concept_relationships, concept_equivalency_path, concept_path, concept_map_to_standard, concept_neighbors |
| Resolver | concept_ground (with parent_ids, scoring fields, and grounding_explanation) |
| Search | concept_search_exact, concept_search_fulltext, concept_navigate_to_standard |
| Embedding | embedding_index_status, embedding_neighbours, embedding_search, embedding_encode |
| Cohort | cohort_find_concept_references |
| System | system_status, system_vocabulary_catalogue |
Tools are registered conditionally — if an adapter is not configured, its tools are
simply not registered. system_status and system_vocabulary_catalogue are always
registered so clients can always query adapter availability.
Quick start
uv venv
uv sync --extra dev --extra embedding-tools
uv run cava-mcp --config config/cava-mcp.example.yaml --describe
Start the server:
uv run cava-mcp --config config/cava-mcp.example.yaml
Example config
omop_graph:
db_url: "postgresql+psycopg://user:pass@localhost:5432/omop"
vocab_schema: omop_vocab
omop_emb:
enabled: true
backend_type: pgvector
db_url: "postgresql+psycopg://user:pass@localhost:5432/omop"
default_model_name: qwen3-embedding:0.6b
api_base: "http://localhost:11434/v1"
api_key: "ollama"
Install matrix
| Use case | Extras |
|---|---|
| Core server only | none |
| Concept tools | concept-tools |
| Cohort tools | cohort-tools |
| Embedding tools (sqlite-vec) | embedding-tools |
| Embedding tools (pgvector) | embedding-pgvector |
| Embedding tools (FAISS sidecar) | embedding-faiss |
| All tool families | all-tools |
| All + pgvector embeddings | all-tools-pgvector |
| All + FAISS embeddings | all-tools-faiss |
| Development | dev |
| Development + all tools | dev-all |
Layout
src/cava_mcp/
adapters/ — omop_graph, omop_emb, oa_cohorts adapter classes
base/ — DataHubServer, errors, results, SQL helpers
tools/ — MCP tool registrations by domain
config.py — Pydantic config models (AppConfig, OmopGraphConfig, etc.)
server.py — Server factory and CLI entry point
config/ — Example YAML configs
_design/ — Architecture notes and spec documents
tests/ — Unit and integration tests
Adapter backends
- omop-graph — concept lookup, hierarchy traversal, full-text search
- omop-emb — embedding index (sqlite-vec, pgvector, or FAISS sidecar)
- OpenAnalytics cohorts — cohort concept reference queries (Phase N)
Companion repos
- cava-datahub — ACP orchestration layer that drives this tool substrate
- omop-graph — OMOP virtual knowledge graph library
- omop-emb — OMOP embedding index library
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cava_mcp-0.1.2.tar.gz.
File metadata
- Download URL: cava_mcp-0.1.2.tar.gz
- Upload date:
- Size: 31.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fa2357ae4225cee24f488e036f97a22ecdcf8e9fcf4990b31ae2f9b323d512d
|
|
| MD5 |
39a8bf794c23a8904e2362c7e34072bc
|
|
| BLAKE2b-256 |
ceb083856025253de5fe289cd9fc114dda39042b7e8a75da9362e36db03c408a
|
Provenance
The following attestation bundles were made for cava_mcp-0.1.2.tar.gz:
Publisher:
pypi.yml on AustralianCancerDataNetwork/cava-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cava_mcp-0.1.2.tar.gz -
Subject digest:
5fa2357ae4225cee24f488e036f97a22ecdcf8e9fcf4990b31ae2f9b323d512d - Sigstore transparency entry: 1629634084
- Sigstore integration time:
-
Permalink:
AustralianCancerDataNetwork/cava-mcp@835c1ba642ab2972cc40f8d113e09f2beaeb2dd2 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/AustralianCancerDataNetwork
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@835c1ba642ab2972cc40f8d113e09f2beaeb2dd2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file cava_mcp-0.1.2-py3-none-any.whl.
File metadata
- Download URL: cava_mcp-0.1.2-py3-none-any.whl
- Upload date:
- Size: 35.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc1ca1306f7e680c4e92d40bc232e53bb86932026a31673a6b3ad4a64293142c
|
|
| MD5 |
e0b00dc53078897ffea4386a1bfe0c5e
|
|
| BLAKE2b-256 |
36ffcf4baf6d95c23afdb8cccc71712b759ab6e166ace7c6a14be52548b8d550
|
Provenance
The following attestation bundles were made for cava_mcp-0.1.2-py3-none-any.whl:
Publisher:
pypi.yml on AustralianCancerDataNetwork/cava-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cava_mcp-0.1.2-py3-none-any.whl -
Subject digest:
fc1ca1306f7e680c4e92d40bc232e53bb86932026a31673a6b3ad4a64293142c - Sigstore transparency entry: 1629634108
- Sigstore integration time:
-
Permalink:
AustralianCancerDataNetwork/cava-mcp@835c1ba642ab2972cc40f8d113e09f2beaeb2dd2 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/AustralianCancerDataNetwork
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@835c1ba642ab2972cc40f8d113e09f2beaeb2dd2 -
Trigger Event:
push
-
Statement type: