# CLAUDE.md

This file provides guidance to **Claude** (Claude Desktop, Claude Code, or Claude API) when working with this repository. It is the dedicated Claude-specific version of the shared `CONTEXT.md`. Keep both files in sync where possible, but tailor this one to Claude's strengths (skills, MCP integration, artifact generation, etc.).

## Project Overview

A collection of **Model Context Protocol (MCP)** servers and reusable **agent skills**. These enable Claude (and other LLMs) to perform specialized tasks including:
- Medical imaging QA and analysis (DICOM/MRI, body composition, Dixon sequences, T1 mapping, pixel stats, SNR, Philips private tags, segmentation verification).
- Browser automation and web testing (Playwright and Selenium MCPs).
- Filesystem operations, weather queries (Open-Meteo), document manipulation (DOCX/PDF/PPTX/XLSX), complex HTML artifact generation (React/Tailwind/shadcn), and MCP/skill development guides.

**Core Philosophy**: MCP provides standardized, workflow-oriented tools that reduce boilerplate and enable natural language interaction with external data and services. Skills are structured Markdown/YAML guides with best practices, examples, and evaluation criteria. All new documentation, code, and contributions in this repo must remain **model-provider agnostic** while including platform-specific configuration notes (Claude Desktop/Code, Grok CLI, etc.).

