Skip to main content
Glama
machinemates-ai

Gemini Research MCP Server

Gemini Research MCP Server

PyPI version CI Python 3.12+ License: MIT

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

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 -.-> Redis

Related 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

research_web

Fast web search with citations

5-30 sec

research_deep

Multi-step autonomous research (MCP Tasks)

3-20 min

research_deep_max

Maximum-comprehensiveness Deep Research for exhaustive/high-stakes work

longer-running

resume_research

Resume interrupted/in-progress sessions

instant

export_research_session

Disk-first export to persistent Markdown, JSON, or DOCX artifacts

instant

search_tools

Discover hidden utility tools by relevance (BM25)

instant

call_tool

Proxy to invoke any hidden tool by name

varies

research_followup

Continue conversation after research

5-30 sec

discoverable

list_research_sessions

List saved research sessions

instant

discoverable

list_format_templates

Browse report format templates

instant

discoverable

refine_research_plan

Iterate on or approve a collaborative_planning=True plan

instant-3min

discoverable

fetch_webpage

Extract article content from a specific URL (SSRF-protected, chunkable)

0.5-2 sec

discoverable

inspect_mcp_server_for_gemini

Inspect remote MCP reachability and schemas (diagnostic only)

varies

discoverable

research_deep / research_deep_max Deep Research parameters

Parameter

Type

Default

Description

visualization

"off" | "auto"

"off"

