research-scope-mcp
# research-scope-mcp
**Turn a scattered source set into a decision-ready, traceable report.**
`research-scope-mcp` is an MCP server that runs a research-to-report workflow any
MCP client can drive end to end:
1. **`plan_research(scope)`** — turns a research scope into a source-target plan with
**kill criteria** ("fewer than 1 primary + 2 independent secondaries → stop and
report *insufficient sources*, don't proceed on thin evidence").
2. **`fetch_and_score(source_url)`** — crawls one source and returns an **explainable**
0–100 quality score: primary-source detection, publication freshness, paywall and
conflict-of-interest flags — every dimension returned *with the evidence*.
3. **`build_report(topic, sources)`** — assembles a citation-registry report shell
(claims section + numbered registry + scoring appendix) for the scored sources.
4. **`check_report(report)`** — verifies every substantive claim cites ≥1 scored
source. Orphan claims come back as an **error list, not a pass**.
The problem it solves: agent-written reports that *sound* confident but can't show
where any sentence came from. This server makes scoring and citation coverage
mechanically enforced, so the report is auditable by a human in 90 seconds.
## Install
```bash
npm install -g research-scope-mcp # once published; local: npm ci && npm run build
```
Run over stdio (most clients):
```bash
npx research-scope-mcp
```
Or over Streamable HTTP (remote deployments):
```bash
npx research-scope-mcp --http --port 3001
# unauthenticated requests get 401 + WWW-Authenticate discovery, never a bare 403
```
## Client config
Drop-in config snippets for [Claude Code](clients/claude-code.json),
[Cursor](clients/cursor.json), and a Cline-friendly
[`llms-install.md`](clients/llms-install.md).
## Docker
```bash
docker build -t research-scope-mcp -f docker/Dockerfile .
docker run --rm -i -p 3001:3001 research-scope-mcp --http --port 3001
```
## Tools
| Tool | Input | Output |
|---|---|---|
| `plan_research` | `scope`, optional `domain_hints` | source-target plan with kill criteria |
| `fetch_and_score` | `source_url` | 0–100 score + flags (primary, freshness, paywall, COI), registered for reporting |
| `build_report` | `topic`, `sources[]` (must already be scored) | report shell saved under `data/reports/`, `[Sn]` citation numbering |
| `check_report` | `report_id` or `report_path` | pass/fail + orphan-claim error list |
## Example walkthrough
See [docs/runs/](docs/runs/) for two worked runs with inputs and outputs, and
[docs/notes/](docs/notes/) for what to do when something times out or 401s.
## Scoring rubric
| Dimension | Max | Notes |
|---|---|---|
| Availability & substance | 20 | extractable text length |
| Primary-source status | 32 | host class (gov/edu/filings) or self-published primary (press/announcement paths) |
| Freshness | 24 | ≤30d full marks, decays to 2 at >5y, 0 if undetectable |
| Access | 12 | paywall/registration walls lose marks |
| Independence | 12 | sponsored/affiliate/partnership markers |
`score ≥ 80` → A, `≥ 65` → B, `≥ 45` → C, else D. The rubric is inside
[src/scoring/score.ts](src/scoring/score.ts) and returns its evidence, so a score is
auditable, not a vibe.
## License
MIT. See [SECURITY.md](SECURITY.md) for reporting security issues.
## Paid kit
This server is the free, tested core of the **Research-to-Report MCP Kit** (field
guide, worked example packs, setup support). Available at the kit store — link in
[CHANGELOG.md](CHANGELOG.md) updates.
TDQS
Scored across 4 tools
Each tool occupies a distinct stage of a linear research pipeline: plan_research (planning), fetch_and_score (acquisition), build_report (assembly), and check_report (verification). There is no overlap in purpose, so an agent can select unambiguously.
All names use snake_case with a verb-led pattern (plan_research, build_report, check_report), which is predictable and readable. fetch_and_score is the one deviation, using a compound verb_and_verb form rather than verb_noun, but it remains clear.
Four tools is well-scoped for a focused research workflow, with each tool earning its place as a pipeline stage. It is slightly lean, as there is no dedicated source-discovery step, but nothing is redundant.
The surface covers the full lifecycle: plan, fetch+score, build, and verify, including a citation registry and orphan-claim checking. The main gap is source discovery/search, leaving the agent to supply URLs itself, but core workflows have no dead ends.