OMOP MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OMOP MCP ServerMap 'Hypertension' to condition_concept_id in condition_occurrence"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OMOP MCP Server
Model Context Protocol (MCP) server for mapping clinical terminology to Observational Medical Outcomes Partnership (OMOP) concepts using Large Language Models (LLMs). The vocabulary API is supported by OMOP HUB, and you can obtain an API key from omophub.com.
Demo Website

Overview
This server provides an agentic framework to standardize medical terms into the OMOP Common Data Model (CDM). It uses the OMOPHub API for vocabulary searching, concept suggestion, and terminology mapping.
Installation
Before configuring the MCP server, ensure you have:
uv installed on your system
Install from: https://docs.astral.sh/uv/getting-started/installation/
Clone the repository
git clone https://github.com/OHNLP/omop_mcp.git cd omop_mcpSet up environment variables
Copy
.env.templateto.envand fill in your API credentials. You will need both an LLM provider key and an OMOPHUB_API_KEY (for vocabulary lookups).cp .env.template .env
Configuration for Claude Desktop
Add the following configuration to your claude_desktop_config.json file:
Location:
MacOS:
~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.json
Configuration:
Replace <path-to-local-repo> with the actual path to your cloned repository.
{
"mcpServers": {
"omop_mcp": {
"command": "uv",
"args": ["--directory", "<path-to-local-repo>", "run", "omop_mcp"]
}
}
}Related MCP server: PubMed Advanced MCP Server
Features
The OMOP MCP server provides tools and resources for:
Mapping clinical terminology: Intelligent mapping of free-text terms to standardized OMOP concepts.
Vocabulary Search: Direct access to OMOP vocabulary via
find_omop_concept.Batch Processing: Tool for mapping multiple concepts from a CSV file.
Preferred Vocabularies: Automatic domain-specific vocabulary prioritization (e.g., LOINC for measurements, SNOMED for conditions).
Live Documentation: Resource access to live OMOP CDM documentation.
Usage Example
The agent is most effective when you provide context such as the OMOP table or field name.
Prompt:
Map `Temperature Temporal Scanner - RR` for `measurement_concept_id` in the `measurement` table.Response Example:
CONCEPT_ID: 46235152
CODE: 75539-7
NAME: Body temperature - Temporal artery
CLASS: Clinical Observation
CONCEPT: Standard
VALIDITY: Valid
DOMAIN: Measurement
VOCAB: LOINC
REASON: This LOINC concept specifically represents body temperature measured at the temporal artery.
URL: https://omophub.com/concepts/46235152Contributing
See CONTRIBUTING.md for guidelines to contribute to the project.
Citation Policy
If you use this software, please cite the pre-print at arXiv (cs.AI) below:
An Agentic Model Context Protocol Framework for Medical Concept Standardization
License
This project is licensed under the Apache License 2.0. See LICENSE file for details.
Contact: jaerongahn@gmail.com
Available Tools
2 toolsbatch_map_concepts_from_csvC
Process a CSV file of keywords, mapping each row and returning a CSV with mapping results appended as new columns.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden but only states the high-level action. It fails to disclose side effects (e.g., whether the input file is modified or deleted), resource requirements, error handling, or idempotency. Critical behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence with no redundancy. It is front-loaded with the verb 'Process' and immediately identifies the resource. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter, no annotations, and no output schema. The description does not specify the output CSV format, mapping logic (e.g., what concepts are mapped to), or error behavior. For a batch processing tool, this is insufficient for safe autonomous invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter csv_path is explained implicitly: 'Process a CSV file of keywords' clarifies it's a file path for a keyword CSV. However, with 0% schema description coverage, more detail is expected (e.g., allowed formats, absolute vs relative paths). The description adds minimal value beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool processes a CSV of keywords, maps each row, and returns a CSV with appended results. It implies batch operation, distinguishing it from the sibling find_omop_concept (single concept lookup). However, it doesn't explicitly name the mapping target (e.g., OMOP concepts), slightly reducing precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling find_omop_concept. There is no mention of prerequisites, ideal scenarios, or cases where this tool should be avoided. The agent receives no decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_omop_conceptB
Find OMOP concepts for a given keyword, table, and field.
Returns multiple candidates for LLM to choose from based on context.
Args:
keyword: The clinical term to map
omop_table: The OMOP CDM table name
omop_field: The concept ID field name
max_results: Maximum number of candidate concepts to return
Returns:
Dict containing candidate concepts or error information if no results found.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | ||
| omop_field | Yes | ||
| omop_table | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It states the tool returns candidate concepts or error information, but does not mention side effects, authentication needs, rate limits, or pagination behavior. It is adequate but not thorough for a lookup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively short but includes redundant bullet-like formatting and whitespace. It could be more concise by combining the argument list into a sentence. The structure is acceptable but not efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return format as a dict with candidate concepts or error info. However, it lacks details on the structure of each candidate, pagination, or how to interpret results. For a tool that returns multiple candidates, more context on the output would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% parameter description coverage. The description lists parameter names (keyword, omop_table, omop_field, max_results) but does not add meaningful context beyond the names, such as valid table/field values, format examples, or the purpose of max_results. This is insufficient for a tool with four parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds OMOP concepts for a given keyword, table, and field. It specifies the action (Find), resource (OMOP concepts), and context (keyword, table, field). The sibling tool 'batch_map_concepts_from_csv' implies a batch/CSV input, so this tool is distinct as a single lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. It mentions returning multiple candidates for the LLM to choose, which hints at a decision-making use case, but lacks guidance on when not to use it or how it compares to the sibling tool (batch_map_concepts_from_csv).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v0.2.0- First observed
batch_map_concepts_from_csv - First observed
find_omop_concept
TDQS
The two tools have clearly distinct purposes: one handles single keyword lookup, the other processes CSV files in batch. There is no overlap or ambiguity.
Both tool names follow a consistent snake_case pattern with descriptive verbs (find, batch_map) and nouns (concept, concepts from CSV), making them predictable.
With only 2 tools, the set feels thin even for a narrow domain. While it covers the core mapping function, a few more tools (e.g., get concept details) would make it more robust.
The tools cover single and batch mapping, which are the primary use cases. However, missing operations like retrieving concept details or filtering by domain leave minor gaps for advanced workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for US nursing facility search and ownership lookup (NursingHomeDatabase).
MCP gateway federating 21 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Related MCP Servers
- AlicenseAqualityAmaintenanceUnified MCP server providing LLMs with reliable lookup access to ICD-11, LOINC, RxNorm, MeSH, ATC, CID-10, and (optionally) SNOMED CT.3128912MIT
- AlicenseBqualityDmaintenanceThis MCP server provides 16 intelligent tools for searching, retrieving, and linking biomedical literature from PubMed and PMC. It enables LLM applications to perform complex queries, batch processing, and cross-database linking.168MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides access to the NIH UMLS API and the NIH VSAC FHIR API. This server enables AI models to search medical terminology, look up concept definitions, explore relationships between medical concepts, map codes between different medical coding systems, and work with curated clinical value sets.1MIT
- AlicenseAqualityCmaintenanceMCP server for FHIR interoperability, enabling natural language querying and manipulation of clinical data with full CRUD operations, semantic search, and RAG capabilities.13MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/OHNLP/omop_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server