Harness Research MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Harness Research MCPResearch the current state of renewable energy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
English | 中文
Harness Research MCP
Give any AI Agent professional-grade deep research capabilities.
An MCP (Model Context Protocol) server that performs real-time deep research across 5 data sources, evaluates source credibility with the CRAAP framework, cross-verifies findings, and generates professional reports — all driven by affordable models like Kimi K2.5.
A full deep research report takes ~10 minutes and can be driven by Kimi K2.5 at ~$0.01/run.
For AI Agents: How to install this tool
This is a Node.js MCP server, NOT a Python package. Do NOT
git cloneorpip install.Step 1 — One-time setup (run in user's terminal):
npx harness-research-mcp setupThis launches an interactive wizard to configure API keys (stored in
~/.harness-research/.env).Step 2 — Register as MCP server in your agent's config file:
Claude Desktop / Cursor / Windsurf — edit MCP config JSON:
{ "mcpServers": { "harness-research": { "command": "npx", "args": ["-y", "harness-research-mcp"] } } }OpenCode — add to
~/.config/opencode/opencode.json:{ "mcp": { "harness-research": { "command": "npx", "args": ["-y", "harness-research-mcp"] } } }That's it. After registration, the agent gets 3 tools:
harness_research(full report),harness_search(quick search),harness_status(progress check).Do NOT clone this repo, build from source, or run
node/pythondirectly.npxhandles everything.Async workflow — no timeout issues:
harness_researchreturns atask_idimmediately (< 1 second). The research runs in the background (~10 minutes). You must pollharness_status(task_id)every 30–60 seconds until status is"completed"or"failed". This design means the default 60-second MCP timeout will NOT be a problem.If your MCP client has a configurable timeout, setting it to 1200 seconds (20 minutes) is still recommended as a safety margin:
{ "mcpServers": { "harness-research": { "command": "npx", "args": ["-y", "harness-research-mcp"], "timeout": 1200 } } }
Why This Tool Exists
The Problem with Current "Deep Research" Tools
Existing deep research tools (Perplexity Deep Research, ChatGPT Research, Gemini Deep Research, etc.) share fundamental flaws:
Problem | Explanation |
Rely on stale knowledge | They primarily draw from the LLM's training data, not real-time internet search. You may get data that's months or years out of date. |
Opaque sourcing | Most tools don't show where information came from. Some cited URLs are hallucinated. |
No source evaluation | A social media post and a government statistical report are treated equally. No mechanism to assess credibility. |
Single search source | One search engine, narrow coverage. Academic papers, financial data, and government reports are unreachable. |
Not integrable | Locked into specific platforms. Can't plug into your own AI Agent workflow. |
Expensive | Require GPT-4, Claude, etc. Each research session costs $1-5+. |
How Harness Research Is Different
Feature | Harness Research | Perplexity / ChatGPT / Gemini |
Data sources | 5 real-time search APIs (Tavily + Brave + arXiv + PubMed + Tushare) | Single search engine or model's internal knowledge |
Data freshness | 100% real-time search — zero reliance on LLM training data | Mixed stale knowledge + limited search |
Source evaluation | CRAAP framework with 5-dimension scoring + T0-T5 tier classification (530+ domain database) | None |
Cross-verification | Automatic conflict detection + counterintuitive finding identification | None |
Citations | Every reference tagged with source tier, credibility score, publication date | Simple URL list or no citations |
LLM requirement | Kimi K2.5 works great (~$0.01/run) | GPT-4 / Claude ($1-5/run) |
Output formats | HTML + DOCX + PDF + Markdown | Plain text |
Integrability | Standard MCP protocol — works with any Agent | Locked to specific platform |
Open source | Apache 2.0 | Proprietary |
Core principle: The LLM only "thinks" — it never "knows." All factual data comes from real-time search.
Related MCP server: GPT Researcher MCP Server
The 6-Step Research Pipeline
User: "Research the global AI chip market landscape in 2025"
│
▼
Step 1 ── Research Plan (LLM)
│ Generate chapter structure + search keywords
▼
Step 2 ── 5-Source Parallel Search (Code)
│ Tavily + Brave + arXiv + PubMed + Tushare
│ Dedup → cap at 50 results
▼
Step 3 ── CRAAP Source Evaluation (Code + LLM)
│ Code pre-filter: T5 eliminated, >3yr eliminated
│ LLM batch scoring: Relevance + Accuracy + Purpose
│ Weighted average → filter low-scoring sources
▼
Step 4 ── Cross-Verification (LLM)
│ Data triangulation + conflict detection + counterintuitive findings
▼
Step 5 ── Parallel Writing (LLM)
│ All chapters in parallel + executive summary
▼
Step 6 ── Render Output (Code)
│ HTML + DOCX + PDF (macOS) + Markdown
▼
Professional research report (~10 minutes)Quick Start
1. Setup (one-time)
npx harness-research-mcp setupThe interactive wizard will guide you through:
Configuring search API keys (Tavily or Brave, at least one)
Configuring an LLM API key (Kimi K2.5 recommended — cheapest option)
Optional: Tushare (Chinese financial data), NCBI (PubMed academic search)
Automatic API connectivity test
2. Register with Your AI Agent
Copy the appropriate config for your Agent framework:
Claude Desktop / Cursor / Windsurf:
{
"mcpServers": {
"harness-research": {
"command": "npx",
"args": ["-y", "harness-research-mcp"]
}
}
}OpenClaw:
openclaw mcp set harness-research '{"command":"npx","args":["-y","harness-research-mcp"]}'OpenCode:
// ~/.config/opencode/opencode.json
{
"mcp": {
"harness-research": {
"command": "npx",
"args": ["-y", "harness-research-mcp"]
}
}
}3. Use It
Just tell your Agent:
"Do a deep research on the global AI chip market landscape in 2025"
The Agent will automatically call harness_research and return the full report in ~10 minutes.
Three MCP Tools
Tool | Description | Duration |
| Full deep research with professional report output | ~10 min |
| Quick multi-source search, returns structured results | Seconds |
| Check research task progress | Instant |
API Keys Explained
Why Do You Need These Keys?
Harness Research does not rely on any LLM's historical knowledge. All information is fetched in real-time from the internet. This requires calling various search and data APIs.
Key | Purpose | Required? | Get it | Cost |
TAVILY_API_KEY | Advanced web search (deep scraping support) | Required (pick one) | Free 1000 calls/mo | |
BRAVE_API_KEY | Privacy-focused web search | Required (pick one) | Free 2000 calls/mo | |
KIMI_API_KEY | LLM reasoning (planning, evaluation, writing) | Required (pick one) | Very low cost | |
OPENROUTER_API_KEY | LLM reasoning (alternative to Kimi) | Required (pick one) | Per-model pricing | |
TUSHARE_TOKEN | Chinese A-share financial data | Optional | Free basic tier | |
NCBI_API_KEY | PubMed academic paper search | Optional | Free |
Minimum: 1 search key + 1 LLM key = 2 keys to get started.
Why Kimi K2.5?
Cost: ~$0.01 per full research session (vs. GPT-4 at $1-5)
Chinese support: Native Chinese language, no translation layer needed
Context: 128K token window — handles large volumes of search results
Reliability: 99.9%+ API availability
Output Formats
Format | macOS | Windows / Linux | Notes |
HTML | ✅ | ✅ | Professional layout, dark theme support |
DOCX | ✅ | ✅ | Word document, ready to edit and share |
✅ | ❌ | Puppeteer-based, macOS only | |
Markdown | ✅ | ✅ | Plain text, easy to post-process |
CRAAP Evaluation Framework
Every source is scored across 5 dimensions:
Dimension | Weight | What It Measures |
Currency | 15% | How recent is the publication? |
Authority | 25% | Source tier: Government > Academic > Media > Blog |
Relevance | 25% | How well does it match the research topic? |
Accuracy | 20% | Is the data verifiable? Does it cite sources? |
Purpose | 15% | Is the writing objective or biased? |
6-Tier Source Classification
Tier | Weight | Source Type | Examples |
T0 | 1.2x | Raw government data APIs | World Bank API, Fed FRED, SEC EDGAR |
T1 | 1.0x | Authoritative institutions | WHO, Nature, Science, government reports |
T2 | 0.8x | Professional organizations | McKinsey, Gartner, Financial Times |
T3 | 0.6x | Mainstream media | Reuters, Bloomberg, TechCrunch |
T4 | 0.3x | General websites | Unclassified domains (default) |
T5 | 0.15x | Social media | Twitter, Reddit (auto-eliminated) |
Built-in 530+ domain credibility database covering major governments, academia, media, and professional institutions worldwide.
Diagnostics
npx harness-research-mcp doctorArchitecture
┌──────────────────────────────────────────┐
│ Claude / Cursor / OpenClaw / OpenCode │
│ (MCP Client) │
└────────────────┬─────────────────────────┘
│ stdio (MCP Protocol)
▼
┌──────────────────────────────────────────┐
│ harness-research-mcp (Node.js) │
│ │
│ Tools: │
│ harness_research — full deep research │
│ harness_search — quick multi-search │
│ harness_status — progress query │
│ │
│ 6-Step Pipeline: │
│ Plan → Search → CRAAP → Verify → │
│ Write → Render │
│ │
│ Pure Node.js. Zero Python dependency. │
└──────────────────────────────────────────┘Development
git clone https://github.com/Nimo1987/harness-research.git
cd harness-research
npm install
npm run buildLicense
Apache 2.0
Available Tools
3 toolsharness_researchA
Start a deep research session: multi-source search (Tavily/Brave/arXiv/PubMed/Tushare) + CRAAP source evaluation + cross-verification → professional HTML/DOCX/PDF report.
IMPORTANT: This tool returns IMMEDIATELY with a task_id. The research runs in the background and takes ~8-12 minutes. After calling this tool, you MUST poll harness_status with the returned task_id every 30-60 seconds until status is "completed" or "failed". Do NOT wait idle — poll actively.
Workflow:
Call harness_research → get task_id (returns in <1 second)
Call harness_status with task_id every 30-60s to check progress
When status is "completed", harness_status returns the output file paths
Driven by affordable models like Kimi K2.5 (~$0.01/run).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Research topic, e.g. 'Global AI chip market landscape 2025' | |
| provider | No | LLM provider: kimi (default, cheapest) or openrouter | |
| model | No | Model name. kimi default: kimi-k2.5, openrouter default: anthropic/claude-sonnet-4 | |
| output_dir | No | Output directory for reports. Defaults to current working directory. | |
| formats | No | Output formats. Default: ['html', 'docx']. PDF only available on macOS. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses that the tool returns immediately (non-blocking), runs in background, and uses affordable models ($0.01/run). It also mentions PDF availability limitation (macOS only). All behavioral traits are transparently communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear heading, an IMPORTANT note, and a numbered workflow. Each sentence is purposeful, no redundant text, efficiently conveying essential information in a few paragraphs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (async, 5 parameters, multiple outputs), the description covers all key aspects: async behavior, polling, output format limitations, and cost. No output schema exists, but the description explains that harness_status returns file paths, completing the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-described structurally. The description adds value by explaining defaults (e.g., provider='kimi', model='kimi-k2.5', formats=['html','docx']) and the purpose of the tool, though the schema itself already covers basic parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it 'start[s] a deep research session' with multi-source search and report generation. It lists sources (Tavily/Brave/arXiv/PubMed/Tushare) and output formats (HTML/DOCX/PDF), clearly distinguishing it from siblings like harness_search (likely simple search) and harness_status (status polling).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit step-by-step workflow: call this tool, get task_id, poll harness_status every 30-60s until completion. It warns against idle waiting and notes the ~8-12 minute runtime, giving clear when-to-use and how-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
harness_searchA
Quick multi-source search without generating a full report. Returns structured results from Tavily, Brave, arXiv, and PubMed. Completes in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| sources | No | Which sources to search. Default: all available. | |
| limit | No | Max results per source. Default: 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present. The description discloses that results are structured and that the tool completes in seconds. It does not detail auth requirements, rate limits, or error behavior, but for a straightforward search tool, this level of transparency is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the key purpose, and contains no superfluous information. Every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameters and lack of output schema, the description adequately covers the tool's behavior. It could be improved by briefly mentioning the output format, but the current description provides necessary context for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter descriptions are present. The description adds value by explaining the default behavior for sources ('all available') and limit (5), and by contextualizing the search as quick and multi-source. This goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a quick multi-source search and lists the specific sources (Tavily, Brave, arXiv, PubMed). It explicitly contrasts with generating a full report, distinguishing it from the sibling tool 'harness_research'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without generating a full report' implies this tool is for quick searches when a full report is not needed. While it does not explicitly state when not to use it, the sibling names suggest 'harness_research' is for comprehensive reports, providing adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
harness_statusA
Check the progress of a research task started by harness_research.
After calling harness_research, you MUST poll this tool with the returned task_id every 30-60 seconds.
status "running": research is in progress, keep polling
status "completed": research is done, output file paths are included
status "failed": an error occurred, error message is included
If no task_id is provided, lists all tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | No | Task ID to check. If omitted, lists all tasks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: polling mechanism, status meanings, and inclusion of output file paths or error messages. It also covers the fallback of listing all tasks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence for purpose, bullet points for statuses, and a closing note on missing task_id. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter polling tool with no output schema, the description covers all essential aspects: when to use, how to poll, status interpretations, and listing fallback. No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes task_id as optional and its omission lists all tasks. Description adds minimal extra context (the polling behavior and status outcomes), but since schema coverage is 100%, baseline is 3; slight improvement justifies 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks progress of a research task started by harness_research, distinguishing it from the sibling tools harness_research (starts tasks) and harness_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (after harness_research), polling frequency (every 30-60 seconds), and what to do based on status (keep polling, retrieve outputs, or handle error). Also mentions listing all tasks if no task_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v2.0.0- First observed
harness_research - First observed
harness_search - First observed
harness_status
TDQS
Each tool has a distinct purpose: harness_research initiates a deep research session, harness_search provides quick results, and harness_status checks progress. No overlap in functionality.
All tool names follow the consistent pattern 'harness_<verb>' using underscores, with predictable conventions.
Three tools cover the essential workflow of starting research, quick searching, and status polling. The count is well-scoped for the server's purpose.
The tool set covers the core research workflow (start, search, check progress) but lacks a cancel or delete operation for tasks, which is a minor gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Web research for agents: quality-scored Google search, webpage extraction, and deep research.
Agent-native search engine with live web research optimized for AI agents.
Real-time fact-check, citation verification, and source-freshness for AI agents.
Web search, fetch, extract, and research for AI agents. Markdown output + AI-synthesized answers.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables iterative deep research by integrating AI agents with search engines, web scraping, and large language models for efficient data gathering and comprehensive reporting.8323MIT
- AlicenseNot gradedqualityCmaintenanceEnhances LLM applications with deep autonomous web research capabilities, delivering higher quality information than standard search tools by exploring and validating numerous trusted sources.368MIT
- AlicenseBqualityDmaintenanceAn automated research agent that leverages Google Gemini models and Google Search to perform deep, multi-step web research, generating sophisticated queries and producing citation-rich answers.128MIT
- FlicenseNot gradedqualityDmaintenanceAn AI-powered deep research agent that automates the full research pipeline from web search to structured executive reports using a 4-tool pipeline (search, fetch, cluster, report).4-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nimo1987/harness-research'
If you have feedback or need assistance with the MCP directory API, please join our Discord server