Groundworkers MCP server — read-only agentive access to OMOP vocabularies, concept graphs, and embeddings.
Project description
groundworkers
groundworkers is the reusable capability layer for OMOP-grounded lookup,
mapping, source planning, and knowledge-pack discovery.
You can use it in three ways:
- as an MCP service for agentic clients and tool discovery
- as a REST service for fixed workflow applications
- as a direct Python library for in-process orchestration
No patient-level writes. No session state. No transport-specific business logic.
What it provides
- OMOP concept lookup and hierarchy navigation
- exact, normalized, full-text, and embedding-backed retrieval
- mapping-oriented candidate bundles and context assembly
- stateless source-planning workflows
- LLM-backed text normalization and domain classification
Runtime model
flowchart TD
STACK[shared stack config] --> BOOT[build_app_config]
BOOT --> CFG[AppConfig]
CFG --> APP[build_application]
APP --> GW[GroundworkersApp]
GW --> SVC[services]
GW --> ADP[adapters]
MCP[MCP client] --> TOOLS[MCP tools]
REST[REST client] --> API[REST transport]
PY[Python caller] --> SVC
TOOLS --> SVC
TOOLS -. adapter-backed primitives .-> ADP
API --> SVC
build_application(...) is the composition root. It builds one reusable
runtime container with transport-agnostic services plus dependency-facing
adapters. Most caller-facing workflows go through services; some MCP tools are
intentionally adapter-backed when the capability is closer to a backend
primitive than a domain service.
Quick start
Install
pip install groundworkers
Optional extras:
pip install "groundworkers[llm,embedding-pgvector]"
Configure the shared stack
omop-config configure omop_alchemy
omop-config configure omop_graph
omop-config configure groundworkers
# optional if you want embedding-backed capabilities
omop-config configure omop_emb
Start MCP
groundworkers --describe
groundworkers --transport streamable-http --host 0.0.0.0 --port 8000
Start REST
groundworkers --transport rest --host 0.0.0.0 --port 8080
Use from Python
from groundworkers.app import build_application
from groundworkers.bootstrap import build_app_config
config = build_app_config()
app = build_application(config)
mapping = app.services.mapping
bundle = mapping.concept_candidate_bundle(
"type 2 diabetes",
domain="Condition",
include_normalized=True,
include_fulltext=True,
include_embedding=True,
)
Main surfaces
| Surface | Best for |
|---|---|
| MCP tools | Tool discovery, agent interoperability, shared capability services |
| REST routes | Typed HTTP workflows such as candidate bundles and assisted source planning |
app.services.* |
In-process Python applications and batch workflows |
app.adapters.* |
Backend wrappers used when you intentionally need dependency-shaped primitives |
Learn more
- Docs home:
docs/index.md - Configuration:
docs/usage/configuration.md - Integrations:
docs/usage/integrations.md - Architecture:
docs/architecture.md
Companion repos
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 groundworkers-0.3.2.tar.gz.
File metadata
- Download URL: groundworkers-0.3.2.tar.gz
- Upload date:
- Size: 96.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 |
855e19e686f00ef4a9e168f4610368cafadd6af2ee3233aa295bbd55bd9d16ea
|
|
| MD5 |
c87752c8969697dead234c60c27c568d
|
|
| BLAKE2b-256 |
0ccabfd2f9e7ffd8948f7318304057166f535a60348007f6ef95f45e2c343d03
|
Provenance
The following attestation bundles were made for groundworkers-0.3.2.tar.gz:
Publisher:
pypi.yml on AustralianCancerDataNetwork/groundworkers
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
groundworkers-0.3.2.tar.gz -
Subject digest:
855e19e686f00ef4a9e168f4610368cafadd6af2ee3233aa295bbd55bd9d16ea - Sigstore transparency entry: 2055689727
- Sigstore integration time:
-
Permalink:
AustralianCancerDataNetwork/groundworkers@cfc785c694dbccc42a25a5d309efc529c1c159a8 -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/AustralianCancerDataNetwork
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@cfc785c694dbccc42a25a5d309efc529c1c159a8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file groundworkers-0.3.2-py3-none-any.whl.
File metadata
- Download URL: groundworkers-0.3.2-py3-none-any.whl
- Upload date:
- Size: 119.9 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 |
1a190492091739be8c7356213db6e22cc59a6a9dcc83c6c21a7df08f7e9811fe
|
|
| MD5 |
d03b5fe9f7f21a01ec3ea3c553af744b
|
|
| BLAKE2b-256 |
aabc94b7e0a0deed442e402006d24b35a7d6e85e5219503a2aa4a5e6dd7aa311
|
Provenance
The following attestation bundles were made for groundworkers-0.3.2-py3-none-any.whl:
Publisher:
pypi.yml on AustralianCancerDataNetwork/groundworkers
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
groundworkers-0.3.2-py3-none-any.whl -
Subject digest:
1a190492091739be8c7356213db6e22cc59a6a9dcc83c6c21a7df08f7e9811fe - Sigstore transparency entry: 2055690182
- Sigstore integration time:
-
Permalink:
AustralianCancerDataNetwork/groundworkers@cfc785c694dbccc42a25a5d309efc529c1c159a8 -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/AustralianCancerDataNetwork
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@cfc785c694dbccc42a25a5d309efc529c1c159a8 -
Trigger Event:
push
-
Statement type: