Усильте агента
Установка от издателя. Не эндпоинт PlugMCP.
Host a copy with our keys and logs.
В реестре пока нет пакетного релиза. Следуйте README репозитория.
Удалённый URL или команда на вашем компьютере? Чем различаются два способа установки
Запустить на PlugMCP
A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.
Запускpyomop is your OMOP Swiss Army Knife 🔧 for working with OHDSI OMOP Common Data Model (CDM) v5.4 or v6 compliant databases using SQLAlchemy as the ORM. It supports converting query results to pandas DataFrames for machine learning pipelines and provides utilities for working with OMOP vocabularies. Table definitions are based on the omop-cdm library. Pyomop is designed to be a lightweight, easy-to-use library for researchers and developers experimenting and testing with OMOP CDM databases. It can be used both as a commandline tool and as an imported library in your code.
Please ⭐️ If you find this project useful!
Stable release:
pip install pyomop
Development version:
git clone https://github.com/dermatologist/pyomop.git
cd pyomop
pip install -e .
LLM support:
pip install pyomop[llm]
psql command line tool or via the webapi UI. Please refresh after running the script by sending a request to /WebAPI/source/refresh.import asyncio
import datetime
from sqlalchemy import select
from pyomop import CdmEngineFactory, CdmVector, CdmVocabulary
# cdm6 and cdm54 are supported
from pyomop.cdm54 import Base, Cohort, Person, Vocabulary
async def main():
cdm = CdmEngineFactory() # Creates SQLite database by default for fast testing
# cdm = CdmEngineFactory(db='pgsql', host='', port=5432,
# user='', pw='',
# name='', schema='')
# cdm = CdmEngineFactory(db='mysql', host='', port=3306,
# user='', pw='',
# name='')
engine = cdm.engine
# Comment the following line if using an existing database. Both cdm6 and cdm54 are supported, see the import statements above
await cdm.init_models(Base.metadata) # Initializes the database with the OMOP CDM tables
vocab = CdmVocabulary(cdm, version='cdm54') # or 'cdm6' for v6
# Uncomment the following line to create a new vocabulary from CSV files
# vocab.create_vocab('/path/to/csv/files')
async with cdm.session() as session: # type: ignore
# Add Persons
async with session.begin():
session.add(
Person(
person_id=100,
gender_concept_id=8532,
gender_source_concept_id=8512,
year_of_birth=1980,
month_of_birth=1,
day_of_birth=1,
birth_datetime=datetime.datetime(1980, 1, 1),
race_concept_id=8552,
race_source_concept_id=8552,
ethnicity_concept_id=38003564,
ethnicity_source_concept_id=38003564,
)
)
session.add(
Person(
person_id=101,
gender_concept_id=8532,
gender_source_concept_id=8512,
year_of_birth=1980,
month_of_birth=1,
day_of_birth=1,
birth_datetime=datetime.datetime(1980, 1, 1),
race_concept_id=8552,
race_source_concept_id=8552,
ethnicity_concept_id=38003564,
ethnicity_source_concept_id=38003564,
)
)
# Query the Person
stmt = select(Person).where(Person.person_id == 100)
result = await session.execute(stmt)
for row in result.scalars():
print(row)
assert row.person_id == 100
# Query the person pattern 2
person = await session.get(Person, 100)
print(person)
assert person is not None
assert person.person_id == 100
# Convert result to a pandas dataframe
vec = CdmVector()
# https://github.com/OHDSI/QueryLibrary/blob/master/inst/shinyApps/QueryLibrary/queries/person/PE02.md
result = await vec.query_library(cdm, resource='person', query_name='PE02')
df = vec.result_to_df(result)
print("DataFrame from result:")
print(df.head())
result = await vec.execute(cdm, query='SELECT * from person;')
print("Executing custom query:")
df = vec.result_to_df(result)
print("DataFrame from result:")
print(df.head())
# Close engine
await engine.dispose() # type: ignore
# Run the main function
asyncio.run(main())
pyomop can load FHIR Bulk Export (NDJSON) files into an OMOP CDM database.
log.ndjson) from the input folder.Run:
pyomop --create --vocab ~/Downloads/omop-vocab/ --input ~/Downloads/fhir/
This will create an OMOP CDM in SQLite, load the vocabulary files, and import the FHIR data from the input folder and reconcile vocabulary, mapping source_value to concept_id. The mapping is defined in the mapping.example.json file. The default mapping is here. Mapping happens in 5 steps as implemented here.
pyomop --dbtype pgsql --host localhost --user postgres --pw mypass --create --vocab ~/Downloads/omop-vocab/ --input ~/Downloads/fhir/
-c, --create Create CDM tables (see --version).
-t, --dbtype TEXT Database Type for creating CDM (sqlite, mysql or
pgsql)
-h, --host TEXT Database host
-p, --port TEXT Database port
-u, --user TEXT Database user
-w, --pw TEXT Database password
-v, --version TEXT CDM version (cdm54 (default) or cdm6)
-n, --name TEXT Database name
-s, --schema TEXT Database schema (for pgsql)
-i, --vocab TEXT Folder with vocabulary files (csv) to import
-f, --input DIRECTORY Input folder with FHIR bundles or ndjson files.
-e, --eunomia-dataset TEXT Download and load Eunomia dataset (e.g.,
'GiBleed', 'Synthea')
--eunomia-path TEXT Path to store/find Eunomia datasets (uses
EUNOMIA_DATA_FOLDER env var if not specified)
--connection-info Display connection information for the database (For R package compatibility)
--mcp-server Start MCP server for stdio interaction
--pyhealth-path TEXT Path to export PyHealth compatible CSV files
--help Show this message and exit.
pyomop includes an MCP (Model Context Protocol) server that exposes tools for interacting with OMOP CDM databases. This allows MCP clients to create databases, load data, and execute SQL statements.
The MCP server can be used with any MCP-compatible client such as Claude desktop. Example configuration for VSCODE as below is already provided in the repository. So if you are viewing this in VSCODE, you can start server and enable tools directly in Copilot.
{
"servers": {
"pyomop": {
"command": "uv",
"args": ["run", "pyomop", "--mcp-server"]
}
}
}
The MCP server now supports both stdio (default) and HTTP transports:
Stdio transport (default):
pyomop --mcp-server
# or
pyomop-mcp-server
HTTP transport:
pyomop-mcp-server-http
# or with custom host/port
pyomop-mcp-server-http --host 0.0.0.0 --port 8000
# or via Python module
python -m pyomop.mcp.server --http --host 0.0.0.0 --port 8000
To use HTTP transport, install additional dependencies:
pip install pyomop[http]
# or for both LLM and HTTP features
pip install pyomop[llm,http]
pyomop -e Synthea27Nj -v 5.4 --connection-info
pyomop -e GiBleed -v 5.3 --connection-info
pyomop supports exporting OMOP CDM data (to --pyhealth-path) in a format compatible with PyHealth, a machine learning library for healthcare data analysis (See Notebook and usage below). Additionally, you can export the connection information for use with the various R packages such as PatientLevelPrediction using the --connection-info option.
pyomop -e GiBleed -v 5.3 --connection-info --pyhealth-path ~/pyhealth
You can configure database connection parameters using environment variables. These will be used as defaults by pyomop and the MCP server:
PYOMOP_DB: Database type (sqlite, mysql, pgsql)PYOMOP_HOST: Database hostPYOMOP_PORT: Database portPYOMOP_USER: Database userPYOMOP_PW: Database passwordPYOMOP_SCHEMA: Database schema (for PostgreSQL)Example usage:
export PYOMOP_DB=pgsql
export PYOMOP_HOST=localhost
export PYOMOP_PORT=5432
export PYOMOP_USER=postgres
export PYOMOP_PW=mypass
export PYOMOP_SCHEMA=omop
These environment variables will be checked before assigning default values for database connection in pyomop and MCP server tools.
Use --migrate to run the generic loader from the command line. Provide
source-database connection details with --src-* options; target-database
details use the standard --dbtype / --host / … options.
# SQLite source → SQLite OMOP target
pyomop-migrate --migrate \
--src-dbtype sqlite --src-name source.sqlite \
--dbtype sqlite --name omop.sqlite \
--mapping mapping.json
# PostgreSQL source → PostgreSQL OMOP target
pyomop-migrate --migrate \
--src-dbtype pgsql --src-host srchost --src-user reader --src-pw secret --src-name ehr \
--dbtype pgsql --host omophost --user writer --pw secret --name omop \
--mapping ehr_to_omop.json --batch-size 500
Source connection credentials can also be provided via environment variables
(SRC_DB_HOST, SRC_DB_PORT, SRC_DB_USER, SRC_DB_PASSWORD, SRC_DB_NAME)
to avoid exposing passwords in the shell history.
Use --extract-schema to generate a Markdown document describing the source
database schema (tables, columns, types, PK/FK relationships). This is
especially useful for feeding to an AI agent to generate the mapping JSON.
pyomop-migrate --extract-schema \
--src-dbtype sqlite --src-name source.sqlite \
--schema-output schema.md
The same SRC_DB_* environment variables are supported for credentials.
npx skills install dermatologist/pyomop--mapping option in the --migrate command above.See the bundled example mapping and the full documentation for all supported options.
Pull requests are welcome! See CONTRIBUTING.md.
Python package for managing OHDSI clinical data models. Includes support for LLM based plain text queries, MCP server and FHIR import.
Инструменты
Списка инструментов пока нет. У удалённых серверов он появляется после первой проверки состояния.
FAQ
Скопируйте на этой странице конфигурацию stdio для Cursor, Claude Desktop, Claude Code или VS Code. Она использует установку издателя, а не прокси PlugMCP.
В этой записи не указано обязательных переменных окружения.
Pyomop работает локально через stdio.
Последняя проверка: 2026-10-28. Python package for managing OHDSI clinical data models. Includes support for LLM based plain text queries, MCP server and FHIR import.