Skip to main content
ClaudeWave
MCP ServersOfficial Registry0 stars0 forksPythonApache-2.0Updated today
Install in Claude Code / Claude Desktop
Method: pip / Python · -e
Claude Code CLI
claude mcp add target-mcp -- python -m -e
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "target-mcp": {
      "command": "python",
      "args": ["-m", "pytest"],
      "env": {
        "ANTHROPIC_API_KEY": "<anthropic_api_key>"
      }
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Install first: pip install -e
Detected environment variables
ANTHROPIC_API_KEY
Use cases

MCP Servers overview

# TARGET Checklist MCP Server

<!-- mcp-name: com.blackswancausallabs/target-mcp -->

An MCP server that operationalizes the **TARGET** reporting guideline
(TrAnsparent ReportinG of observational studies Emulating a Target trial;
Cashin et al., JAMA/BMJ, September 2025) as a deterministic, provenanced
scoring engine for target trial emulation (TTE) studies.

This is the *executable* TARGET: not a manuscript auditor that renders an
opinion, but a measurement instrument that produces a structured,
item-by-item, evidence-linked matrix with fixed model provenance, so a
corpus-scale result is reproducible.

See `../target-mcp-server-design.md` for the full design rationale.

## Status — vertical slice

Built and proven end-to-end:

- **Spec layer** — the 21 published items decomposed into **39 scoreable leaf
  subitems**, encoded as versioned YAML (`target_mcp/specs/target-0.1.0.yaml`)
  with own-words intent, verdict boundaries, signal terms, the 6x↔7x
  specification/emulation pairing, and applicability rules. Structurally
  validated on load (`spec.py`).
- **Ingestion layer** — PDF/text/docx → `SectionMap` with character-offset,
  **source-tagged** section spans (main vs `supplement:<file>`), protocol-table
  and flow-diagram detection, extractor version + text hash stamps, and
  whitespace-insensitive quote→span resolution. Supports **multi-document
  bundles** (main text + supplements) via `build_bundle` (`ingest.py`).
- **Retrieval layer** — the corpus/batch and convenience path: fetch
  open-access articles by PMCID from Europe PMC (JATS main text plus PMC-hosted
  supplementary files, merged into one bundle). Use this when there is no file
  in hand or to auto-fetch an OA paper's supplement; for a manuscript you were
  given, ingest the file directly (`retrieve.py`).
- **Assessment layer** — batched, single-pass scoring of all applicable leaves.
  **Scaffold mode (default)** is the path for reviewing a publication: the agent
  already in the loop is the scorer, so the server returns the exact prompt +
  schema for it to run, then validates the verdicts it submits. **Judge mode**
  is for the headless/batch case (no LLM in the loop) — the server makes its own
  pinned model call so a corpus run is reproducible and caller-independent. Both
  share one validation path that enforces leaf coverage, verdict vocabulary, and
  mandatory verbatim evidence resolved to spans with a `source_document` tag
  (`assess.py`).
- **Rendering layer** — `render_checklist` projects a finalized assessment onto
  the published TARGET checklist form (all 39 rows, verbatim item wording under
  CC BY-ND, a Location-reported column from the resolved evidence spans; the
  enriched view adds verdict + evidence). `render_checklist_docx` writes the
  same as a submission-ready Word file (`render.py`, `render_docx.py`).
- **Corpus & validation layers** — `aggregate_corpus` rolls many assessments
  into per-item completeness rates with coverage denominators (`corpus.py`);
  `validate.py` provides blind human coding-sheet generation and per-leaf
  agreement (raw, Cohen's κ, Gwet's AC1, sensitivity/specificity) against a
  gold standard.
- **Composition layer** — FastMCP server (`server.py`) exposing eleven tools.
  The primary manuscript flow is **`parse_manuscript`** (parse the file you
  were given, with `supplements=` when available) → **`assess_manuscript`** →
  **`submit_scaffold_verdicts`** → **`render_checklist`** (or
  `render_checklist_docx`). Supporting tools: `parse_pmcid` (corpus/batch or
  OA-supplement fetch), `get_checklist` (introspect the spec),
  `aggregate_corpus`, `build_coding_sheet`, and `validate_against_gold`.

Not yet built (see design doc): `assess_item`, `check_emulation_coherence`,
`export_identifiability_spec`, publisher-site supplement retrieval (beyond the
PMC-OA tier), better table extraction, and the separate materiality/design-risk
layer.

### Provenance stamped on every assessment

`spec_version`, resolved `model` id, `temperature`, `prompt_hash`,
`prompt_template_version`, `extractor_version`, `text_sha256`, `assessed_at`,
`full_text_available`, `supplement_status`, and a per-source `documents` list;
each evidence item carries its resolved span, section, and `source_document`.
A span is only meaningful alongside the extractor version and text hash, so
they travel together.

## Reporting completeness, not a pass/fail verdict

The instrument scores how *completely* a manuscript reports what the checklist
requires — not study quality, and it issues **no pass/fail judgment**. TARGET
presents all 21 items as essential minimum items with **no tiering**, and this
tool follows suit: the output is the 39 per-leaf verdicts with evidence and a
completeness tally. (An earlier "critical floor" — a BSCL pass/fail overlay over
six leaves — was removed in 2026-07-19 as off-message and confusing; see
`docs/DECISIONS.md`.) Do not present a verdict matrix as TARGET compliance.

## Install

The server and the optional orchestration skill ship together in this repo, but
they **activate through two separate mechanisms** — installing one does not
enable the other. Getting the files (clone/download) gives you both; then do the
two activation steps below.

### 1. Install the server

```bash
git clone https://github.com/Black-Swan-Causal-Labs/target-mcp.git
cd target-mcp
python3 -m venv .venv
.venv/bin/pip install -e .
```

(Once published to PyPI: `pip install target-mcp`.)

Run it standalone (stdio transport) to smoke-test:

```bash
.venv/bin/target-mcp
```

### 2. Register the server with your MCP client

Add it to the client's MCP config with an **absolute** path. For Claude Desktop
that file is `~/Library/Application Support/Claude/claude_desktop_config.json`
(macOS); for a Claude Code project use `.mcp.json`:

```json
{
  "mcpServers": {
    "target-checklist": {
      "command": "/ABSOLUTE/PATH/TO/target-mcp/.venv/bin/python",
      "args": ["-m", "target_mcp.server"]
    }
  }
}
```

Restart / reconnect the client. Confirm it exposes **11 tools** (a stale process
may show fewer — respawn it). The server is now fully usable on its own: any MCP
client can run parse → assess → submit → render in a single scaffold pass.

### 3. (Optional, Claude Code only) Activate the fan-out skill

`.claude/skills/target-checklist-fanout/` encodes the parallel-subagent
orchestration that scores the 39 leaves concurrently (~2 min vs ~20 min). It is
**an accelerator, not a dependency** — it only works in clients that can spawn
subagents (the Claude Code CLI, or the Claude Desktop **Code/Cowork** tabs; the
plain **Chat** tab cannot, and non-Claude clients like Codex ignore it). Without
it, everything still works via the single-pass fallback.

A Claude Code session discovers the skill when its working directory is this
repo. To make it available in **every** session regardless of directory, copy it
to the user scope:

```bash
mkdir -p ~/.claude/skills
cp -R .claude/skills/target-checklist-fanout ~/.claude/skills/
```

For the skill to actually run, all three must be present: the **server**
(step 2), the **skill** (this step), and a **subagent-capable client**.

### Judge mode (headless/batch, optional)

Judge mode needs `ANTHROPIC_API_KEY` in the environment. The pinned model is
`claude-sonnet-5` by default; override with `TARGET_JUDGE_MODEL`.

## Batch / corpus runs

Scoring hundreds of papers is a **headless** job, not an interactive MCP call (a
multi-hour tool call would blow the client's request timeout). Use the
`target-mcp-corpus` CLI: it fetches + judges a list of PMCIDs **concurrently**,
isolates per-paper failures, retries transient errors, and rolls up the
aggregate.

```bash
# ids.txt: one PMCID per line (#-comments and blanks ignored)
ANTHROPIC_API_KEY=sk-... target-mcp-corpus ids.txt -o out/ -j 12
```

- `-j/--workers` bounds concurrency (default 8; raise toward your API rate
  limit). Judge is ~a few minutes/paper, so wall-clock ≈ `papers / workers ×
  per-paper` — e.g. 300 papers at 12 concurrent ≈ 1–1.5h, versus ~10–20h serial.
- `-o/--out-dir` writes one JSON per assessment plus `aggregate.json` and
  `summary.json` (with per-paper stamps, verdict tallies, and any failures).
  Without `-o`, the aggregate prints to stdout.
- `--model` overrides the pinned judge model; `--no-supplements` skips
  supplement retrieval.

Judge mode records the **resolved** model id per paper, so a corpus aggregate is
truthfully provenanced and caller-independent. Re-roll-up saved assessments any
time with the `aggregate_corpus` MCP tool.

## Tests

```bash
.venv/bin/python -m pytest tests/ -q
```

Covers spec validation, section mapping and quote resolution, the finalize +
evidence-resolution path, evidence-required and coverage-mismatch guards,
applicability rules, abstract-only full-text gating, corpus aggregation,
the validation harness, checklist rendering (Markdown + .docx), and prompt-hash
stability.

## Licensing / commons hygiene

The encoded checklist is a re-encoding of item *intent* in own words plus
assessor notes; it does not reproduce the TARGET checklist wording verbatim.
The original checklist is © the TARGET group under CC BY-ND 4.0. When the
Explanation & Elaboration document is released, leaves flagged
`e_e_pending: true` should be re-checked and the spec bumped to a clean minor
release. Do not copy E&E text verbatim.

What people ask about target-mcp

What is Black-Swan-Causal-Labs/target-mcp?

+

Black-Swan-Causal-Labs/target-mcp is mcp servers for the Claude AI ecosystem with 0 GitHub stars.

How do I install target-mcp?

+

You can install target-mcp by cloning the repository (https://github.com/Black-Swan-Causal-Labs/target-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is Black-Swan-Causal-Labs/target-mcp safe to use?

+

Black-Swan-Causal-Labs/target-mcp has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.

Who maintains Black-Swan-Causal-Labs/target-mcp?

+

Black-Swan-Causal-Labs/target-mcp is maintained by Black-Swan-Causal-Labs. The last recorded GitHub activity is from today, with 0 open issues.

Are there alternatives to target-mcp?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy target-mcp to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: Black-Swan-Causal-Labs/target-mcp
[![Featured on ClaudeWave](https://claudewave.com/api/badge/black-swan-causal-labs-target-mcp)](https://claudewave.com/repo/black-swan-causal-labs-target-mcp)
<a href="https://claudewave.com/repo/black-swan-causal-labs-target-mcp"><img src="https://claudewave.com/api/badge/black-swan-causal-labs-target-mcp" alt="Featured on ClaudeWave: Black-Swan-Causal-Labs/target-mcp" width="320" height="64" /></a>

More MCP Servers

target-mcp alternatives