Bloodtest MCP Server

Bloodtest MCP Server

A comprehensive health coaching system that combines blood test analysis with evidence-based nutritional therapy recommendations, powered by Retrieval-Augmented Generation (RAG).

Category
Visit Server

README

Bloodtest MCP Server

A comprehensive health coaching system that combines blood test analysis with evidence-based nutritional therapy recommendations, powered by Retrieval-Augmented Generation (RAG) technology.

๐Ÿ”— Live Endpoints:

Table of Contents

Overview

Key Features

  • Blood Test Analysis: Get optimal ranges for 8+ key health markers based on functional medicine
  • Personalized Recommendations: Evidence-based supplement and lifestyle advice from German medical literature
  • RAG-Powered Knowledge Base: Search through indexed medical texts using FAISS vector database
  • MCP Protocol Support: Integrate with Claude Desktop and other MCP-compatible clients
  • Multi-format Support: Process blood test results in PDF, image, and text formats
  • RESTful API: Access blood test reference values programmatically
  • Health Coaching Workflows: Comprehensive assessment and recommendation generation

Technical Stack

  • Framework: FastMCP with FastAPI integration
  • AI/ML: LangChain, sentence-transformers, FAISS
  • File Processing: PyPDF, python-multipart
  • Configuration: YAML-based workflow definitions
  • Deployment: Docker with Railway cloud deployment
  • Language: Python 3.12+

User Manual

Getting Started

  1. Access the Production System

    Current Active Endpoint:

    • Web Interface: https://supplement-therapy.up.railway.app
    • API Base URL: https://supplement-therapy.up.railway.app
    • MCP SSE Endpoint: https://supplement-therapy.up.railway.app/sse
    • Health Check: https://supplement-therapy.up.railway.app/health

    New Endpoint (being configured):

    • https://bloodtest-mcp.up.railway.app - Will be available once Railway configuration is complete
  2. Authentication

    • Currently, no authentication is required for public endpoints
    • For production use, implement Bearer token authentication

Claude Desktop Integration

To use this MCP server with Claude Desktop:

  1. Open Claude Desktop Configuration

    • Click on Claude menu (macOS) or File menu (Windows)
    • Select Settings โ†’ Developer โ†’ Edit Config
  2. Add Server Configuration Add the following to your claude_desktop_config.json:

    {
      "mcpServers": {
        "bloodtest-health-coach": {
          "command": "npx",
          "args": [
            "-y",
            "@modelcontextprotocol/server-sse",
            "https://supplement-therapy.up.railway.app/sse"
          ],
          "env": {}
        }
      }
    }
    

    Note: Once bloodtest-mcp.up.railway.app is active, update the URL to https://bloodtest-mcp.up.railway.app/sse

  3. Save and Restart Claude Desktop

    • Save the configuration file
    • Completely quit and restart Claude Desktop
    • The health coach tools should now appear in Claude

Configuration File Locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Using the Health Coach

  1. Upload Blood Test Results

    • Supported formats: PDF, JPG, PNG
    • German lab reports are automatically parsed
    • Optimal ranges are compared against your results
  2. Complete Health Assessment

    • Provide demographic information
    • Describe current symptoms and health concerns
    • Set your health goals and priorities
  3. Receive Personalized Recommendations

    • Supplement protocols with specific dosages and timing
    • Dietary modifications based on your deficiencies
    • Lifestyle interventions for optimal health
    • All recommendations include citations from medical literature

Available MCP Tools

  1. get_book_info

    • Returns metadata about loaded medical books and RAG status
    • Shows available workflows and system capabilities
  2. list_workflows

    • Lists all available health coaching workflows
    • Each workflow has a specific focus area
  3. supplement_therapy

    • Main health coaching workflow
    • Provides comprehensive supplement recommendations
    • Requires patient assessment data
  4. search_book_knowledge

    • Search through indexed medical knowledge base
    • Returns relevant passages with page references
    • Example: "optimal ferritin levels for women"
  5. sequential_thinking

    • Multi-step reasoning for complex health analysis
    • Useful for differential diagnosis and complex cases

Developer Manual

Prerequisites

  • Python 3.12 or higher
  • Docker (optional, for containerized deployment)
  • Git

Installation

  1. Clone the Repository

    git clone https://github.com/longevitycoach/bloodtest-mcp-server.git
    cd bloodtest-mcp-server
    
  2. Create Virtual Environment

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  3. Install Dependencies

    pip install -r requirements.txt
    

Development Setup

  1. Initialize the RAG Knowledge Base

    # Place PDF files in resources/books directory
    INDEX_NAME="supplement-therapy" PDF_DIRECTORY="resources/books" python scripts/init_rag.py
    
  2. Configure the Application

    • Edit resources/structure.yaml to customize workflows
    • Ensure rag.config.index_name matches your INDEX_NAME
  3. Run the Development Server

    # Run MCP server with SSE transport
    python server.py --host 0.0.0.0 --port 8000
    
    # Or run integrated server (MCP + API)
    python integrated_server.py --host 0.0.0.0 --port 8000
    
    # Or run just the FastAPI server
    python main.py
    

API Documentation

Base Endpoints

  • GET / - API information and available endpoints
  • GET /health - Health check endpoint
  • GET /parameters - List all blood test parameters
  • GET /reference/{parameter} - Get reference range for a parameter
  • GET /sse - MCP Server-Sent Events endpoint

Example API Usage

import requests

# Get all available parameters
response = requests.get("https://supplement-therapy.up.railway.app/parameters")
print("Available parameters:", response.json()["parameters"])

# Get reference range for ferritin
response = requests.get(
    "https://supplement-therapy.up.railway.app/reference/ferritin",
    params={"sex": "female"}
)
print("Ferritin reference:", response.json())

Blood Test Parameters Supported

Parameter Unit Description
ferritin ng/ml Iron storage protein
tsh mIU/l Thyroid-stimulating hormone
vitamin_d ng/ml 25-OH Vitamin D
vitamin_b12 pmol/l Vitamin B12 (Holo-TC)
folate_rbc ng/ml Red Blood Cell Folate
zinc mg/l Essential mineral
magnesium mmol/l Whole blood magnesium
selenium ยตg/l Antioxidant mineral

Testing

# Run all tests with coverage
pytest tests/ -v --cov=bloodtest_tools --cov-report=term-missing

# Run specific test file
pytest tests/test_api_endpoints.py -v

# Run with Makefile
make test

# Run MCP Integration Tests
python tests/test_mcp_client.py

Test Organization

  • tests/test_api_endpoints.py - API endpoint tests
  • tests/test_bloodtest_tools.py - Core functionality tests
  • tests/test_edge_cases.py - Edge case handling
  • tests/test_integration.py - Integration tests
  • tests/test_mcp_client.py - MCP SSE protocol tests
  • tests/test_mcp_integration.py - Comprehensive MCP integration tests
  • testdata/ - Comprehensive test scenarios and data

MCP Integration Testing

The MCP integration tests validate the server's SSE (Server-Sent Events) protocol implementation and knowledge base functionality:

Positive Test Cases (10 tests):

  1. Health Check - Verifies server health endpoint
  2. SSE Connection - Tests SSE endpoint connectivity
  3. Ferritin Knowledge Query - Validates optimal range information
  4. Vitamin D Query - Tests deficiency symptom searches
  5. Magnesium Supplementation - Verifies dosage guidance
  6. TSH Interpretation - Tests thyroid value interpretation
  7. B12 Holotranscobalamin - Validates B12 information retrieval
  8. Selenium Immune System - Tests mineral-immune connections
  9. Zinc-Copper Ratio - Validates supplementation balance info
  10. Folate Requirements - Tests folate reference information

Negative Test Cases (10 tests):

  1. Invalid Endpoint - 404 response for non-existent paths
  2. Wrong HTTP Method - Rejects POST on SSE endpoint
  3. Invalid Health Method - Rejects POST on health endpoint
  4. Invalid API Path - Handles /api/invalid correctly
  5. Test Path - Rejects /test endpoint
  6. Admin Path - Rejects /admin access
  7. Path Traversal - Blocks /../etc/passwd attempts
  8. Health Path Traversal - Blocks /health/../../
  9. SSE Subpath - Rejects /sse/invalid
  10. Null Path - Handles /null endpoint

Running Integration Tests Locally:

# Build and run Docker container
docker build -t bloodtest-mcp-server:local -f Dockerfile.optimized .
docker run -d --name bloodtest-local -p 8001:8000 bloodtest-mcp-server:local

# Run integration tests
python tests/test_mcp_client.py

# Check health endpoint
curl http://localhost:8001/health

# Clean up
docker stop bloodtest-local && docker rm bloodtest-local

Test Report

The MCP integration test suite validates the server's functionality, security, and performance. Here's the comprehensive test report from the latest execution:

๐Ÿ“Š Overall Results

  • Total Tests: 37 (20 MCP + 17 Reference Values)
  • Passed: 37/37 (100%)
  • Failed: 0
  • Execution Time: < 45 seconds

๐Ÿฅ Health Check Tests (4/4 Passed)

Test Description Result Response Time
Health Endpoint Validates /health returns correct status โœ… Passed 1.36ms
SSE Endpoint Verifies /sse accessibility โœ… Passed < 5ms
Invalid Endpoint Ensures 404 for non-existent paths โœ… Passed < 2ms
Performance Checks response time under threshold โœ… Passed 1.36ms

๐Ÿ“š Positive Knowledge Base Tests (10/10 Passed)

Test # Query Type Description Result
1 Health Check Server health verification โœ… Passed
2 SSE Connection Protocol connectivity test โœ… Passed
3 Ferritin Optimal range information โœ… Passed
4 Vitamin D Deficiency symptom search โœ… Passed
5 Magnesium Supplementation guidance โœ… Passed
6 TSH Thyroid value interpretation โœ… Passed
7 B12 Holotranscobalamin levels โœ… Passed
8 Selenium Immune system connection โœ… Passed
9 Zinc-Copper Ratio balance information โœ… Passed
10 Folate Requirements validation โœ… Passed

๐Ÿ›ก๏ธ Security & Error Handling Tests (10/10 Passed)

Test # Attack Vector Expected Response Result
11 Invalid endpoint 404 Not Found โœ… Passed
12 POST on SSE 405 Method Not Allowed โœ… Passed
13 POST on health 405 Method Not Allowed โœ… Passed
14 /api/invalid 404 Not Found โœ… Passed
15 /test 404 Not Found โœ… Passed
16 /admin 404 Not Found โœ… Passed
17 /../etc/passwd 404 (Path Traversal Blocked) โœ… Passed
18 /health/../../ 404 (Path Traversal Blocked) โœ… Passed
19 /sse/invalid 404 Not Found โœ… Passed
20 /null 404 Not Found โœ… Passed

๐Ÿš€ Performance Metrics

  • Docker Build Time: ~5 seconds
  • Server Startup Time: ~10 seconds
  • Health Check Response: 1.36ms average
  • SSE Connection Time: < 5ms
  • Error Response Time: < 2ms

๐Ÿ”ง Test Environment

  • Docker Image: bloodtest-mcp-server:local
  • Container Port: 8001 (mapped to internal 8000)
  • Test Framework: Python requests + custom MCP client
  • Execution Date: Latest CI/CD run

๐Ÿ“‹ Reference Values Tests (17/17 Passed)

Test # Parameter Optimal Range Supplement Advice Result
1 Ferritin 70-200 ng/ml Iron bisglycinate 25-50mg with Vitamin C โœ… Passed
2 Vitamin D 50-70 ng/ml 4000-6000 IU daily โœ… Passed
3 Vitamin B12 >100 pmol/l 1000 mcg daily sublingual โœ… Passed
4 Zinc 6-7 mg/l 15-30 mg daily โœ… Passed
5 Magnesium 0.85-1.0 mmol/l 300-600 mg daily โœ… Passed
6 Omega-3 Index >8% 2-4g EPA/DHA daily โœ… Passed
7 Testosterone Men: 8-30 pg/ml Vitamin D, zinc, magnesium โœ… Passed
8 Estradiol Men: 20-25 pg/ml DIM, calcium-d-glucarate โœ… Passed
9 hs-CRP <1.0 mg/L Omega-3, curcumin, resveratrol โœ… Passed
10 Zonulin <30 ng/ml L-glutamine, zinc carnosine โœ… Passed
11 Vitamin C 10-20 mg/l 500-1000mg daily โœ… Passed
12 Vitamin E 16-25 mg/l 200-400 IU mixed tocopherols โœ… Passed
13 HbA1c <5.6% Chromium, alpha-lipoic acid โœ… Passed
14 Triglycerides <120 mg/dl Omega-3, niacin, fiber โœ… Passed
15 TSH 0.5-2.0 mIU/l Iodine, selenium, tyrosine โœ… Passed
16 Folate >20 ng/ml RBC 5-MTHF (methylfolate) โœ… Passed
17 Selenium 120-150 ยตg/l 200 mcg daily โœ… Passed

