Develop MCP Servers for automate the work processes of the Clinical Data Manager.
Project description
Clinical Data Management MCP Server
A unified MCP (Model Context Protocol) server for automating Clinical Data Manager (CDM) workflows. Provides Excel comparison, Google Calendar integration, and more through any MCP-compatible AI agent.
Available Tools
Excel & DB Spec Engine
- compare_common_excel: Compares specific sheets of two Excel files and generates a difference report (
comparison_result.xlsx). Requires specifying the primary key column. - compare_db_spec: Compares full CDM DB Spec workbooks. Automatically detects header positions and updates the Revision History sheet.
Calendar CSV Generator
- make_google_calendar_csv: Extracts key schedules from a Timeline/Schedule Excel file and converts them into a CSV formatted for Google Calendar. The output file can be imported manually via Google Calendar > Settings > Import/Export.
Blank eCRF PDF Comparison
- compare_ecrf_pdf_single: Compares two Blank eCRF PDF files and produces a single side-by-side comparison PDF. Changed pages are shown with Before (left) and After (right) layouts. Annotations use color coding: red = deleted, green = added, yellow = modified. Adjacent annotations of the same color are automatically merged.
Installation
Step 1. Install uv
uv is a fast Python package manager. Installing it also gives you uvx, which runs packages without a separate Python installation.
Mac / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Step 2. Register the MCP Server
Choose the AI client you use and run the corresponding command once. This registers the server globally so it's available from any directory.
Claude Code
claude mcp add --scope user cdm-server uvx cdm-mcp-server
Claude Desktop
Add the following to your Claude Desktop config file:
- Mac:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"cdm-server": {
"command": "uvx",
"args": ["cdm-mcp-server"]
}
}
}
Then restart Claude Desktop.
Gemini CLI
gemini mcp add cdm-server "uvx cdm-mcp-server" --scope user
Step 3. Verify the Connection
Claude Code
claude mcp list
Gemini CLI
gemini mcp list
You should see cdm-server: ✓ Connected.
Usage
Once connected, simply describe what you need in natural language:
"Compare the previous and current DB Spec files and generate a difference report. Also extract the schedule from the Timeline sheet and create a CSV for Google Calendar."
The AI agent will automatically select and call the appropriate tool.
Project Structure
src/
└── cdm_mcp_server/
├── __init__.py
├── server.py # MCP server entry point
└── modules/
├── excel_compare.py # Excel & DB Spec comparison engine
├── calendar_maker.py # Timeline parsing & Calendar CSV generator
└── pdf_ecrf_compare.py # Blank eCRF PDF comparison engine
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cdm_mcp_server-0.2.0.tar.gz.
File metadata
- Download URL: cdm_mcp_server-0.2.0.tar.gz
- Upload date:
- Size: 35.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99634371d22dad625b4dec76e38b0010efbb86fd356c7880d2fae174cd856412
|
|
| MD5 |
29dd201d0c0548ffd8176cfe3b108a84
|
|
| BLAKE2b-256 |
3724fc327fa6797a53d502c67d2142cc5d062cf54a24c3d830827e4dc3037ad0
|
File details
Details for the file cdm_mcp_server-0.2.0-py3-none-any.whl.
File metadata
- Download URL: cdm_mcp_server-0.2.0-py3-none-any.whl
- Upload date:
- Size: 41.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37bbea36c49ea44398dfe877fba5311bba2b4f028f7e3dfd8f6437acb6338f4b
|
|
| MD5 |
6b5ed061a48f34e8a131b5007e329af0
|
|
| BLAKE2b-256 |
e065b51fa9c2de19658bebe0de263c92ada2f047605d7158ebdc20dbce1d1766
|