medical-mcp-agent

medical-mcp-agent

Provides medical symptom extraction, differential diagnosis generation, PubMed literature search, and abstract summarization tools for LLM agents.

Category
Visit Server

README

medical-mcp-agent

Python 3.12 License: MIT Groq Llama-3.3-70b

Overview ๐Ÿฉบ

medical-mcp-agent is a Python-based AI-powered medical assistant prototype that combines Groq's Llama-3.3-70b model, real-time PubMed literature search, and a Model Context Protocol (MCP) server.

It provides three interfaces:

  • FastAPI REST API backend for structured diagnostic JSON responses
  • Streamlit web dashboard for an interactive dark-themed clinical assistant experience
  • FastMCP server exposing medical tools to LLM clients

This repository is designed for clinical decision support research and prototyping, not for actual medical diagnosis.

Table of Contents ๐Ÿ“š

Features โœจ

  • Extracts medical symptoms from natural language patient descriptions using AI
  • Generates ranked differential diagnoses, home remedies, treatments, and red-flag warnings
  • Searches and fetches real research articles from the NCBI PubMed database
  • Summarizes medical research abstracts into concise 3-4 line insights using AI
  • Beautiful dark-themed Streamlit dashboard with symptom tags, expandable article cards, and emergency warning banners
  • FastAPI REST endpoint: POST /diagnosis
  • MCP server with four callable tools for LLM agents

Tech Stack ๐Ÿง 

  • Python 3.12
  • Groq API with Llama-3.3-70b-versatile
  • FastAPI + Uvicorn for REST backend
  • Streamlit for web UI
  • FastMCP for MCP server framework
  • NCBI PubMed Entrez API for medical literature search
  • BeautifulSoup4 + lxml for HTML/XML parsing
  • uv as the Python package manager

Project Structure ๐Ÿ—‚๏ธ

medical-mcp-agent/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ config.py               # Groq client setup
โ”‚   โ”‚   โ”œโ”€โ”€ symptom_extractor.py    # AI symptom extraction
โ”‚   โ”‚   โ”œโ”€โ”€ diagnosis_symptoms.py   # AI diagnosis generation
โ”‚   โ”‚   โ”œโ”€โ”€ pubmed_articles.py      # PubMed search and fetch
โ”‚   โ”‚   โ””โ”€โ”€ summarize_pubmed.py     # AI abstract summarization
โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”œโ”€โ”€ api.py                  # FastAPI backend
โ”‚   โ”‚   โ””โ”€โ”€ streamlit.py            # Streamlit web dashboard
โ”‚   โ””โ”€โ”€ mcp/
โ”‚       โ””โ”€โ”€ server.py               # FastMCP MCP server
โ”œโ”€โ”€ .env                            # API keys
โ”œโ”€โ”€ pyproject.toml                  # Project dependencies
โ””โ”€โ”€ requirements.txt

Installation โš™๏ธ

  1. Clone the repository:
git clone https://github.com/your-username/medical-mcp-agent.git
cd medical-mcp-agent
  1. Create a .env file in the project root with your Groq API key:
GROQ_API_KEY=your_key_here
  1. Install dependencies with uv:
uv sync

Always prefix commands with PYTHONPATH=. when running from the project root.

Usage ๐Ÿš€

Run FastAPI

Start the REST backend using the repository root:

PYTHONPATH=. python src/app/api.py

The API exposes:

  • POST /diagnosis

Run Streamlit

Open the Streamlit dashboard with:

PYTHONPATH=. uv run streamlit run src/app/streamlit.py

Run MCP Server

Launch the MCP server for LLM integrations:

PYTHONPATH=. uv run fastmcp dev inspector src/mcp/server.py

MCP Tools ๐Ÿงฉ

The MCP server exposes the following callable tools:

  1. extract_patient_symptoms โ€” Extracts symptoms from natural language text
  2. generate_differential_diagnosis โ€” Generates diagnoses from a list of symptoms
  3. search_pubmed_literature โ€” Searches NCBI PubMed and returns article metadata
  4. synthesize_medical_abstracts โ€” Summarizes medical research abstracts

These tools allow LLM clients to request structured medical assistance through MCP-aware workflows.

Environment Variables ๐Ÿ”

Create a .env file and add the following variable:

GROQ_API_KEY=your_key_here

The Groq API key is required for all AI-powered operations.

Example API Request ๐Ÿงช

Send a patient description to the FastAPI endpoint:

curl -X POST http://127.0.0.1:8000/diagnosis \
  -H "Content-Type: application/json" \
  -d '{"patient_description": "36-year-old female with fever, cough, and chest pain."}'

The response returns structured JSON with symptoms, differential diagnosis, treatments, and alerts.

Notes ๐Ÿ“

  • The Streamlit dashboard includes symptom tags, article cards, and warning banners for urgent issues.
  • The PubMed integration searches the NCBI Entrez API and parses results with BeautifulSoup.
  • The MCP server supports integration with external LLM agents and tool-based workflows.

Disclaimer โš ๏ธ

This repository is a clinical decision support prototype and NOT a replacement for professional medical advice.

Use this project for experimentation, research, and learning only. Always consult a licensed healthcare professional for real medical decisions.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured