Metadata-Version: 2.3
Name: cdm-mcp-server
Version: 0.2.0
Summary: Develop MCP Servers for automate the work processes of the Clinical Data Manager.
Author: Woohyeon Jeong
Author-email: Woohyeon Jeong <whyeo.nooc@gmail.com>
Requires-Dist: fastmcp>=3.1.0
Requires-Dist: mcp[cli]>=1.26.0
Requires-Dist: numpy>=2.4.3
Requires-Dist: openpyxl>=3.1.5
Requires-Dist: pandas>=3.0.1
Requires-Dist: pdfplumber>=0.11.9
Requires-Dist: pymupdf>=1.27.2.2
Requires-Dist: xlsxwriter>=3.2.9
Requires-Python: >=3.13
Description-Content-Type: text/markdown

# 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**
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

**Windows**
```powershell
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**
```bash
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`

```json
{
  "mcpServers": {
    "cdm-server": {
      "command": "uvx",
      "args": ["cdm-mcp-server"]
    }
  }
}
```

Then restart Claude Desktop.

**Gemini CLI**
```bash
gemini mcp add cdm-server "uvx cdm-mcp-server" --scope user
```

### Step 3. Verify the Connection

**Claude Code**
```bash
claude mcp list
```

**Gemini CLI**
```bash
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
```
