Gemini Research MCP Server
This server provides AI-powered web and deep research tools via MCP, with session management, exports, and file/web fetching utilities.
Fast web research (
research_web): quick grounded answers with citations, fact-checks, and current-event lookups.Deep autonomous research (
research_deep,research_deep_max): multi-step, long-running investigations with optional file search, remote MCP servers, format instructions, collaborative planning, and visualization.Resume interrupted sessions (
resume_research): recover or check status of long-running or disconnected deep-research tasks.Export reports (
export_research_session): save completed research as Markdown, JSON, or professional DOCX with table of contents, disk-first with absolute paths and downloadable resource artifacts.Discover and call hidden tools (
search_tools,call_tool): find and invoke utility tools by name.Hidden utilities (via
call_tool/search_tools): fetch and extract webpage content (fetch_webpage), continue conversations (research_followup), list saved sessions (list_research_sessions), browse format templates (list_format_templates), refine research plans (refine_research_plan), and inspect remote MCP servers (inspect_mcp_server_for_gemini).Resource access: retrieve models metadata, list/download exported files through
research://MCP resources.
Provides AI-powered research through Google Gemini's API, including fast grounded web search, autonomous deep research, session persistence and resume, and report exports.
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., "@Gemini Research MCP Serverresearch the latest AI safety papers"
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.
Gemini Research MCP Server
MCP server for AI-powered research using Gemini. Fast grounded search, URL extraction, comprehensive Deep Research, and session management.
Built on FastMCP 4.0.0b5 (beta, exact-pinned) with the modern sessionless
MCP protocol, Gemini 3.7 Flash, MCP Tasks (SEP-1732), the guard-pattern
elicitation flow, a BM25-compacted tool catalog, and pluggable Disk/Redis
storage with a zero-configuration local default.
Architecture

flowchart TB
subgraph Client["MCP Client"]
Claude["Claude / Copilot"]
end
subgraph Server["gemini-research-mcp"]
direction TB
FastMCP["FastMCP 4 Server<br/>@mcp.tool()<br/>BM25SearchTransform"]
subgraph Tools["Tools"]
RW["research_web<br/>Quick lookup 5-30s"]
RD["research_deep<br/>Autonomous 3-20min"]
RF["research_followup<br/>Continue session"]
RR["resume_research<br/>Recover interrupted"]
FW["fetch_webpage<br/>Content extraction"]
EX["export_research_session<br/>MD/JSON/DOCX"]
LS["list_research_sessions"]
LT["list_format_templates"]
end
subgraph Modules["Core Modules"]
Quick["quick.py<br/>Web grounding"]
Deep["deep.py<br/>Deep research agent"]
Content["content.py<br/>SSRF protection"]
StorageMod["storage.py<br/>Session + artifact store"]
Templates["templates.py<br/>Format templates"]
end
end
subgraph External["External Services"]
Gemini["Google Gemini API"]
Web["Web Sources<br/>via trafilatura"]
end
subgraph Storage["Persistence"]
Disk["DiskStore<br/>XDG data directory"]
Redis["Redis/Valkey<br/>shared multi-worker storage"]
end
Claude -->|"MCP Protocol"| FastMCP
FastMCP --> Tools
RW --> Quick
RD --> Deep
RF --> StorageMod
RR --> StorageMod
FW --> Content
LT --> Templates
Quick -->|"grounding"| Gemini
Deep -->|"agentic"| Gemini
Content -->|"httpx"| Web
StorageMod --> Disk
StorageMod -.-> RedisRelated MCP server: gemini-deep-research-mcp
Tools
The server exposes a BM25-compacted catalog: only the 5 tools below plus
the synthetic search_tools/call_tool pair are listed by default
(fastmcp.server.transforms.search.BM25SearchTransform). Utility tools
(fetch_webpage, research_followup, list_research_sessions,
list_format_templates, refine_research_plan,
inspect_mcp_server_for_gemini) are hidden from the default
listing to keep the catalog small for LLM tool-selection, but remain fully
callable directly by name or via the call_tool proxy, and are discoverable
by relevance through search_tools.
Tool | Description | Latency | Visible by default |
| Fast web search with citations | 5-30 sec | ✅ |
| Multi-step autonomous research (MCP Tasks) | 3-20 min | ✅ |
| Maximum-comprehensiveness Deep Research for exhaustive/high-stakes work | longer-running | ✅ |
| Resume interrupted/in-progress sessions | instant | ✅ |
| Disk-first export to persistent Markdown, JSON, or DOCX artifacts | instant | ✅ |
| Discover hidden utility tools by relevance (BM25) | instant | ✅ |
| Proxy to invoke any hidden tool by name | varies | ✅ |
| Continue conversation after research | 5-30 sec | discoverable |
| List saved research sessions | instant | discoverable |
| Browse report format templates | instant | discoverable |
| Iterate on or approve a | instant-3min | discoverable |
| Extract article content from a specific URL (SSRF-protected, chunkable) | 0.5-2 sec | discoverable |
| Inspect remote MCP reachability and schemas (diagnostic only) | varies | discoverable |
research_deep / research_deep_max Deep Research parameters
Parameter | Type | Default | Description |
|
|
| Let the agent produce and persist supporting images/charts. Images are persisted as MCP resource artifacts ( |
| boolean |
| Return the drafted research plan and an interaction ID instead of running the full report. Approve or iterate on the plan with `refine_research_plan(previous_interaction_id=..., decision="approve" |
| array | null |
| Disabled. Any non-empty value fails before network or Gemini API access because provider-side Deep Research remote MCP is not reliable. |
fetch_webpage Parameters
fetch_webpage is discoverable through search_tools in the default server listing.
The fetch_webpage tool supports chunked reading for large pages and optional proxy routing:
Parameter | Type | Default | Description |
| string | required | HTTP/HTTPS URL to fetch |
| integer | null |
| Maximum characters to return (chunk size) |
| integer |
| Character offset for pagination |
| string | null |
| Optional HTTP(S) proxy URL for the request |
Notes:
SSRF protection is always applied (private/internal hosts are blocked).
robots.txtis checked before fetch whenprotegois installed.When output is truncated, the response includes a continuation hint with next
start_index.If
proxy_urlis omitted, the server falls back toFETCH_PROXY_URLwhen set.proxy_urlmust be a public HTTP(S) host (private/internal proxy hosts are blocked).
Install the web extra for the highest-quality fetch_webpage experience:
pip install 'gemini-research-mcp[web]'
# or
uv add 'gemini-research-mcp[web]'Without [web], fetch_webpage still works using the built-in HTML fallback, but trafilatura
extraction and protego-based robots.txt checks are unavailable.
Power User Workflow
Key insight: Gemini Deep Research runs asynchronously on Google's servers. Even if VS Code disconnects, your research continues. The
resume_researchtool retrieves completed work.
Features
Auto-Clarification:
research_deepasks clarifying questions for vague queries. On the modern sessionless MCP protocol this uses a stateless guard pattern (InputRequiredResult, two independent tool calls, no server-held connection); legacy handshake clients still use MCP Elicitation (ctx.elicit())Deep Research Max:
research_deep_maxexposes Google's Max agent for exhaustive, high-stakes, and offline research workflowsCollaborative Planning:
research_deep(..., collaborative_planning=True)returns the drafted plan for approval before running the full report; refine or approve it withrefine_research_planVisualization:
visualization="auto"lets Deep Research produce supporting images, persisted as downloadable MCP resource artifactsMCP Tasks: Real-time progress with streaming updates
Session Persistence: Research sessions are automatically saved and can be resumed later; shareable across instances with Redis (see Storage backends)
Persistent, Disk-First Exports: Export to Markdown, JSON, or professional DOCX with Table of Contents; artifacts survive restarts and can be shared through Redis while files are still written to disk by default
File Search: Search your own data alongside web using
file_search_store_namesFail-closed remote MCP: Deep Research rejects
mcp_serversbefore network/provider access until Google exposes a reliable structured result contractFormat Instructions: Control report structure (sections, tables, tone)
LangChain-ready: verified consumable via
langchain.mcp.MCPAdapter(LangChain1.4.0a2) over both stdio and streamable-http - seescripts/langchain_interop_smoke.py. LangChain is never a dependency of this package.
Installation
PyPI (recommended)
pip install gemini-research-mcp
# or
uv add gemini-research-mcpClaude Desktop (MCPB Bundle)
Download the .mcpb bundle from GitHub Releases and open it in Claude Desktop for single-click installation.
The bundle uses UV runtime - dependencies are installed automatically, no Python required.
Configuration
Variable | Required | Default | Description |
| Yes | — | |
| No |
| Model for |
| No |
| Model for session summaries, titles, and clarification (thinking level |
| No |
| Default agent for |
| No | — | Default HTTP(S) proxy for |
| No | — |
|
| No | — | Advanced Tasks backend override. Takes priority over |
| No | XDG data dir | Custom directory for the local |
| No | backend default | Override session/export TTL |
| No |
| Disk-first destination when |
| No |
|
|
| No |
| Bind host for |
| No |
| Bind port for |
| No |
| URL path for |
| No | — | Static bearer token required to call |
cp .env.example .env
# Edit .env with your API keyTransports
The server defaults to stdio, matching every existing VS Code/Claude Desktop configuration - no changes required for local, single-client use.
Streamable HTTP is opt-in, for remote or multi-client/multi-worker deployments, and is sessionless (no sticky session required across calls):
# Local-only (no auth required, loopback binding):
uv run gemini-research-mcp --transport streamable-http
# Remote-accessible (bearer token required - refuses to start otherwise):
GEMINI_RESEARCH_HTTP_BEARER_TOKEN=$(openssl rand -hex 32) \
uv run gemini-research-mcp --transport streamable-http --host 0.0.0.0 --port 8000Binding to any non-loopback host (0.0.0.0, ::, a LAN/public IP, etc.)
without GEMINI_RESEARCH_HTTP_BEARER_TOKEN set causes the server to refuse to
start - this prevents accidentally exposing your Gemini API quota to the
public internet. 127.0.0.1/localhost/::1 never require a token.
--transport, --host, --port, and --path CLI flags mirror the
GEMINI_RESEARCH_TRANSPORT/GEMINI_RESEARCH_HTTP_HOST/GEMINI_RESEARCH_HTTP_PORT/GEMINI_RESEARCH_HTTP_PATH
environment variables (CLI flags take precedence).
Storage backends
Research sessions and export artifacts are stored through a single backend-agnostic layer:
Local (default, no Redis required): sessions and exports use
DiskStoreunder the XDG data directory, while FastMCP Tasks use in-process memory (GEMINI_RESEARCH_STORAGE_PATHto override) - zero configuration, single process/single machine.Distributed (Redis/Valkey): set
GEMINI_RESEARCH_STORAGE_URL=redis://host:6379/0to share sessions, exports, and Tasks across multiple server instances or workers. SetFASTMCP_DOCKET_URLonly when Tasks must use a different backend. Requires thedistributedextra:
uv add 'gemini-research-mcp[distributed]'Deep Research vs Deep Research Max
Google exposes Deep Research variants through the Gemini Interactions API agent
field, not the regular Gemini model field:
research_deepusesdeep-research-preview-04-2026by default. Use it for interactive research, comparisons, investigations, and latency/cost-sensitive synthesis.research_deep_maxusesdeep-research-max-preview-04-2026. Use it when the user explicitly asks for Max, exhaustive/comprehensive due diligence, market maps, literature reviews, board-ready reports, offline/nightly research, or maximum completeness over speed.
For Copilot and other LLM clients, the two tools are intentionally separate so
Max can be selected from the tool name and description. There is no public
model parameter for Deep Research, because follow-up and quick research use
Gemini models while Deep Research uses Interactions agents.
Remote MCP servers for Deep Research
Disabled in v0.16.0b2. Any non-empty mcp_servers value is rejected for
both research_deep and research_deep_max before remote inspection, network
access, or Gemini API consumption.
The request shape is valid and Google documents MCP as a Deep Research tool,
but repeated paid E2E runs completed without any
mcp_server_tool_call/mcp_server_tool_result steps. One run also invented
substitute evidence after failing to obtain the fixture data. See
googleapis/python-genai#2126.
inspect_mcp_server_for_gemini remains available to inspect endpoint
reachability, tool names, and schema compatibility. It does not enable the
disabled Deep Research integration.
Remote MCP will only be reconsidered after an upstream correction and repeated E2E runs that retain non-empty structured tool-call and tool-result steps.
Usage
VS Code MCP
Add to .vscode/mcp.json:
{
"servers": {
"gemini-research": {
"command": "uvx",
"args": ["gemini-research-mcp"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}Or run from source:
{
"servers": {
"gemini-research": {
"command": "uv",
"args": ["run", "--directory", "path/to/gemini-research-mcp", "gemini-research-mcp"],
"envFile": "${workspaceFolder}/path/to/gemini-research-mcp/.env"
}
}
}Command Line
uv run gemini-research-mcp
# or
uvx gemini-research-mcpDOCX Export
Export research sessions to professional Word documents with:
Cover page with title, date, and research metadata
Clickable Table of Contents with navigation to sections
Professional typography: Calibri fonts, 1-inch margins, 1.5x line spacing
Executive summary with elegant formatting
Full research report with proper heading hierarchy
Sources section with full clickable URLs
Metadata table with session details
VS Code Setup
To enable DOCX export, install with the [docx] extra:
{
"servers": {
"gemini-research": {
"command": "uvx",
"args": ["--from", "gemini-research-mcp[docx]", "gemini-research-mcp"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}Downloading Files
export_research_session is disk-first: the file is always written
to disk and the absolute path is returned on the first line of the
response text (e.g. ✅ **Saved to:** /…/report.docx). This means any
MCP client — GUI or headless — gets a usable file path back.
By default exports are written to GEMINI_RESEARCH_EXPORT_DIR
(defaults to ~/.gemini-research/exports/; falls back to the system
temp dir if that location isn't writable). Override per-call with the
output_path argument:
{
"name": "export_research_session",
"arguments": {
"interaction_id": "v1_...",
"format": "docx",
"output_path": "/absolute/or/relative/path/report.docx"
}
}When output_path is supplied, the parent directory must already
exist (no silent mkdir). GUI hosts (e.g. VS Code Copilot Chat) also
receive an EmbeddedResource attachment backed by the persistent
research://exports/{id} resource store for native "Save As" — clients that can't render it can safely ignore it.
Client compatibility
research_deep requires MCP Tasks support
(SEP-1732) on the client. Clients that do not advertise the tasks
capability will receive a -32600 error.
Known client status:
VS Code Copilot Chat / MCP Inspector / Claude Desktop — supported.
GitHub Copilot CLI — tracked upstream at github/copilot-cli#2538; until that lands, use
research_webfrom the CLI.
Installation (pip/uv)
# Install with DOCX support
pip install 'gemini-research-mcp[docx]'
# or
uv add 'gemini-research-mcp[docx]'Features
Feature | Description |
Cover Page | Title, date, duration, tokens, AI agent |
Clickable TOC | Internal hyperlinks navigate to sections |
Syntax Highlighting | Pygments-powered code blocks with GitHub colors |
Professional Styling | Calibri fonts, proper heading hierarchy (H1-H4) |
Page Margins | Standard 1-inch (2.54cm) margins |
Heading Spacing |
|
Sources | Full URLs as clickable hyperlinks |
Pure Python | No external binaries (Pandoc not required) |
Resources
MCP Resources provide read-only data that clients can access:
Resource | Description |
| Available models and their capabilities |
| List cached exports ready for download |
| Download an exported file (Markdown, JSON, or DOCX) |
File Downloads
The export_research_session tool creates exports and returns a resource URI. Clients (like VS Code) can then fetch the resource to download the file with proper MIME type handling.
Development
uv sync --extra dev
uv run pytest
uv run mypy src/
uv run ruff check src/Tests
uv run pytest # Unit tests
uv run pytest -m e2e # E2E tests (requires GEMINI_API_KEY)
uv run pytest --cov=src/gemini_research_mcp # With coveragePricing
Tool | Typical Cost |
| ~$0.01-0.05 per query |
| ~$2-5 per task |
Deep Research uses ~80-160 searches and ~250k-900k tokens per task.
License
MIT
Available Tools
6 toolscall_toolB
Call a tool by name with the given arguments.
Use this to execute tools discovered via search_tools.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the tool to call | |
| arguments | No | Arguments to pass to the tool |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the basic action without mentioning error handling, side effects, or permissions. For a tool that dynamically executes other tools, significant behavioral context is missing, such as what happens if the tool fails or is unavailable.
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 very concise at two sentences, with the key action front-loaded. It wastes no words, but could be slightly more structured for clarity. Overall, it efficiently conveys the essential information.
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 complexity (dynamic tool execution) and the absence of an output schema, the description is minimal. It covers the basic purpose and usage context but lacks details about return values, errors, or expected behavior. For a generic call tool, it barely meets the minimum viable level.
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?
The input schema has 100% description coverage, so the schema already explains the parameters. The description adds no extra meaning beyond restating 'with the given arguments.' Baseline 3 is appropriate as the description does not detract but adds no value.
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's purpose: 'Call a tool by name with the given arguments.' It identifies the core action (calling a tool) and the resource (the named tool). While not overly specific, it distinguishes from sibling tools like research_web or search_tools, which are different operations.
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 context: 'Use this to execute tools discovered via search_tools.' This tells the agent when to use it (after discovery) and implies a sequence. It does not explicitly state when not to use it, but the usage is straightforward enough that alternatives are not needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_research_sessionARead-onlyIdempotent
Save (export, download, archive) a completed research session to a file
on disk — Word (.docx), Markdown (.md), or JSON. Use this to recover
your report after a research_deep run completes or is interrupted,
and to convert reports into a shareable Word document.
Disk-first contract. The file is always written to disk, and the
absolute path is returned on the first line of the response as
Saved to: <path>. When output_path is omitted the file lands in
GEMINI_RESEARCH_EXPORT_DIR (default ~/.gemini-research/exports/).
An EmbeddedResource is still attached so GUI hosts can expose their
native "Save As" affordance.
Similar to Google's Deep Research export feature, the DOCX output is a professional Word document suitable for sharing, archiving, or further editing.
Supported formats:
docx: Word document with headings, lists, and table of contents
markdown: Clean
.mdfile with full report and citationsjson: Machine-readable, all metadata preserved
Typical recovery flow:
research_deep(...)completes (or is resumed viaresume_research).export_research_session(format="docx")— no other arguments needed; the path on disk is returned in the response text.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional: search for a session by query text instead of interaction_id | |
| format | No | Export format: 'markdown' (.md), 'json' (.json), or 'docx' (Word document) | markdown |
| output_path | No | Filesystem path to save the exported file to. Absolute or relative to the MCP server's working directory. If omitted, the file is automatically written to GEMINI_RESEARCH_EXPORT_DIR (default ~/.gemini-research/exports/) and the resolved path is returned in the response. Parent directory must already exist when an explicit path is supplied. | |
| interaction_id | No | Interaction ID of the session to export. If not provided, exports the most recent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly explains the disk-writing behavior and path handling, but it contradicts the readOnlyHint annotation (true), which implies no side effects. According to rules, a contradiction scores 1. The description is transparent but incompatible with the annotation.
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 clear sections (purpose, disk-first contract, supported formats, typical flow). Each sentence adds unique 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?
Given no output schema, the description explains the return format (path on first line, EmbeddedResource). It covers all parameters and typical use cases, making the tool's behavior fully understandable.
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 description coverage is 100%, so baseline is 3. The description adds value by explaining default behavior for format, path resolution, and interaction_id selection (e.g., 'exports the most recent' if omitted). This justifies a slight above-baseline score.
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 action ('Save (export, download, archive)'), the resource ('completed research session'), and the output formats (docx, md, json). It also ties the tool to the research_deep workflow, distinguishing it from siblings like research_web and resume_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 description explicitly states when to use this tool: 'after a research_deep run completes or is interrupted' and provides a typical recovery flow. It does not explicitly mention when not to use it, but the context is clear and no alternative export tool exists among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_deepBRead-only
Run the default Deep Research agent with optional File Search and MCP tools.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Research question or topic to investigate thoroughly | |
| mcp_servers | No | Optional remote MCP server configs for Deep Research. Each item may include name, url, headers, and allowed_tools. | |
| format_instructions | No | Optional report format (e.g., 'executive briefing', 'comparison table') | |
| file_search_store_names | No | Optional: Gemini File Search store names to search your own data alongside web |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare 'readOnlyHint: true' and 'openWorldHint: true', so the agent knows the tool is safe and accesses external data. The description adds that optional 'File Search and MCP tools' can be used, but does not disclose other behavioral traits (e.g., response format, length limits, result structure).
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 extremely concise—one sentence with no fluff. However, it lacks structure (e.g., bullet points or sections) that could improve readability for an agent scanning quickly.
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 complex tool with 4 parameters, an output schema, and sibling tools, the description is too minimal. It does not explain what the Deep Research agent does, how it operates, or what the output contains, leaving many agent questions unanswered.
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 description coverage is 100%, so param meaning is already clear from the schema. The description adds modest context by linking 'File Search' and 'MCP tools' to the respective parameters, but does not significantly enhance understanding beyond the schema.
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 verb 'Run' and the resource 'default Deep Research agent', and mentions optional capabilities (File Search and MCP tools). However, it does not explicitly differentiate this tool from sibling tools like 'research_web', which likely targets a narrower scope.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., 'research_web' or 'resume_research'). There are no instructions on prerequisites or implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_webARead-only
Fast web research with Gemini grounding. Returns answer with citations in seconds.
Uses a fixed high thinking level for higher-quality grounded answers.
Use for: quick lookups, fact-checking, current events, documentation, "what is", "how to", real-time information, news, API references, error messages.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query or question to research on the web | |
| include_thoughts | No | Include thinking summary in response |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses a fixed high thinking level for quality, fast response time, and returns citations. Beyond annotations (readOnly, openWorld), it adds behavioral context about the reasoning cost and output format. No contradiction with annotations.
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 very concise: three sentences plus a bullet list of use cases. Every sentence adds value, no fluff. Well-structured for easy scanning.
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 presence of an output schema (so return values are documented), the description covers purpose, usage guidelines, and behavioral traits adequately. Could improve by noting the difference from 'research_deep', but overall sufficient.
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 the description does not need to explain parameters much. Description adds no extra semantic detail beyond the schema descriptions for 'query' and 'include_thoughts'. Baseline score of 3 is appropriate.
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 it performs fast web research with Gemini grounding and returns citations. It specifies the verb and resource (research web). However, it does not explicitly distinguish itself from the sibling tool 'research_deep', which might be for deeper 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?
Detailed list of use cases provided (quick lookups, fact-checking, current events, etc.), giving clear context for when to use. Lacks explicit guidance on when not to use or comparisons to alternatives like 'research_deep'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_researchARead-only
Resume an interrupted or in-progress research_deep session.
Use when a research_deep call was cut short (client disconnect,
transport error, cancellation) or when you want to check whether a
long-running session has since completed on Gemini's servers.
Because research_deep persists its session at the start, the
research continues on Gemini's side even when the MCP client goes
away — this tool retrieves the result once it's ready.
Call with no arguments to list recoverable sessions. Call with an
interaction_id (returned by the original research_deep call or by
list_research_sessions) to check a specific session's status; if it
has completed, the full report is returned. Hand the result off to
export_research_session(format="docx") to save the report to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| interaction_id | No | Optional: specific interaction_id to resume. If not provided, shows resumable sessions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint. Description adds context: research continues on Gemini's side even if client disconnects, and result is returned once ready. No contradictions with annotations.
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?
Description is well-structured with clear paragraphs. Each sentence adds value. Slightly verbose but efficiently conveys all necessary information 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?
Given the presence of an output schema, the description covers behavioral aspects, error scenarios (disconnect, cancellation), and usage flow (hand off to export). No gaps for this tool's complexity.
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 parameter well (100% coverage). Description adds value by explaining the two modes of operation: no argument lists sessions, with interaction_id checks status. Goes beyond schema's description.
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 resumes an interrupted 'research_deep' session. It uses specific verb 'resume' and resource 'research_deep session', and distinguishes from siblings like 'research_web' and 'research_deep' by targeting interrupted sessions only.
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 describes when to use: when a 'research_deep' call was cut short or to check session completion. Provides behavior for no arguments (list sessions) and with interaction_id (check status). Mentions alternative export tool. Missing explicit when-not-use, but context and sibling names cover that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolsA
Search for tools using natural language.
Returns matching tool definitions ranked by relevance, in the same format as list_tools.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language query to search for tools |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full behavioral disclosure. It states returns are ranked by relevance and in same format as list_tools, which is transparent for a read-only search.
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?
Two sentences with front-loaded purpose, every word earns its place. No wasted text.
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 simple search tool with an output schema, the description adequately covers return format (matching list_tools) and relevance ranking. Minor gap: no mention of error conditions or scope of tools searched.
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% for the single parameter, which already describes 'Natural language query'. The tool description adds no extra parameter info, so baseline score applies.
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 'Search for tools using natural language' with a specific verb ('search') and resource ('tools'), and distinguishes from sibling research tools by specifying it returns tool definitions rather than web content.
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 implies usage (when you need to find a tool) but provides no explicit guidance on when to use vs alternatives or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct purpose: quick research vs deep research, resuming interrupted sessions, exporting results, and searching/calling tools. The descriptions clearly differentiate them, though research_web and research_deep could cause minor confusion if not carefully read.
Tool names follow a mostly consistent verb_noun pattern in snake_case (research_web, research_deep, resume_research, export_research_session, search_tools, call_tool). The pattern is clear, though research_web and research_deep use qualifiers instead of straightforward nouns.
6 tools is well-scoped for a research server. It covers quick research, deep research, session recovery, export, and tool discovery/execution without being overwhelming or sparse.
The tool surface covers the main research workflow: quick and deep research, resuming interrupted sessions, exporting results, and meta-tools for discovering and calling tools. Minor gaps like lack of a dedicated cancel or list historical sessions tool, but the set feels complete for most use cases.
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for Google search results via SERP API
Scrape, crawl and search the web for AI agents via MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that utilizes LangGraph and Google Gemini to conduct comprehensive research through multi-iteration deep searches and quick results. It provides high-quality analysis with automated citations and grounding metadata for thorough investigations.2MIT
- AlicenseAqualityAmaintenanceAn MCP server that exposes Gemini's Deep Research Agent for comprehensive web research.21984MIT
- AlicenseNot gradedqualityDmaintenanceIntegrates Gemini API research capabilities (Deep Research, Quick Search, URL Analysis) into a unified MCP server, enabling comprehensive research, web search, and URL analysis through natural language.MIT
- AlicenseAqualityCmaintenanceMCP server for Google's Gemini API, enabling text, image, video, speech, embeddings, and deep research capabilities through a single tool set.10MIT
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/machinemates-ai/gemini-research-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server