Skip to main content
Glama
SECRET4422

Deep Research MCP Server

by SECRET4422
README.md
<p align="center">
  <img src="assets/logo.png" width="140" alt="Deep Research MCP Logo" />
</p>

<h1 align="center">Deep Research MCP Server</h1>
<p align="center"><b>Non-generic MCP for real research. Search → Scrape → Synthesize → Fact-check → Remember.</b></p>

<p align="center">
  <a href="https://github.com/SECRET4422/mcp-deep-research-server/actions"><img src="https://img.shields.io/github/actions/workflow/status/SECRET4422/mcp-deep-research-server/ci.yml?branch=main&label=CI&logo=github" alt="CI" /></a>
  <a href="https://www.npmjs.com/package/mcp-deep-research-server"><img src="https://img.shields.io/npm/v/mcp-deep-research-server?logo=npm&color=red" alt="npm" /></a>
  <a href="https://www.npmjs.com/package/mcp-deep-research-server"><img src="https://img.shields.io/npm/dm/mcp-deep-research-server?logo=npm" alt="downloads" /></a>
  <a href="LICENSE"><img src="https://img.shields.io/github/license/SECRET4422/mcp-deep-research-server" alt="MIT" /></a>
  <a href="https://github.com/SECRET4422/mcp-deep-research-server/stargazers"><img src="https://img.shields.io/github/stars/SECRET4422/mcp-deep-research-server?style=flat&logo=github" alt="stars" /></a>
  <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-Compatible-black?logo=anthropic" alt="MCP" /></a>
  <a href="skills/deep-research/SKILL.md"><img src="https://img.shields.io/badge/Agent%20Skill-Compatible-8a2be2" alt="Agent Skill" /></a>
  <img src="https://img.shields.io/badge/No%20API%20Key%20Needed-2ea44f" alt="No API Key" />
</p>

---

### Why not generic?

| Generic MCP (boring) | This MCP (pro) |
|---|---|
| `echo`, `fetch` | **Orchestrated deep research** |
| Returns raw HTML | **Cheerio + Turndown → clean markdown** + headings, links, meta |
| No memory | **Persistent memory** in `~/.mcp-deep-research/` |
| One page at a time | **Parallel 3-worker scraper**, 10min cache |
| No reasoning | **Fact-check with stance scoring**, contradiction detection |

### Architecture

```mermaid
graph LR
    A[User: deep_research topic] --> B[search_web DDG HTML]
    B --> C[Parallel Scrape x3-8]
    C --> D[cheerio clean + turndown md]
    D --> E[extract_insights heuristic]
    E --> F[Synthesize Report + Citations]
    F --> G[memory_save + history]
    F --> H[Return to Claude]
    
    I[compare_sources] --> C
    J[fact_check_claim] --> B
    K[memory_search] --> G
```

### Tools (8)

| Tool | What it does | Params |
|------|--------------|--------|
| `search_web` | DuckDuckGo HTML search, no API key, UDDG decode | `query, count 1-10, timeFilter` |
| `scrape_page` | Fetch + main-content heuristic + markdown | `url, format=markdown|text|full, extractMainOnly` |
| `extract_insights` | Entities, stats regex, key-point scoring, reading time | `content, goal?` |
| `deep_research` | **Power tool** — search → parallel scrape → synthesize report | `topic, depth=quick|standard|deep, maxSources, saveMemory` |
| `compare_sources` | 2-5 URLs → consensus vs unique vs contradictions | `urls[], focus?` |
| `fact_check_claim` | Searches support + `debunked OR false`, heuristic verdict | `claim, searchDepth` |
| `memory_save` | Save finding to JSON, survives restarts | `key, value, tags[], source?` |
| `memory_search` | Fuzzy search in persistent memory | `query, tags[], limit` |

**Resources:**
- `research://memory` — all saved findings
- `research://history` — last 100 actions
- `research://stats` — cache size, uptime

**Prompts:**
- `deep-dive-research` — full research workflow
- `fact-check` — fact-checker squad
- `compare-narratives` — bias & comparison table

### Quickstart & Installation

