suthio/brave-deep-research-mcp
Project Overview
Brave Deep Research MCP
MCP server that combines Brave Search API with Puppeteer scraping to give AI assistants full-page research capability.
True Intent (AI Assessment)
Provide an MCP-compatible tool that performs Brave web searches and scrapes full page content with Puppeteer so LLMs can conduct deeper research.
README Accuracy
Notes
Code matches README. Minor discrepancies: duplicated modules (two Brave clients, two browser managers) indicate unfinished refactoring; no LICENSE file in tree despite MIT declaration in package.json; no tests despite a `test` script.
This is a Model Context Protocol (MCP) server written in TypeScript that exposes a single tool called `deep-search` to AI assistants like Claude Desktop. When invoked, it queries the Brave Search API for initial results, then launches a headless Puppeteer browser to visit each result URL, extract the main article content, and optionally follow links one or two levels deep to gather related content.
The problem it addresses is a limitation of standard search-based MCP integrations: they return only short snippets from search APIs, which is often insufficient for research tasks. By actually loading pages in a real browser and applying readability-style content extraction heuristics, this server hands the AI the full body text of relevant pages rather than just descriptions, letting the model reason over substantive source material.
The intended users are developers running local AI assistants (primarily Claude for Desktop, as documented in CLAUDE_SETUP.md) who want deeper web research than snippet-based tools provide. It is installed globally via npm or run via npx, wired into the assistant's MCP config with a Brave API key, and then invoked through natural-language prompts like 'use deep-search to research quantum computing'.
Internally, the code is organized around a stdio MCP server (`src/server.ts`, `src/index.ts`), a Brave Search HTTP client (`brave-search-client.ts`), a singleton Puppeteer browser manager (`browser-manager.ts`), and a content extractor that runs DOM heuristics inside the page to pick article/main/content elements while ignoring nav, ads, and footers. A `DeepSearchService` orchestrates search → extract → follow-links → summarize. Configuration is via environment variables (BRAVE_API_KEY, PUPPETEER_HEADLESS, PAGE_TIMEOUT, DEBUG_MODE).
Notable observations: the codebase contains two parallel implementations of similar functionality — `src/brave-search-client.ts` and `src/services/brave-search.ts`, plus `src/browser-manager.ts` vs `src/utils/browser.ts` and duplicate content extractors. This suggests a refactor in progress or dead code. Version is 0.0.1 with no tests and no license file at repo root (though package.json declares MIT). Nothing suspicious — behavior matches the stated purpose.
| Languages | TypeScript, JavaScript |
| Runtime | Node.js 16+ |
| Framework | Model Context Protocol SDK |
| Database | None |
| Package Manager | npm |
| Key Dependencies | @modelcontextprotocol/sdk, puppeteer, node-fetch, zod, dotenv |
| Build Tool | TypeScript compiler (tsc) |
| Test Framework | None detected |