Let the agent produce and persist supporting images/charts. Images are persisted as MCP resource artifacts (research://exports/{id}), never inlined as text.

collaborative_planning

boolean

false

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"

mcp_servers

array | null

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

url

string

required

HTTP/HTTPS URL to fetch

max_length

integer | null

null

Maximum characters to return (chunk size)

start_index

integer

0

Character offset for pagination

proxy_url

string | null

null

Optional HTTP(S) proxy URL for the request

Notes:

  • SSRF protection is always applied (private/internal hosts are blocked).

  • robots.txt is checked before fetch when protego is installed.

  • When output is truncated, the response includes a continuation hint with next start_index.

  • If proxy_url is omitted, the server falls back to FETCH_PROXY_URL when set.

  • proxy_url must 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

Power User Workflow

Key insight: Gemini Deep Research runs asynchronously on Google's servers. Even if VS Code disconnects, your research continues. The resume_research tool retrieves completed work.

Features

  • Auto-Clarification: research_deep asks 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_max exposes Google's Max agent for exhaustive, high-stakes, and offline research workflows

  • Collaborative Planning: research_deep(..., collaborative_planning=True) returns the drafted plan for approval before running the full report; refine or approve it with refine_research_plan

  • Visualization: visualization="auto" lets Deep Research produce supporting images, persisted as downloadable MCP resource artifacts

  • MCP 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_names

  • Fail-closed remote MCP: Deep Research rejects mcp_servers before network/provider access until Google exposes a reliable structured result contract

  • Format Instructions: Control report structure (sections, tables, tone)

  • LangChain-ready: verified consumable via langchain.mcp.MCPAdapter (LangChain 1.4.0a2) over both stdio and streamable-http - see scripts/langchain_interop_smoke.py. LangChain is never a dependency of this package.

Installation

pip install gemini-research-mcp
# or
uv add gemini-research-mcp

Claude 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

GEMINI_API_KEY

Yes

Google AI Studio API key

GEMINI_MODEL

No

gemini-3.7-flash

Model for research_web

GEMINI_SUMMARY_MODEL

No

gemini-3.7-flash

Model for session summaries, titles, and clarification (thinking level low)

DEEP_RESEARCH_AGENT

No

deep-research-preview-04-2026

Default agent for research_deep; accepts fast, standard, deep-research, max, deep-research-max, or exact agent IDs

FETCH_PROXY_URL

No

Default HTTP(S) proxy for fetch_webpage

GEMINI_RESEARCH_STORAGE_URL

No

redis://... URL to share sessions, exports, and (unless overridden) Tasks across multiple instances/workers. Local DiskStore + memory Tasks remain the default

FASTMCP_DOCKET_URL

No

Advanced Tasks backend override. Takes priority over GEMINI_RESEARCH_STORAGE_URL; unset preserves memory Tasks locally

GEMINI_RESEARCH_STORAGE_PATH

No

XDG data dir

Custom directory for the local DiskStore

GEMINI_RESEARCH_TTL_SECONDS

No

backend default

Override session/export TTL

GEMINI_RESEARCH_EXPORT_DIR

No

~/.gemini-research/exports/

Disk-first destination when export_research_session has no output_path

GEMINI_RESEARCH_TRANSPORT

No

stdio

stdio (default, historical) or streamable-http (opt-in, see Transports)

GEMINI_RESEARCH_HTTP_HOST

No

127.0.0.1

Bind host for streamable-http. Non-loopback requires GEMINI_RESEARCH_HTTP_BEARER_TOKEN

GEMINI_RESEARCH_HTTP_PORT

No

8000

Bind port for streamable-http

GEMINI_RESEARCH_HTTP_PATH

No

/mcp

URL path for streamable-http

GEMINI_RESEARCH_HTTP_BEARER_TOKEN

No

Static bearer token required to call streamable-http. Never reuse GEMINI_API_KEY for this

cp .env.example .env
# Edit .env with your API key

Transports

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 8000

Binding 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 DiskStore under the XDG data directory, while FastMCP Tasks use in-process memory (GEMINI_RESEARCH_STORAGE_PATH to override) - zero configuration, single process/single machine.

  • Distributed (Redis/Valkey): set GEMINI_RESEARCH_STORAGE_URL=redis://host:6379/0 to share sessions, exports, and Tasks across multiple server instances or workers. Set FASTMCP_DOCKET_URL only when Tasks must use a different backend. Requires the distributed extra:

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_deep uses deep-research-preview-04-2026 by default. Use it for interactive research, comparisons, investigations, and latency/cost-sensitive synthesis.

  • research_deep_max uses deep-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-mcp

DOCX 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_web from 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

keep_with_next prevents orphan headings

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

research://models

Available models and their capabilities

research://exports

List cached exports ready for download

research://exports/{id}

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 coverage

Pricing

Tool

Typical Cost

research_web

~$0.01-0.05 per query

research_deep

~$2-5 per task

Deep Research uses ~80-160 searches and ~250k-900k tokens per task.

License

MIT

Available Tools

6 tools
call_toolB

Call a tool by name with the given arguments.

Use this to execute tools discovered via search_tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the tool to call
argumentsNoArguments to pass to the tool

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_sessionA
Read-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 .md file with full report and citations

  • json: Machine-readable, all metadata preserved

Typical recovery flow:

  1. research_deep(...) completes (or is resumed via resume_research).

  2. export_research_session(format="docx") — no other arguments needed; the path on disk is returned in the response text.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional: search for a session by query text instead of interaction_id
formatNoExport format: 'markdown' (.md), 'json' (.json), or 'docx' (Word document)markdown
output_pathNoFilesystem 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_idNoInteraction ID of the session to export. If not provided, exports the most recent.

TDQS

A3.9/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_deepB
Read-only

Run the default Deep Research agent with optional File Search and MCP tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesResearch question or topic to investigate thoroughly
mcp_serversNoOptional remote MCP server configs for Deep Research. Each item may include name, url, headers, and allowed_tools.
format_instructionsNoOptional report format (e.g., 'executive briefing', 'comparison table')
file_search_store_namesNoOptional: Gemini File Search store names to search your own data alongside web

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_webA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query or question to research on the web
include_thoughtsNoInclude thinking summary in response

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_researchA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
interaction_idNoOptional: specific interaction_id to resume. If not provided, shows resumable sessions.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language query to search for tools

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

A3.7/5.0
Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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