#### ⚡ 1-Click Auto Setup for Claude Desktop (Recommended)
Run this single command in your terminal:
```bash
npx mcp-deep-research-server --install
```
> That's it! It automatically detects your OS, writes the config to your `claude_desktop_config.json`, and configures the 8 research tools. Just restart Claude Desktop.

---

#### 🛠️ Manual / Other Clients Setup

**Run via npx:**
```bash
npx mcp-deep-research-server
```

**Or build from source:**
```bash
git clone https://github.com/SECRET4422/mcp-deep-research-server.git
cd mcp-deep-research-server
npm install
npm run build
```

---

#### 🤖 Agent Skill (Claude Code / Antigravity / Agent Frameworks)
This repository includes an open-standard [Agent Skill](skills/deep-research/SKILL.md) that teaches AI coding assistants when and how to autonomously run deep research workflows.
- Import via skill directory: `skills/deep-research/`
- Spec compliant with Claude Code, Cursor, and Google Antigravity agents.

### Test (smoke)

```bash
npm run test:mcp
# or
npm run inspect # opens http://localhost:6274
```

Manually tested:
```
[search] Dehradun → 3 results ✓
[deep_research] What is MCP → 3 sources in 2.1s ✓
tools/list → 8 tools ✓
```

### Add to Claude Desktop

Edit config:

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "deep-research": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-deep-research-server/build/index.js"]
    }
  }
}
```

Restart Claude Desktop.

### Add to Cursor / Windsurf / VS Code

`.cursor/mcp.json` or `mcp.json`:

```json
{
  "mcpServers": {
    "deep-research": {
      "command": "node",
      "args": ["./build/index.js"],
      "cwd": "/path/to/mcp-deep-research-server"
    }
  }
}
```

### Example Prompts

**Deep Research:**
> Use deep_research to research "Best LLM fine-tuning in 2026, depth deep" then compare LoRA vs QLoRA

**Fact Check:**
> Fact check claim: "Bun is faster than Node" using fact_check_claim

**Compare:**
> Compare these 3 URLs about MCP architecture focusing on security:
> https://modelcontextprotocol.io/docs/getting-started/intro
> https://www.anthropic.com/news/model-context-protocol
> https://en.wikipedia.org/wiki/Model_Context_Protocol

See `examples/claude-example.md` for more.

### Data Storage

All in `~/.mcp-deep-research/`:
- `memory.json` — persistent findings
- `history.json` — audit log (100 max)
- `cache/` — reserved

No DB, no external calls except search/scrape.

### Pro Features in v1.1.0

- ✅ Logo + pro README + badges
- ✅ GitHub Actions CI (Node 18/20/22) + Release workflow
- ✅ Issue templates, PR template, CONTRIBUTING, SECURITY
- ✅ `.editorconfig`, smoke test script
- ✅ Optimized `package.json` for npm publishing
- ✅ CHANGELOG tracked

### Roadmap

- [ ] Tavily / Brave API fallback if keys present
- [ ] PDF parsing via `pdf-parse`
- [ ] YouTube transcript tool
- [ ] Vector search on memory (embeddings)
- [x] SSRF protection — private/internal IP blocklist for `scrape_page`
- [ ] Smithery registry

### Dev

```bash
npm run dev     # tsx watch
npm run build
npm run lint
```

Guidelines in `CONTRIBUTING.md`.

### License

MIT © Prabhakar Pal — See LICENSE

> Built with 🧠 for Dehradun → World. Not a generic MCP.

TDQS

C2.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: compare_sources compares URLs, deep_research orchestrates multi-step research, extract_insights extracts insights, fact_check_claim verifies claims, memory_save/search handle persistent memory, scrape_page fetches web content, and search_web performs web searches. No overlap.

Naming Consistency5/5

All tool names follow a consistent snake_case convention with a clear verb_noun pattern (e.g., compare_sources, memory_save, scrape_page). The naming is predictable and easy to understand.

Tool Count5/5

8 tools are well-scoped for a deep research server. The count is sufficient to cover core capabilities (search, scrape, compare, fact-check, memory) without being overwhelming.

Completeness5/5

The tool set covers the full research lifecycle: searching, scraping, comparing sources, extracting insights, fact-checking, and saving/retrieving memory. There are no obvious gaps for the intended purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues