RohanKarthikeyan's picture
Upload 2 files
7fd7b85 verified
|
raw
history blame
3.65 kB
metadata
title: BioMedNorm MCP Server
sdk: gradio
sdk_version: 5.33.0
app_file: app.py
pinned: true
license: apache-2.0
python_version: 3.13.3
short_description: Extract and normalize entities from biomedical text.
tags:
  - mcp-server-track

BioMedNorm MCP Server

A MCP server for extracting and normalizing domain-specific entities from biomedical text. We leverage OpenAI LLMs to identify entities and match them to standardized terminology.

Motivation

Biomedical text normalization addresses a critical challenge in healthcare informatics: approximately 80% of electronic health record (EHR) data exists as unstructured medical text. Such text often contains abbreviations, misspellings, and non-standardized terminology, creating barriers to effective data utilization. This variability hinders leveraging clinical narratives for:

  • Clinical decision support at the point of care
  • Patient comprehension of their own medical records
  • Biomedical research including cohort identification and pharmacovigilance

By implementing named entity recognition and normalization to controlled vocabularies like SNOMED-CT, our MCP server enables downstream applications to process biomedical text with greater accuracy, bridging the gap between natural clinical language and structured data requirements of modern healthcare systems.

Installation

This project uses uv from Astral for dependency management. Follow these steps to set up the project:

Clone the repository

git clone https://github.com/yourusername/entity-extraction-mcp
cd entity-extraction-mcp

Set up Python environment

The project includes a .python-version file that specifies the required Python version. Make sure you have uv installed:

# Install uv if you don't have it already
curl -LsSf https://astral.sh/uv/install.sh | sh

Install dependencies

The project dependencies are defined in pyproject.toml. Install them with:

uv pip install -e .

Set up environment variables

The project requires an OpenAI API key, which should be stored in a .env file.

Running the application

Run the application using uv run:

uv run app.py

This command ensures that:

  • All project dependencies are correctly installed
  • The environment variables from .env are loaded
  • The application runs in the proper environment

After starting the server, you can access:

  • Web interface: http://your-server:port
  • MCP endpoint: http://your-server:port/gradio_api/mcp/sse

Using the Web Interface

  • Enter text in the input area
  • Select the entity type (Disease, Tissue, or Cell Type)
  • Click "Normalize"
  • View the normalized entities in the results area

Using as an MCP Tool

The server exposes an MCP-compatible endpoint that can be used by AI agents. The tool accepts:

  • paragraph: Text to extract entities from
  • target_entity: Type of entity to extract ("Disease", "Tissue", or "Cell Type")

and returns a list of normalized entities.

Video

Here is a video link that shows the MCP server in action with a Gradio-based MCP client:

Future Improvements

Our biomedical text normalization MCP server can be enhanced in several ways:

  • Expanded Entity Coverage: Extend beyond the current entity types (Disease, Tissue, Cell Type) to include medications, procedures, laboratory tests, and genomic entities.
  • User Feedback Loop: Implement a mechanism for users to correct normalization errors, creating a dataset for continuous model improvement.
  • Multilingual Support: Expand capabilities to handle medical text in languages beyond English.