See `README.md` for full structure, MCP descriptions, skills list, setup instructions, and the shared `CONTEXT.md`. Also reference `.grok/context.md` for cross-platform insights (especially Grok's sub-agent patterns that can inspire Claude workflows).

## MCP Servers (in ./mcps/)

Claude integrates MCP servers natively via `.mcp.json`, `.claude/settings.local.json`, and the config in `config/claude_desktop_config.json`. Launch them using the provided scripts.

- **dicom-mcp** (primary focus for QA workflows): 17+ read-only tools optimized for body composition and liver imaging QA. Key tools include `dicom_summarize_directory`, `dicom_find_dixon_series`, `dicom_get_metadata`, `dicom_compare_headers`, `dicom_validate_sequence`, `dicom_analyze_series`, `dicom_query`, `dicom_read_pixels`, `dicom_compute_snr`, `dicom_render_image` (with windowing/ROI overlays), `dicom_dump_tree`, `dicom_analyze_ti`, and more (Philips private tags, UID comparison, segmentation verification).
  - Best for both non-technical users (plain-language QA without shell access) and developers.
  - Launch: `mcps/dicom_mcp/run_dicom_mcp_server.sh` (add `DICOM_MCP_PII_FILTER=true` for patient data redaction).
  - See `mcps/dicom_mcp/README.md`, `docs/CAPABILITIES.md`, `docs/GUIDELINES.md`, and `docs/USAGE.md`.
- **filesystem-mcp**: Full read/write/update/list/delete/move/copy with session defaults (via `@cyanheads/filesystem-mcp-server`).
- **open-meteo-mcp**: Current weather and forecasts (temperature, precipitation, wind, WMO codes decoded to English). No API key needed.
- **playwright-mcp**: Modern browser automation — navigate, click, type, fill forms, take screenshots (viewport/full-page), accessibility snapshots, JS evaluation, tabs, waits, console/network inspection, drag & drop.
- **selenium-mcp**: Alternative multi-session browser automation with smart waits, actionable error suggestions, form filling, content extraction (text/HTML/links), and screenshots.

**Claude Configuration**:
- **Claude Code**: The root `.mcp.json` registers all servers. `.claude/settings.local.json` enables them and registers the skills paths. Open the project to activate.
- **Claude Desktop**: Copy (and update absolute paths in) `config/claude_desktop_config.json` to `~/Library/Application Support/Claude/claude_desktop_config.json`.
- Always prefer MCP tools over writing ad-hoc Python/scripts when the tool matches the task. Use skills for higher-level orchestration.

## Skills (in ./skills/)

Claude has first-class support for these via the Skills feature (see Claude Docs). Load them through `.claude/settings.local.json` (already configured) or the Skills API.

- **artifacts-builder**: Build sophisticated, multi-component HTML artifacts using React 18, TypeScript, Vite, Tailwind, and shadcn/ui. Includes `init-artifact.sh` and `bundle-artifact.sh`. Follow anti-"AI slop" guidelines (avoid excessive centered layouts, purple gradients, uniform rounded corners, Inter font).
- **document-skills/** (docx, pdf, pptx, xlsx): Creation, editing, analysis, forms, merging/splitting, formula support, and OOXML schema references.
- **mcp-builder**: **Highly recommended**. Comprehensive guide for creating high-quality MCP servers (Python FastMCP or Node/TypeScript SDK). Follow the four phases: deep research/planning (agent-centric design, workflow tools), implementation, evaluation, and iteration. Emphasizes consolidating operations into high-impact tools rather than 1:1 API wrappers.
- **skill-creator**: Guide for developing new reusable Claude skills (structure, examples, evaluation).
- **webapp-testing**: Playwright-based scripts and examples for testing local web applications.

When using a skill, follow its `SKILL.md` exactly, including the YAML frontmatter. Combine skills with MCP tools (e.g., use artifacts-builder to visualize DICOM QA results).

## General Best Practices for Claude

- **Provider Agnostic**: Even though this is `CLAUDE.md`, avoid Claude-only phrasing in code, docs, or outputs. Reference the shared `CONTEXT.md` and `README.md` for neutral language. Mention Grok CLI compatibility where relevant (e.g., its built-in `mcp_*` tools and sub-agents).
- **Workflow Priorities**:
  1. Understand the request thoroughly.
  2. Explore first (use MCP tools, `read_file`, or equivalent research).
  3. Plan with skills (`mcp-builder` or `skill-creator` patterns).
  4. Implement surgically (prefer targeted changes; verify with tests/re-reads).
  5. Use artifacts for rich outputs (HTML with React where appropriate).
  6. Validate rigorously (pytest for MCPs, visual confirmation for renders, cross-platform notes).
- **Context Management**: Keep context lean. Claude Desktop has no direct shell/filesystem access — that's why MCPs exist. Use `.gitignore`, `.grokignore`, and Claude's ignore patterns to exclude large binaries (DICOMs, images, node_modules, PDFs, etc.).
- **DICOM QA Specifics** (common use case):
  - Start with `dicom_summarize_directory` or `dicom_list_files` (use `count_only` for large dirs).
  - Detect Dixon with `dicom_find_dixon_series`.
  - Compare headers, validate parameters, analyze series consistency.
  - For pixels: Render first (`dicom_render_image` with auto_window or manual WL), identify ROIs, then compute stats/SNR.
  - Handle Philips private tags via `dicom_query_philips_private` or `dicom_get_metadata`.
  - Use `dicom_analyze_ti` for MOLLI/T1 mapping.
- **Commands**:
  ```bash
  # Python MCP setup (e.g. dicom)
  cd ~/Projects/local/mcp_servers/dicom_mcp
  poetry install --with dev
  poetry run pytest -v --tb=short

  # Run specific test
  poetry run pytest test_dicom_mcp.py::TestToolRegistration::test_all_tools_registered -v

  # Launch MCP server
  poetry run python -m dicom_mcp
  # With PII filtering
  DICOM_MCP_PII_FILTER=true poetry run python -m dicom_mcp

  # Other MCPs: Use the launch_*.sh scripts in each mcps/ subdir
  ```
- **Artifact & Output Guidelines**: When generating UIs or reports, follow artifacts-builder rules to produce clean, professional results. For QA outputs, use consistent markdown tables, include confidence scores where appropriate, and offer both summary and detailed views.

## Platform Notes & Cross-Compatibility

- **Claude Desktop/Code**: Full native MCP + Skills support. Use this `CLAUDE.md`, the shared `CONTEXT.md`, and skills heavily.
- **Grok CLI**: See `.grok/context.md` for its sub-agent system (`task` with `general`/`explore`/`verify`/`computer`, `delegate` for background work). Many of our MCPs are exposed as built-in `mcp_*` tools. Adapt Grok's workflow priorities here when switching contexts.
- **Other LLMs**: Use the shared `CONTEXT.md` as the base. MCP spec: https://modelcontextprotocol.info/docs/.

**Always start sessions with**: "Follow the guidance in CLAUDE.md (and CONTEXT.md), the main README.md, relevant SKILL.md files, and any active MCP tool descriptions. Keep all outputs, documentation, and new code model-provider agnostic."

Update this file, the shared `CONTEXT.md`, `README.md`, or subproject docs as the repository evolves. For new MCP servers or skills, begin with the `mcp-builder` and `skill-creator` guides. This ensures high-quality, consistent, and portable tools.