โœ… Summary

All 37 integration tests passed successfully, demonstrating:

  • Robust health monitoring
  • Proper SSE protocol implementation
  • Comprehensive error handling
  • Strong security measures against common attacks
  • Excellent performance with sub-2ms response times
  • RAG system readiness for medical knowledge queries
  • Complete coverage of all blood test reference values
  • Evidence-based supplement recommendations

The server is production-ready with all security measures in place, optimal performance characteristics, and comprehensive knowledge of blood test parameters and supplementation guidance.

Deployment

Railway (Production)

The application is deployed on Railway:

  1. Connect Repository

    • Connect GitHub repository to Railway
    • Auto-deploys on push to main branch
  2. Environment Variables

    PORT=8000
    ENV=production
    PDF_DIRECTORY=/app/resources/books
    INDEX_DIRECTORY=/app/faiss_index
    INDEX_NAME=supplement-therapy
    
  3. Monitoring

    • Health check: https://supplement-therapy.up.railway.app/health
    • View logs in Railway dashboard
    • Current endpoint: https://supplement-therapy.up.railway.app
    • New endpoint (pending): https://bloodtest-mcp.up.railway.app

Docker

# Build and run with Docker
docker build -t bloodtest-mcp-server -f Dockerfile.optimized .
docker run -p 8000:8000 bloodtest-mcp-server

# Or use Docker Compose
docker-compose up --build

Project Structure

bloodtest-mcp-server/
โ”œโ”€โ”€ bloodtest_tools/        # Core blood test functionality
โ”‚   โ”œโ”€โ”€ api.py             # FastAPI endpoints
โ”‚   โ”œโ”€โ”€ reference_values.py # Medical reference ranges
โ”‚   โ””โ”€โ”€ mcp_tool.py        # MCP tool wrappers
โ”œโ”€โ”€ utils/                  # Utility modules
โ”‚   โ”œโ”€โ”€ rag_system.py      # FAISS RAG implementation
โ”‚   โ””โ”€โ”€ sequential_thinking.py # Reasoning tool
โ”œโ”€โ”€ resources/              # Configuration and books
โ”‚   โ”œโ”€โ”€ structure.yaml     # Workflow definitions
โ”‚   โ””โ”€โ”€ books/             # PDF medical texts
โ”œโ”€โ”€ scripts/               # Utility scripts
โ”‚   โ””โ”€โ”€ init_rag.py       # RAG initialization
โ”œโ”€โ”€ tests/                 # Test suite
โ”œโ”€โ”€ server.py             # Main MCP server
โ”œโ”€โ”€ integrated_server.py  # Combined MCP + API server
โ””โ”€โ”€ main.py              # FastAPI entry point

Advanced Topics

RAG System Architecture

  1. Document Processing

    • PDFs are split into chunks (1000 chars with 200 overlap)
    • Text embedded using sentence-transformers
    • Vectors stored in FAISS index
  2. Query Flow

    • User query is embedded
    • Top-k similar documents retrieved
    • Context passed to LLM for response generation
  3. Configuration

    rag:
      enabled: true
      config:
        index_name: "supplement-therapy"
        index_directory: "./faiss_index"
        chunk_size: 1000
        chunk_overlap: 200
    

Workflow Configuration

Workflows are defined in resources/structure.yaml:

workflows:
  - name: "Supplement Therapy"
    description: "Personalized supplement recommendations"
    prompt: |
      Based on the blood test results and health assessment,
      provide evidence-based supplement recommendations...

Troubleshooting

Common Issues

  1. FAISS Index Not Found

    • Ensure INDEX_NAME in environment matches structure.yaml
    • Run python scripts/init_rag.py to create index
  2. Connection Issues with Claude Desktop

    • Verify server is running: check /health endpoint
    • Ensure configuration JSON is valid
    • Restart Claude Desktop completely
  3. Docker Build Failures

    • Check Python version compatibility
    • Ensure all files are included in build context
    • Verify FAISS index exists in Docker image

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License. See LICENSE file for details.

Acknowledgments

  • Medical reference values based on work by Dr. Ulrich Strunz and Dr. Helena Orfanos-Boeckel
  • Built with FastMCP, FastAPI, and LangChain
  • Deployed on Railway cloud platform

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