google-ai-history-mcp
Imports Google AI chat history from Gemini, Google Search AI Mode, Google AI Studio, NotebookLM, My Activity, and related Google AI surfaces, with URL fetching, full-text search, and local Markdown/SQLite storage.
Imports Google AI Studio prompt JSON files stored in Google Drive/Google AI Studio folders.
Imports Google Lens activity captured in Google My Activity/Takeout as part of the unified Google AI history sync.
Imports YouTube AI activity from Google My Activity/Takeout alongside other Google AI history.
Click on "Deploy 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., "@google-ai-history-mcpcontinue this chat: https://gemini.google.com/app/1a2b3c"
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.
google-ai-history-mcp — Google AI & Gemini Chat History Importer for Google Antigravity (MCP Server & CLI)
google-ai-history-mcp is an open-source Model Context Protocol (MCP) server and CLI sync engine that brings all of your Google AI conversations, prompts, and search sessions onto your computer—indexed with SQLite FTS5 full-text search, mirrored as local Markdown files, and accessible by dropping any Google AI URL directly into chat—so you can continue sessions and build real projects from them inside Google Antigravity, Claude Code, Cursor, Windsurf, Cline, or Gemini CLI.
Why This Exists & How It Changes Your Workflow
1. Drop a URL & Say "Continue This Chat" or "Build a Project From This"
You don't even have to run a full sync first. You can paste a URL from gemini.google.com/app/..., a shared link (gemini.google.com/share/...), a Google Search AI Mode session (google.com/search?udm=50...), a Google AI Studio prompt (aistudio.google.com/prompts/...), or a NotebookLM notebook directly into Google Antigravity and say:
"I want to continue this chat:
https://gemini.google.com/app/...""Build a project from this session:
https://gemini.google.com/app/...""Start a new project in my workspace from this chat line:
https://aistudio.google.com/prompts/..."
Antigravity automatically calls fetch_google_ai_chat_url, pulls every prompt, response, code block, and thinking trace from that URL, saves it locally as Markdown + SQLite FTS5, and picks up right where you left off.
2. Graduate a "Small One-Off Question" into a Full Project
Some of the best projects start by accident as a quick one-off interaction in the browser:
You do a Google Search, click "Show more" on the AI Overview, and start asking follow-up questions in "Ask anything" (AI Mode).
You brainstorm an app idea or debug a script in
gemini.google.comon your phone or laptop.You prototype a system prompt in Google AI Studio (
aistudio.google.com).
When that "small one-off chat" turns into something bigger that needs real files, a Git repository, terminal execution, and autonomous subagents, you no longer have to copy-paste 30 turns of chat history or start from scratch. Just drop the URL (or search your synced history by keyword) in Google Antigravity and roll that conversation directly into a full engineering workspace.
3. New to Google Antigravity? Bring Your Entire Google AI History With You
When you start using Google Antigravity, months or years of your past conversations, architectural decisions, prompts, and research shouldn't stay trapped across disconnected web tabs (gemini.google.com, Google Search AI Mode, AI Studio, NotebookLM, Ask Maps, and YouTube AI). google-ai-history-mcp unifies all of your past Google AI interactions into a local, privacy-first knowledge base on your machine from day one.
Related MCP server: chatgpt-context-mcp
Supported Google AI Surfaces & Storage Locations
Google stores your AI interactions across one central activity hub (myactivity.google.com) plus four product-specific thread stores:
Google AI Surface | Where Google Stores It | How |
|
1. Direct URL Drop (Any Surface) | Live web session ( | Instant on-demand extraction via |
|
2. Central Google My Activity Hub ( | Unified chronological log of Gemini Apps, Search AI Mode, Circle to Search, Google Lens, Ask Maps, YouTube AI, and Assistant | Live Chrome CDP sync ( |
|
3. Gemini Web App ( | Multi-turn sidebar conversation threads | Live Chrome CDP sidebar sync ( |
|
4. Google Search "AI Mode" & AI Overviews ( | When you click "Show more" on an AI Overview and "Ask anything" to continue chatting in AI Mode ( | Live Chrome CDP AI Mode sync ( |
|
5. Google AI Studio ( | Auto-saved as extensionless JSON files in | Direct folder/file import ( |
|
6. NotebookLM ( | NotebookLM notebooks, source summaries, and chat notes | Live Chrome sync ( |
|
7. Ask Maps, YouTube AI & Assistant | Logged under | Takeout |
|
MCP Tools Exposed to Google Antigravity & MCP Clients
MCP Tool Name | Parameters | What It Does |
|
| Drop-a-URL tool: Pulls any single Google AI chat/session directly from its URL, saves it locally, and returns the full transcript so you can continue the chat or build a project from it. |
|
| Retrieves the full multi-turn conversation transcript and local |
|
| Runs a fast SQLite FTS5 full-text search across all prompts and responses with highlighted snippets. |
|
| Lists locally synced/imported Google AI chats (optionally filtered by |
|
| Attaches to Chrome over CDP ( |
|
| Imports a Google Takeout |
System Requirements & Expected First-Run Process (For Humans & AI Agents)
Additional Requirements (Beyond Google Antigravity)
To run google-ai-history-mcp on your computer, you need:
Google Chrome or Microsoft Edge installed locally (used via Playwright over Chrome DevTools Protocol on
127.0.0.1:9222for live URL fetching and browser syncing; not required for offline Takeout/Drive imports).uv(Astral uv) and Python 3.11+ (3.11,3.12, or3.13).A Google Account signed into your Google AI surfaces (
gemini.google.com,myactivity.google.com,aistudio.google.com, etc.) — except when importing publicgemini.google.com/share/...links or offline Takeout files, which require no login.
Expected Process: How First-Run Sign-In & Persistent Sync Works
Even if you are already signed into Google in your normal everyday Chrome window, Google Chrome v136+ blocks external debugging connections (--remote-debugging-port) on your default Chrome profile while Chrome is open. To keep your main browser safe and untouched, google-ai-history-mcp manages a dedicated, persistent Chrome sync profile at ~/.gemini/google_ai_history/chrome_profile:
First Run (One-Time Google Sign-In):
The first time you ask Antigravity to import a URL or sync your history,
google-ai-history-mcplaunches a visible Chrome window on your desktop (--remote-debugging-port=9222 --user-data-dir=~/.gemini/google_ai_history/chrome_profile) and automatically clicks the "Sign in" button if you aren't logged into that profile yet.Sign into your Google account once in that Chrome window.
As soon as sign-in finishes,
google-ai-history-mcpautomatically navigates back to your exact target URL (e.g.,https://gemini.google.com/app/<id>), waits for the conversation turns to render, extracts the full chat, writes the Markdown file to~/.gemini/google_ai_history/markdown/, and indexes it in~/.gemini/google_ai_history/chats.db.
All Subsequent Runs (Zero Sign-In Needed):
Because your login cookies are persisted inside
~/.gemini/google_ai_history/chrome_profile, every future URL drop or sync reuses that authenticated session automatically without asking you to log in again.
Critical Execution Rule for AI Agents (Antigravity, Claude Code, Cursor):
Always invoke the MCP tools (
fetch_google_ai_chat_url,get_google_ai_chat,sync_google_ai_chats_from_browser) directly instead of running the CLI via a sandboxed shell command (run_command).Why? On Windows, agent shell sandboxes often execute inside an isolated background desktop (
WinSta0\exebox-...), which hides any GUI browser window spawned from the shell. By contrast, the MCP server process runs on the user's interactive desktop (WinSta0\Default), ensuring the Chrome window is always visible when a one-time login is needed.
Installation & Google Antigravity Setup
1. Clone & Install with uv
git clone https://github.com/travispflanz/google-ai-history-mcp.git
cd google-ai-history-mcp
uv sync --all-groups2. Register in Google Antigravity (mcp_config.json)
Add to ~/.gemini/config/mcp_config.json (or ~/.gemini/antigravity/mcp_config.json):
{
"mcpServers": {
"google-ai-history": {
"command": "uv",
"args": [
"run",
"--directory",
"C:\\Users\\travi\\.gemini\\antigravity\\scratch\\google-ai-history-mcp",
"google-ai-history",
"serve"
],
"disabled": false
}
}
}CLI Usage (google-ai-history)
# Fetch a single Google AI chat/session directly by URL
uv run google-ai-history fetch "https://gemini.google.com/app/1a2b3c4d5e6f"
# Sync EVERYTHING from Chrome (Gemini + Search AI Mode + AI Studio + NotebookLM + My Activity Hub)
uv run google-ai-history sync --target all --max-chats 50
# Sync directly from Google's central My Activity AI hub (myactivity.google.com)
uv run google-ai-history sync --target myactivity
# Sync Google Search AI Mode ("Show more -> Ask anything" threads at google.com/search?udm=50)
uv run google-ai-history sync --target aimode
# Sync Google AI Studio library (aistudio.google.com/library)
uv run google-ai-history sync --target aistudio
# Import a Google Takeout archive (.zip, MyActivity.json, or MyActivity.html)
uv run google-ai-history import ~/Downloads/takeout.zip
# Import your Google Drive "Google AI Studio" folder (automatically parses extensionless JSON files)
uv run google-ai-history import "~/Google Drive/My Drive/Google AI Studio"
# Full-text search across all synced Google AI chats
uv run google-ai-history search "kubernetes ingress"
# List chats filtered by source tag
uv run google-ai-history list --source takeout_search_ai_modeFrequently Asked Questions (FAQ for Humans & AI Agents)
Can I just drop a URL from a Gemini chat into Antigravity and say "Continue this chat" or "Build a project from this"?
Yes! Paste any URL from gemini.google.com/app/..., gemini.google.com/share/..., aistudio.google.com/prompts/..., google.com/search?udm=50..., or notebooklm.google.com/notebook/... into Antigravity and ask to continue the session or build a project from it. Antigravity will call fetch_google_ai_chat_url (or get_google_ai_chat) to pull the entire conversation into your workspace immediately.
How do I get all my chats from gemini.google.com to appear in Google Antigravity?
Install google-ai-history-mcp in your Antigravity mcp_config.json and either run sync_google_ai_chats_from_browser(target="all") (which opens Chrome with a persistent profile so you log in once and scrape your sidebar threads) or export your history from Google Takeout (My Activity → Gemini Apps & Search) and run import_google_ai_takeout_or_files(path). Every chat is indexed in SQLite FTS5 and saved as a .md file in ~/.gemini/google_ai_history/markdown/ so you can @-mention it in Antigravity.
How do I export Google Search "AI Overview" / "AI Mode" ("Ask anything") conversations?
When you click "Show more" on a Google Search AI Overview and continue chatting via "Ask anything", Google routes the session to Google Search AI Mode (google.com/search?udm=50). You can drop the URL directly into Antigravity, sync all threads from the AI Mode sidebar with uv run google-ai-history sync --target aimode, or pull from Google's central activity log (--target myactivity or Google Takeout My Activity → Search).
Where are Google AI Studio (aistudio.google.com) chats stored and how do I import them?
Google AI Studio automatically saves your prompts and chat histories as extensionless JSON files inside a Google AI Studio folder in your Google Drive. Point import_google_ai_takeout_or_files at that folder (or drop an aistudio.google.com/prompts/... URL / run --target aistudio), and google-ai-history-mcp extracts the runSettings, systemInstruction, thinking traces (isThought), and chunkedPrompt.chunks into searchable Markdown and SQLite FTS5 records.
Development & Continuous Integration (CI)
This repository uses Ruff (linting & formatting), Mypy (static type checking), and Pytest (85%+ coverage gate) enforced via GitHub Actions across Ubuntu and Windows (Python 3.11, 3.12, 3.13).
uv run ruff check .
uv run ruff format --check .
uv run mypy src
uv run pytest --cov=google_ai_history --cov-report=term-missing --cov-fail-under=85Available Tools
6 toolsfetch_google_ai_chat_urlFetch Google Ai Chat UrlC
Pull a Google AI chat/session directly from a URL to continue or build from it.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| login_timeout_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does not disclose that the operation likely requires an authenticated browser session (only hinted at obliquely by the login_timeout_sec parameter), whether the fetched chat is persisted locally or returned transiently, or what happens if the URL is inaccessible or the login times out.
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?
One short sentence with no filler, so it is concise and front-loaded. However, the brevity comes at the cost of specification rather than by eliminating redundancy — the second half of the sentence ("to continue or build from it") adds ambiguity instead of 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?
An output schema exists, so return values need not be explained, but the definition still omits authentication behavior, URL format expectations, side effects (whether a local record is created), and error conditions. For a two-parameter network-bound fetch tool with zero annotation coverage, this leaves too much for the agent to infer.
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 0%, and the description does not close the gap. "From a URL" loosely maps to the required url parameter but says nothing about accepted URL formats (share links vs. session URLs), and login_timeout_sec — clearly behaviorally significant at a 45s default — is never mentioned.
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?
"Pull a Google AI chat/session directly from a URL" gives a rough verb+resource, but the verb "pull" is ambiguous (network fetch? import? local copy?) and the trailing "to continue or build from it" muddies rather than sharpens intent. It also never distinguishes itself from the closest siblings get_google_ai_chat (fetch by ID) and sync_google_ai_chats_from_browser, so an agent cannot confidently route between them.
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 only usage signal is the prepositional phrase "from a URL," which implies the trigger condition but is never stated as such. There is no when-to-use/when-not guidance, no mention of the alternatives (import from Takeout files, browser sync, list/search/get by ID), and no prerequisites listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_google_ai_chatGet Google Ai ChatB
Retrieve a full Google AI conversation by chat ID, title, or direct URL.
| Name | Required | Description | Default |
|---|---|---|---|
| chat_id | Yes | ||
| login_timeout_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden and does little: 'Retrieve' implies a read, but nothing is said about authentication/browser login needs, though the undocumented login_timeout_sec parameter strongly implies a login flow. It also says nothing about failure modes for unknown chat IDs or size/truncation behavior.
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?
A single tight sentence with no filler, leading with the verb and resource. Nothing is wasted, though brevity comes at the cost of the missing detail noted elsewhere.
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?
An output schema exists, so return-value explanation is unnecessary, and the description adequately conveys the core lookup. The remaining gap is the undocumented login_timeout_sec and the undefined boundary with fetch_google_ai_chat_url.
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 0%, so the description must compensate. It adds real value by revealing that the required string chat_id accepts a chat ID, a title, or a direct URL, but it never explains login_timeout_sec (default 45), so one of only two parameters remains fully opaque.
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?
Names a specific verb and resource ('Retrieve a full Google AI conversation'), which is clearer than the tautological title. However, it does not distinguish itself from the sibling fetch_google_ai_chat_url, and claiming it can retrieve by 'direct URL' directly overlaps with that sibling's apparent purpose.
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 in that it accepts three lookup key forms (ID, title, URL), which hints at when it applies. But it gives no explicit when-to-use versus list_google_ai_chats, search_google_ai_chats, or fetch_google_ai_chat_url, leaving the agent to guess which retrieval tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_google_ai_takeout_or_filesImport Google Ai Takeout Or FilesB
Import Google AI chats from Takeout, AI Studio Drive folder, NotebookLM, or JSON/MD.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it discloses almost nothing: not whether the import writes into a local store, whether existing chats are deduplicated or overwritten, whether re-running is safe, or whether it requires authentication. For a data-ingesting mutation tool, this is a substantial gap, with only the source enumeration adding any context.
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?
A single front-loaded sentence with no filler and the source list placed immediately after the verb. It is efficiently sized, though its terseness is part of why behavioral and parameter detail is missing.
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?
An output schema exists, so return values need not be explained, but for a one-parameter ingest tool with zero annotation coverage the description leaves the write behavior, path expectations, and re-import semantics undefined. An agent could not confidently predict the effect of calling it beyond 'something gets imported.'
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 0% for the single 'path' parameter, so the description must compensate. The source enumeration partially does so by indicating that the path may point at a Takeout archive, a Drive folder, or JSON/MD files, but it never says whether a file or directory is expected, which formats/extensions are valid, or whether paths are absolute or relative.
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?
Specific verb ('Import') plus resource ('Google AI chats') and an enumerated set of accepted sources (Takeout, AI Studio Drive folder, NotebookLM, JSON/MD). This implicitly separates it from the sibling sync_google_ai_chats_from_browser, but it never names that sibling or states the distinction explicitly.
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?
Listing the supported source types implies the situation in which to use it (you already have an export/archive), which is more than nothing. However, there is no explicit guidance on when to prefer this over sync_google_ai_chats_from_browser, no prerequisites, and no exclusions or re-import caveats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_google_ai_chatsList Google Ai ChatsB
List locally stored Google AI chats (Gemini, Search AI Mode, AI Studio, Ask Maps, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| source | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. "Locally stored" usefully discloses that results come from a local store rather than a live service, implying prior import/sync, but it says nothing about pagination defaults, ordering, empty-result behavior, or result size limits for a 3-parameter listing tool.
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?
One short sentence that front-loads the verb and resource with the scope qualifier immediately after. Nothing is wasted, though the extreme brevity leaves gaps that a second sentence could have cheaply filled.
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?
An output schema exists, so return values needn't be explained, and the tool is conceptually simple. Still, for a paginated list tool with zero-documented parameters and no annotations, the definition leaves the agent guessing about page size behavior and how to narrow by source.
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 0%, so the description must compensate, and it largely does not. The enumerated sources (Gemini, Search AI Mode, AI Studio, Ask Maps) loosely suggest what the `source` filter accepts, but it never maps them to that parameter or gives exact string values, and `limit`/`offset` are entirely unexplained.
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?
States a specific verb and resource ("List ... Google AI chats") and adds qualifying scope with "locally stored" plus a concrete enumeration of sources (Gemini, Search AI Mode, AI Studio, Ask Maps). This is enough to distinguish it from the more investigative sibling search_google_ai_chats, though it never names the sibling explicitly.
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 word "List" plus "locally stored" implies a browse-all operation rather than a query, which hints at when to prefer it over search_google_ai_chats or get_google_ai_chat. However, there is no explicit when-to-use/when-not statement, no mention of prerequisites such as importing or syncing data first, and no routing to any of the five siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_google_ai_chatsSearch Google Ai ChatsB
Full-text search (SQLite FTS5) across all synced Google AI prompts and responses.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It usefully discloses that matching is SQLite FTS5 (so query text is interpreted as full-text syntax, not substring matching) and that both prompts and responses are indexed, but it says nothing about read-only safety, ranking/ordering, or whether the default limit truncates results.
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?
A single front-loaded sentence with no filler; the FTS5 parenthetical earns its place by signaling query syntax. It is very short, though, so the efficiency comes at the cost of the missing usage and parameter detail noted above.
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?
An output schema exists, so return-value documentation is not required, and the tool is simple (two parameters, one required). Still, for a search tool with no annotations and zero schema coverage, an agent gets no guidance on query syntax, result ordering, or limit behavior.
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 0% for both parameters. The description compensates partly by implying 'query' is a full-text expression searched over both prompts and responses, but it never explains 'limit', its default of 20, or any maximum, leaving half the parameters undocumented everywhere.
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 names a specific verb ('Full-text search') and a specific resource ('all synced Google AI prompts and responses'), which is enough to distinguish it from the list/get siblings by intent. It stops short of naming those siblings explicitly, so the differentiation is inferred rather than stated.
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?
There is no when-to-use guidance: nothing says to search by keyword rather than enumerate with list_google_ai_chats, or to use get_google_ai_chat once a chat is identified. The phrase 'across all synced' weakly implies global scope, but no alternative or exclusion is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_google_ai_chats_from_browserSync Google Ai Chats From BrowserC
Sync Google AI chats via Chrome ('all', 'myactivity', 'gemini', 'aimode', 'aistudio').
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | gemini | |
| max_chats | No | ||
| login_timeout_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing. It omits that this drives a Chrome browser session, likely requires an interactive Google login (implied only by the parameter name login_timeout_sec), and says nothing about duration, rate limits, or side effects.
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?
A single short sentence with zero padding, front-loading the action and resource before the option list. It says as much as it can within its limited scope, though the scope itself is thin.
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?
An output schema exists, so return values need not be explained, but a browser-automation sync tool with a login timeout and three undocumented parameters needs more than one line. Nothing explains the interactive-login flow or what the sync actually does to existing data.
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 0%, so the description must compensate. It does add real value by enumerating the accepted target values ('all', 'myactivity', 'gemini', 'aimode', 'aistudio'), but it never says which parameter those map to and leaves max_chats and login_timeout_sec entirely unexplained.
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 states a specific verb and resource ("Sync Google AI chats via Chrome") and enumerates the target scopes, so the agent knows this pulls chats through a browser. It does not differentiate itself from siblings like import_google_ai_takeout_or_files, which is why it falls short of a 5.
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?
There is no explicit guidance on when to use this tool versus the import, list, search, or fetch siblings. The target-value list implies supported sources but never states a selection condition or any when-not-to-use case.
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.
6 tool updates
v0.2.0- First observed
fetch_google_ai_chat_url - First observed
get_google_ai_chat - First observed
import_google_ai_takeout_or_files - First observed
list_google_ai_chats - First observed
search_google_ai_chats - First observed
sync_google_ai_chats_from_browser
TDQS
Scored across 6 tools
The three ingestion tools (import from files, sync from browser, fetch from URL) are distinguished by their source, and the descriptions do explain the differences. However, get_google_ai_chat explicitly accepts a 'direct URL' while fetch_google_ai_chat_url also pulls a chat by URL, creating a genuine overlap that could cause misselection.
All tools use snake_case with a verb_noun pattern (import_*, sync_*, list_*, search_*, get_*, fetch_*). The two ingestion names are unusually long and tack on qualifiers ('_or_files', '_from_browser'), but the convention itself is readable and consistent.
Six tools is a reasonable scope for a chat-archive server covering ingest, list, search, and retrieve. Nothing feels redundant in count, though the two URL/file ingestion paths could arguably be folded into fewer tools.
The ingestion-plus-retrieval lifecycle is well covered: import, sync, list, search, get, fetch. There are no delete, export, or tagging/metadata operations, but these are minor gaps an agent can work around outside the server.
Maintenance
Related MCP Connectors
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Personal knowledge MCP: capture bookmarks, notes & todos by chat; archive pages; search memory.
Private persistent memory for Claude, ChatGPT & Gemini via MCP - semantic search, zero-code setup.
Cross-AI personal memory. Save once in ChatGPT, recall in Claude, Mistral, Grok, or any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceSyncs AI conversations from multiple platforms to local Markdown files for your second brain, and provides browser automation tools via MCP for agentic workflows.AGPL 3.0
- AlicenseAqualityDmaintenanceImports private ChatGPT conversations into MCP clients like Codex and Claude Code. Provides tools to fetch remote conversation content and serve cached context via local stdio.41MIT
- AlicenseNot gradedqualityDmaintenanceA remote MCP server that enables AI coding agents to search and retrieve context from imported AI chat history (ChatGPT, Claude, Codex, Claude Code) stored in Google Drive, with zero server-side storage and OAuth-based privacy.MIT
- AlicenseAqualityDmaintenanceMCP server for querying your local Google Takeout activity (Search/YouTube history) via SQLite/FTS5. Provides tools for keyword search, activity stats, and database info, enabling AI assistants to cite your personal history.3MIT