anima-use-google
This server lets AI agents perform Google AI Mode searches using your own logged-in browser session, returning AI-synthesized answers with citations — no API key required.
Search Google AI Mode (
search_google_ai): Submit a query to Google AI Mode (udm=50) and receive a synthesized answer with inline citations ([1][2]) and a source list, powered by your real browser profile.Use your own login session: Reuses your existing Google cookies (Firefox, Chrome, Chromium, or Brave) — no headless browser, stealth tricks, or CAPTCHAs.
Grounded markdown output: Results are returned as markdown with inline citation markers and a structured source list for verifiable, grounded responses.
Configurable timeout: Optional
timeout_msparameter per request (default: 60,000ms).No API key needed: Free to use since it piggybacks on your own browser session.
CLI tool: A
anima-use-google-clicommand-line interface supports direct interaction, multiple output formats (markdown, JSON, raw), and astatussubcommand to check native host reachability.
Allows AI agents to run Google AI Mode searches using the user's own logged-in browser session, returning synthesized answers and citations.
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., "@anima-use-googlesearch for the latest breakthroughs in quantum computing"
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.
MCP server + browser sidecar extension that lets AI agents run Google AI Mode searches using your own logged-in browser session, then return the synthesized answer and citations as an MCP tool result.
No headless browser, no stealth tricks, no CAPTCHA fighting. Your real browser profile does the work.
Quickest path (5 minutes)
You need three things: the MCP server, the native-messaging host, and either the Firefox or Chromium extension. Then wire the server into your agent.
1. Wire the MCP server into your agent
The stable npm release is 0.1.6. Pin it in agent configs if you want the same
server every time instead of whatever npm's latest tag points at later.
Claude Code:
claude mcp add ask-google -- npx anima-use-google@0.1.6Other agents - add to your MCP config:
{
"mcpServers": {
"ask-google": {
"command": "npx",
"args": ["anima-use-google@0.1.6"]
}
}
}If you prefer installing straight from GitHub, pin the stable commit:
claude mcp add ask-google -- npm exec --yes --package github:animaios/anima-use-google#4311a84b580713ffd58d95dccbda8a97c635086f -- anima-use-googleEquivalent MCP config:
{
"mcpServers": {
"ask-google": {
"command": "npm",
"args": [
"exec",
"--yes",
"--package",
"github:animaios/anima-use-google#4311a84b580713ffd58d95dccbda8a97c635086f",
"--",
"anima-use-google"
]
}
}
}That commit is the same stable 0.1.6 release. GitHub installs run the package's
prepare script, so the TypeScript server is built from source before npm runs
the anima-use-google bin.
The MCP server talks to the sidecar over localhost; it does not bundle a browser.
2. Set up a browser sidecar (one-time, non-npm)
The npm tarball ships everything you need. After the first
npx anima-use-google@0.1.6, the files live in
~/.npm/_npx/<hash>/node_modules/anima-use-google/. For setup, cloning is
usually easier:
git clone https://github.com/animaios/anima-use-google
cd anima-use-googleFirefox
Register the native-messaging host:
node native-host/install-host.cjsThis writes the Firefox native-host registration for your OS:
Linux:
~/.mozilla/native-messaging-hosts/com.ask.google.jsonmacOS:
~/Library/Application Support/Mozilla/NativeMessagingHosts/com.ask.google.jsonWindows:
HKCU\Software\Mozilla\NativeMessagingHosts\com.ask.google, pointing at%USERPROFILE%\.anima-use-google\com.ask.google.json
Load the extension in Firefox:
Open
about:debugging#/runtime/this-firefox.Click Load Temporary Add-on and pick
extension/manifest.json.The host process starts on the first search.
Restart Firefox so the new native-messaging host is picked up.
For permanent install (loads on every FF start):
npx web-ext build --source-dir extension --overwrite-dest
# Then sign or load via about:config xpinstall.signatures.required=false (Dev/Nightly)Chrome / Chromium / Brave
Chromium-based browsers use the extension-chromium/ sidecar. Their native
messaging manifests require allowed_origins, so you need the extension id
before installing the native host.
Load the unpacked extension:
Chrome: open
chrome://extensions.Chromium: open
chromium://extensions.Brave: open
brave://extensions.Enable Developer mode.
Click Load unpacked and choose
extension-chromium/.Copy the generated extension id.
Register the native-messaging host:
# Google Chrome node native-host/install-chrome-host.cjs --browser chrome --extension-id <extension-id> # Chromium node native-host/install-chrome-host.cjs --browser chromium --extension-id <extension-id> # Brave node native-host/install-chrome-host.cjs --browser brave --extension-id <extension-id>The installer writes the manifest or registry entry for your selected browser:
Chrome on Linux:
~/.config/google-chrome/NativeMessagingHosts/com.ask.google.jsonChrome on macOS:
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.ask.google.jsonChrome on Windows:
HKCU\Software\Google\Chrome\NativeMessagingHosts\com.ask.googleChromium on Linux:
~/.config/chromium/NativeMessagingHosts/com.ask.google.jsonChromium on macOS:
~/Library/Application Support/Chromium/NativeMessagingHosts/com.ask.google.jsonChromium on Windows:
HKCU\Software\Chromium\NativeMessagingHosts\com.ask.googleBrave on Linux:
~/.config/BraveSoftware/Brave-Browser/NativeMessagingHosts/com.ask.google.jsonBrave on macOS:
~/Library/Application Support/BraveSoftware/Brave-Browser/NativeMessagingHosts/com.ask.google.jsonBrave on Windows:
HKCU\Software\BraveSoftware\Brave-Browser\NativeMessagingHosts\com.ask.google
On Windows, the manifest JSON itself is written under
%USERPROFILE%\.anima-use-google\<browser>\com.ask.google.json, and the registry key points the browser at that file.Reload the extension so
chrome.runtime.connectNative("com.ask.google")sees the manifest.
Switching between Firefox and Chromium-based sidecars
The MCP server always connects to the first browser native host listening on
127.0.0.1:51784. When switching browsers during development, make sure the
old sidecar is not still owning that port.
Disable or unload the sidecar you are not testing:
Firefox: remove or disable the temporary add-on from
about:debugging#/runtime/this-firefox.Chrome/Chromium/Brave: disable or remove the unpacked extension from
chrome://extensions,chromium://extensions, orbrave://extensions.
Stop any stale native host:
ps -ef | rg '[n]ative-host/host\.js' kill <pid>Register the host manifest for the browser you want:
# Firefox node native-host/install-host.cjs # Google Chrome node native-host/install-chrome-host.cjs --browser chrome --extension-id <chrome-extension-id> # Chromium node native-host/install-chrome-host.cjs --browser chromium --extension-id <chrome-extension-id> # Brave node native-host/install-chrome-host.cjs --browser brave --extension-id <brave-extension-id>Reload the chosen browser extension so it reconnects to native messaging.
Confirm which browser owns the host before running an E2E test:
ps -ef | rg '[n]ative-host/host\.js|[b]rave|[c]hrome|[c]hromium|[f]irefox' ss -ltnp 'sport = :51784'For Chromium-based browsers, the host command should include an origin like
chrome-extension://<extension-id>/. For Firefox, it is normally launched without that Chrome extension-origin argument.
3. Use it
Ask your agent normally:
Search Google AI Mode for: Next.js 15 App Router best practices
The agent calls ask_google, your browser sidecar opens the udm=50 search in your profile, the extension parses the AI answer with inline [1][2] citations, and the agent gets a grounded markdown response.
Related MCP server: Gemini Google Web Search MCP
anima-use-google-cli
The anima-use-google-cli binary searches Google AI Mode directly through the native host on 127.0.0.1:51784. It does not spawn the MCP server (dist/index.js) and has zero dependency on the @modelcontextprotocol/sdk — per invocation it runs as a single pure-Node process.
anima-use-google-cli <query>
├─ toGoogleAiModeQuery(query) appends "answer in English" unless already requested
├─ new NativeMessagingBridge() raw TCP to 127.0.0.1:51784 (4-byte LE prefix + JSON)
├─ bridge.search(query, timeoutMs) framed request to host.js → extension → Google AI Mode
├─ parseAiResponse(html, citations) cheerio + turndown → grounded markdown
└─ stdout: markdown | --json | --raw ; stderr: errors ; exit 0/1/2Designed for harnesses and people who don't want the MCP client interface. The CLI runs on Node 20+ with no new packages — cross-platform by construction (bridge.dispose() always runs in a finally, no lingering socket or child process).
# Positional (space-joined)
anima-use-google-cli <query>
# --query flag form is equivalent to positional
anima-use-google-cli --query "your query"
# Piped input
echo "your query" | anima-use-google-cli --stdin
# Or omit the flag — piped stdin is auto-detected when no positional or --query is givenOutput modes:
Default — parsed markdown answer (inline
[n]citations +## Sourcessection) goes to stdout; errors go to stderr, exit 1.--json— a single JSON document to stdout and nothing else on any stream. Success:{"ok":true,"markdown":"...","citations":[...]}(exit 0). Any failure:{"ok":false,"error":"..."}(exit 1). Thecitationsfield is always present — an empty array when there are none.--raw— the verbatim host frame ({"requestId",ok,"html","citations",error}) to stdout; noparseAiResponseapplied (thehtmlis the raw host HTML containing[CITE-N]markers). Exit 0 on success, 1 on failure; nothing on stderr.Precedence — when
--jsonand--raware both passed,--rawwins (consistent on success and failure paths).
The status subcommand probes reachability without sending a search:
anima-use-google-cli status # --json and --raw are accepted but produce the same schema
# reachable → {"ok":true,"host":"127.0.0.1","port":51784,"reachable":true} (exit 0)
# unreachable → {"ok":false,"host":"127.0.0.1","port":51784,"reachable":false} (exit 1)
# stderr is always empty on the status pathEnvironment (honored by the CLI and by the bridge it loads):
Variable | Default | Effect |
|
| TCP host for search + status |
|
| TCP port for search + status |
|
| Default per-request timeout in ms |
|
| Grace period on top of the timeout (for the bridge's rejection) |
--timeout-ms <ms> (or the alias --timeout <ms>) overrides GOOGLE_AI_TIMEOUT_MS for a single invocation.
Exit codes:
0 success
1 search/host error, including timeout (
default→ stderr;--json/--raw→ structured stdout)2 usage error (
--help, bad args, empty query,--stdinon TTY) — error message on stderr, no network contact
How it works
Agent (stdio) <---> MCP server <---> localhost TCP <---> host.js
<---> browser native port <---> background script
<---> opens google.com/search?udm=50&q=...
<---> content.js parses AI answer + sources
<---> response back along the same chainYour logged-in Google cookies are reused because the tab is opened in your own browser profile - if you have AI Mode enabled, it works; CAPTCHAs don't trigger (real user profile, no stealth games).
The multilanguage completion detection (SVG thumbs-up → aria-label → text markers → 40s fallback) and SERPO-style citation parsing are ported from the Battle-tested google-ai-mode-mcp.
Developers
Want to hack on the MCP server or build from source:
npm install
npm run build # tsc -> dist/
npm test # node:test regression suiteAvailable Tools
1 toolsearch_google_aiA
Run a Google AI Mode search (https://www.google.com/search?udm=50&q=...) using your own logged-in Firefox session and return the AI-synthesized answer with inline citations [1][2] and a source list. Free, grounded, no API key.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query to send to Google AI Mode. | |
| timeout_ms | No | Optional timeout in milliseconds for waiting on the AI response (default 60000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool uses the user's Firefox session, is free, grounded, and returns AI-synthesized answers with citations. It does not mention rate limits or side effects, but the key behaviors are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the action and resource, then adding a valuable second sentence about the output and benefits. Every word earns its place; no 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 adequately explains the return value (AI answer with citations and source list). It also mentions the URL format and prerequisite (logged-in Firefox session). For a two-parameter tool, this is complete.
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% (both query and timeout_ms have schema descriptions). The description does not add additional meaning for the parameters themselves but provides context about the output format (AI-synthesized answer with citations). Baseline 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?
Description clearly states it runs a Google AI Mode search and returns AI-synthesized answer with citations and source list. The verb 'Run a search' and resource 'Google AI Mode search' are specific. Though no sibling tools are listed, the description distinguishes it by mentioning 'free, grounded, no API key'.
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?
Description implies the tool requires a logged-in Firefox session and is free and grounded, but does not explicitly state when to use versus alternatives or provide when-not scenarios. The usage context is implied rather than direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v0.1.6- First observed
search_google_ai
TDQS
With only one tool, there is no possibility of confusion between tools. The single tool has a clear, distinct purpose.
Only one tool exists, so naming consistency is not an issue. The name 'search_google_ai' follows a clear verb_noun pattern.
At 1 tool, the count is at the lower end of the borderline range. While the tool performs a specific function well, the server feels thin for broader use.
The tool fully covers the stated purpose of performing a Google AI Mode search. There are no obvious gaps given the server's narrow scope.
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
Live AI-native web search with citations. One tool for every MCP client. Flat per-request pricing.
Google AI Overview answers and cited sources via the Apify Google AI Overview API, hosted MCP.
MCP server for Google search results via SERP API
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn MCP (Model Context Protocol) server that provides Google search capabilities and webpage content analysis tools. This server enables AI models to perform Google searches and analyze webpage content programmatically.27256ISC
- AlicenseBqualityDmaintenanceAn MCP server that enables AI models to perform Google Web searches using the Gemini API, complete with citations and grounding metadata for accurate information retrieval. It is compatible with Claude Desktop and other MCP clients for real-time web access.13Apache 2.0
- AlicenseAqualityDmaintenanceEnables any MCP-compatible LLM to perform AI-powered web research using Google's AI Mode, returning synthesized and cited answers instead of raw search results.169150MIT
- AlicenseAqualityBmaintenanceMCP server for web search powered by Google AI Mode (Gemini). Enables any AI agent to search the web in real-time for free and without rate limits.2175MIT
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/animaios/anima-use-google'
If you have feedback or need assistance with the MCP directory API, please join our Discord server