Search History MCP Server
Provides access to Arc browser's search history, enabling search of URLs and page titles, retrieval of recent browsing history, and identification of most frequently visited sites.
Provides access to Brave browser's search history, enabling search of URLs and page titles, retrieval of recent browsing history, and identification of most frequently visited sites.
Provides access to DuckDuckGo browser's search history, enabling search of URLs and page titles, retrieval of recent browsing history, and identification of most frequently visited sites.
Provides access to Firefox browser's search history, enabling search of URLs and page titles, retrieval of recent browsing history, and identification of most frequently visited sites.
Provides access to Opera browser's search history, enabling search of URLs and page titles, retrieval of recent browsing history, and identification of most frequently visited sites.
Provides access to Safari browser's search history, enabling search of URLs and page titles, retrieval of recent browsing history, and identification of most frequently visited sites.
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., "@Search History MCP Serverwhat did I search about Python decorators last week?"
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.
search-history-mcp
Access and search your browser search history (Brave, Chrome, Firefox, Safari, Edge, Arc, Opera, DuckDuckGo) through an MCP server for LLM chat apps.
Supported for MacOS, Windows, and Linux.
https://github.com/user-attachments/assets/19c6de51-8219-453d-9b36-d584c44fbe9f
Use Cases
Brainstorming: Brainstorm project ideas inspired by your interests and search history.
LLM Personalization Support: Teach your LLM more about yourself.
Profile Generation: Build a personal profile based on your search history.
Related MCP server: Chrome History & Bookmarks MCP Server
Features
This MCP server provides three tools to interact with your search history:
search_history: Search for specific terms in URLs and page titles
get_recent_history: Get the most recent browsing history entries
get_most_visited: Get your most frequently visited sites
Install
Install Claude Desktop
Install uv
Clone or navigate to this repository
Setup environment:
uv venv && uv pip install -r pyproject.toml && uv pip install cryptography && source .venv/bin/activateInstall the MCP server:
fastmcp install claude-desktop mcp_server.pyRestart Claude Desktop
Privacy Note
This server reads your local browser history databases in read-only mode. It creates temporary copies to avoid locking issues when browsers are running. For DuckDuckGo on macOS, encryption keys are retrieved from your macOS Keychain and used only to decrypt your local history data. No data is sent anywhere except to your local LLM chat application.
Browser Support: Brave, Chrome, Edge, Opera, Arc, and DuckDuckGo are supported on Windows, macOS, and Linux. Firefox is supported on all platforms. Safari is macOS-only.
Browser file paths may have to be manually configured depending on your file structures.
Available Tools
3 toolsget_most_visitedA
Get the most frequently visited sites from browser history.
Args: limit: Maximum number of results to return (default: 20, max: 100) browser: Which browser to query ("brave", "safari", "chrome", "firefox", "edge", "arc", "opera", or "duckduckgo")
Returns: Formatted list of most visited sites with visit counts
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| browser | No | brave |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool retrieves data from browser history, implying a read-only operation, but does not specify permissions required, data privacy implications, rate limits, or error handling. The description adds basic context but lacks detailed behavioral traits beyond the core functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by clear sections for arguments and returns. Every sentence earns its place by providing essential information without redundancy. It is appropriately sized for a tool with two parameters and an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no annotations, but with an output schema), the description is mostly complete. It covers purpose, parameters, and return format. However, it lacks details on behavioral aspects like permissions or errors, which are important for a tool accessing browser history. The output schema existence reduces the need to explain return values, but some gaps remain.
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 fully documents both parameters: 'limit' with its default and maximum values, and 'browser' with its enum values and default. This adds complete semantic meaning beyond the bare schema, effectively compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get') and resource ('most frequently visited sites from browser history'), distinguishing it from sibling tools like 'get_recent_history' (which would presumably return recent visits rather than most frequent) and 'search_history' (which would search rather than aggregate by frequency). The verb+resource combination is precise and unambiguous.
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 context by specifying it retrieves 'most frequently visited sites,' which suggests aggregation by visit count rather than recency or search. However, it does not explicitly state when to use this tool versus alternatives like 'get_recent_history' or 'search_history,' nor does it provide exclusions or prerequisites. The context is clear but lacks explicit comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_historyA
Get the most recent browsing history entries.
Args: limit: Maximum number of results to return (default: 50, max: 500) browser: Which browser to query ("brave", "safari", "chrome", "firefox", "edge", "arc", "opera", or "duckduckgo")
Returns: Formatted list of recent history entries with titles, URLs, and visit times
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| browser | No | brave |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool 'gets' data (implying read-only), but doesn't address important behavioral aspects like authentication requirements, rate limits, privacy implications, or whether it accesses local browser data versus a centralized service. The description is minimal on behavioral 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?
The description is perfectly structured and concise. It starts with the core purpose, then provides clear parameter documentation in a well-organized format, and ends with return value information. Every sentence earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, read operation), the description is quite complete. It explains the purpose, documents both parameters thoroughly, and describes the return format. With an output schema present, the description doesn't need to detail return values extensively. The main gap is the lack of sibling tool differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides excellent parameter semantics despite 0% schema description coverage. It clearly explains what 'limit' means ('Maximum number of results to return') with default and max values, and explains 'browser' as 'Which browser to query' with a complete list of options. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('most recent browsing history entries'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_most_visited' or 'search_history', which would be needed for a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the sibling tools 'get_most_visited' and 'search_history'. It mentions what the tool does but offers no context about when it's appropriate versus alternatives, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_historyA
Search browser history for URLs and titles containing the search term.
Args: search_term: The text to search for in URLs and page titles limit: Maximum number of results to return (default: 50, max: 500) browser: Which browser to search ("brave", "safari", "chrome", "firefox", "edge", "arc", "opera", or "duckduckgo")
Returns: Formatted list of matching history entries with titles, URLs, and visit times
| Name | Required | Description | Default |
|---|---|---|---|
| search_term | Yes | ||
| limit | No | ||
| browser | No | brave |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the search behavior, return format, and parameter defaults, but does not address potential limitations like performance, privacy implications, or error handling. It adds value beyond the schema but could be more comprehensive for a tool accessing browser history.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by organized sections for Args and Returns. Every sentence adds value without redundancy, and the formatting enhances readability. It efficiently conveys necessary information in a compact form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no annotations, but with output schema), the description is mostly complete. It covers purpose, parameters, and return format, but lacks details on behavioral aspects like error cases or performance. The output schema existence reduces the need to explain return values in depth, but some operational context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate fully. It provides detailed semantics for all three parameters: 'search_term' (text to search in URLs/titles), 'limit' (default and max values), and 'browser' (enum options with default). This adds significant meaning beyond the basic schema types and enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('search'), resource ('browser history'), and scope ('URLs and titles containing the search term'). It distinguishes from sibling tools like 'get_most_visited' and 'get_recent_history' by emphasizing search functionality rather than retrieval of predefined categories.
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 context by specifying search capabilities, but does not explicitly state when to use this tool versus alternatives like 'get_most_visited' or 'get_recent_history'. It provides clear parameter defaults and constraints, which aids usage decisions, but lacks direct sibling tool comparisons or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: get_most_visited retrieves frequently visited sites by visit count, get_recent_history retrieves entries by recency, and search_history performs keyword searches. There is no overlap in functionality, making tool selection unambiguous for an agent.
All tool names follow a consistent verb_noun pattern (get_most_visited, get_recent_history, search_history) using snake_case throughout. The naming is predictable and readable, with no deviations in style or convention.
Three tools are reasonable for a search history server, covering core use cases: frequency analysis, recency retrieval, and search. However, it feels slightly thin as it lacks tools for operations like deleting history or getting specific entries by ID, which could enhance completeness.
The tools cover basic querying (frequency, recency, search) but lack update or delete operations, which are common in history management. There is no tool for getting a specific entry by URL or ID, creating potential dead ends for agents needing precise retrieval beyond search.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Web search and page-reading for AI agents. One-click OAuth connect, or a Caesar API key.
Cross-device AI memory with encrypted activity capture and context handoff between AI tools
Personal finance, bank account, and shared memory connector for Claude, ChatGPT, Gemini Spark & more
Memory for deep conversational context across any platform
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables semantic search across browser bookmarks from Chrome, Firefox, Edge, Opera, and other browsers using natural language queries. Extracts and indexes bookmark content and metadata into a vector database for intelligent retrieval.1Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search and analyze Chrome browser history and bookmarks data locally, including keyword searches, date range filtering, recent browsing activity, and usage statistics across all platforms.2

blackmount-mcpofficial
AlicenseNot gradedqualityAmaintenanceEnables AI assistants to access and search local browser history, bookmarks, open tabs, and downloads for personalized context.MIT- AlicenseNot gradedqualityAmaintenanceEnables semantic search across your local AI conversation history (ChatGPT, Claude, etc.) and provides tools to retrieve context, capture thoughts, and get profile summaries.64AGPL 3.0
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/ronantakizawa/search-history-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server