Browser History Analysis MCP
Accesses Firefox browser history databases to retrieve and analyze browsing data, providing insights on browsing patterns, productivity, and content consumption.
Offers limited support for accessing Safari browser history data, primarily for older versions, allowing analysis of browsing habits and patterns.
Directly reads from browser SQLite databases to extract browsing history and related data for analysis and processing.
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., "@Browser History Analysis MCPanalyze my browser history from the past week for productivity patterns"
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.
Browser History MCP Server
A local Model Context Protocol (MCP) server that provides access to browser history data for comprehensive analysis and insights. Built using the official python MCP sdk, this tool can be added to Claude desktop in a few minutes using the Quick Start guide.
📋 Table of Contents
Related MCP server: askboard-mcp
✨ Features
🔍 Multi-Browser Support: Query Firefox, Chrome, and (some versions of) Safari browser history
📊 Session Analysis: Group browsing sessions with intelligent time-based clustering
🏷️ Smart Categorization: Automatically categorize websites by type and purpose
📈 Domain Analytics: Analyze domain frequency and visit patterns
🎯 Learning Insights: Identify learning patterns and educational content consumption
⚡ Productivity Metrics: Calculate productivity scores and distraction analysis
🔄 Real-time Access: Direct database access for immediate insights
🛡️ Privacy-First: Local processing with no data transmission
🚀 Quick Start
Install
uvfor dependency management:curl -LsSf https://astral.sh/uv/install.sh | sh uv syncTest locally:
uv run mcp dev server/main.pyInstall for Claude Desktop (you will need to restart Claude Desktop afterwards):
uv run mcp install server/main.py --name "Browser History MCP"
📦 Detailed installation
Prerequisites
Python 3.12 or higher
Firefox, Chrome, or Safari browser
uv (recommended) or pip
Using uv (Recommended)
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install
git clone https://github.com/yourusername/browser-mcp-server.git
cd browser-mcp-server
uv syncUsing pip
git clone https://github.com/yourusername/browser-mcp-server.git
cd browser-mcp-server
pip install -e .⚙️ Configuration
Automatic Setup (Recommended)
The server automatically detects your browser profile directories:
OS | Firefox Path | Chrome Path |
macOS |
|
|
Linux |
|
|
Windows |
|
|
Manual Configuration
If automatic detection fails, manually configure paths in server/main.py:
FIREFOX_PROFILE_DIR = "/path/to/your/firefox/profile"
CHROME_PROFILE_DIR = "/path/to/your/chrome/profile"Development Mode
uv run mcp dev server/main.pyPro tip: Open the version of the local URL with the token pre-filled. Then hit "Connect"
Use with Claude Desktop
uv run mcp install server/main.py --name "Browser History MCP"📚 API Reference
Core Tools
Tool | Description | Use Case |
| Simple health check to test if the MCP server is working | Initial testing |
| Step 1: Check which browsers are available and which are locked | Initial setup and troubleshooting |
| Step 2: Get raw browser history data without analysis (fastest) | Quick data retrieval |
| Step 3: Main analysis tool with options for quick_summary, basic, or comprehensive analysis | Full productivity analysis |
| Search browser history for specific queries | Targeted research |
| Get uncategorized URLs for custom categorization | Data organization |
| Safari support and accessibility diagnostics | Safari-specific issues |
Analysis Prompts
Prompt | Purpose | Output |
| Comprehensive productivity assessment | Productivity metrics and recommendations |
| Deep learning pattern analysis | Learning insights and progress tracking |
| Research topic extraction and summarization | Research themes and focus areas |
| Create personalized browsing insights | Comprehensive activity and behavior report |
| Compare browsing habits across time | Trend analysis and habit transformation metrics |
| Generate data visualizations | Interactive charts and visual analytics |
🌐 Browser Support
Browser | Status | Requirements |
Firefox | ✅ Full Support | Browser must be closed |
Chrome | ✅ Full Support | Browser must be closed |
Safari | 🔄 Limited Support | Mostly older versions of Safari |
Important: Browsers must be closed to access their history databases due to file locking mechanisms.
Troubleshooting
MCP Config
{
"mcpServers": {
"Browser History MCP": {
"command": "/usr/local/bin/uv",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"[wherever-you-saved-the-repo]/browser-mcp-server/server/main.py"
]
}
}
}🔒 Privacy & Security
Data Handling
Local Processing: All data processing occurs locally on your machine
No Data Transmission: No browser history data is sent to external servers (aside from whatever Claude desktop is doing)
Direct Database Access: Reads directly from browser SQLite databases
Temporary Caching: Optional local caching for performance
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
7 toolsanalyze_browser_historyB
Step 3: Analyze browser history with different levels of detail.
This is the main analysis tool that consolidates all analysis options.
Args:
time_period_in_days: Number of days of history to analyze (default: 7)
analysis_type: Type of analysis to perform:
- "quick_summary": Basic stats only (fastest)
- "basic": Domain analysis and categorization (not yet implemented)
- "comprehensive": Full analysis with sessions and insights (default)
fast_mode: If True, limits analysis for faster processing (default: True)
| Name | Required | Description | Default |
|---|---|---|---|
| time_period_in_days | No | ||
| analysis_type | No | comprehensive | |
| fast_mode | No |
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 'fastest' for 'quick_summary' and 'limits analysis for faster processing' for 'fast_mode', which adds some performance context. However, it lacks critical details like whether this is a read-only or mutating operation, any authentication needs, rate limits, or what 'not yet implemented' means for 'basic' analysis. The description does not contradict annotations, but it is insufficient for a tool with potential behavioral complexities.
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 appropriately sized and front-loaded, starting with the main purpose and then detailing parameters in a structured list. Every sentence adds value, such as clarifying analysis types and defaults, with no redundant information. It could be slightly more concise by integrating the 'Step 3' context more smoothly, but overall it is well-structured and efficient.
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 3 parameters with 0% schema coverage and no annotations, the description does a good job explaining parameters and usage context. However, with an output schema present, it need not explain return values, but it still lacks details on behavioral aspects like safety, permissions, or error handling. For a tool that performs analysis (potentially resource-intensive), this leaves gaps in completeness, though it meets minimum viable standards.
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. It adds significant meaning beyond the schema by explaining each parameter: 'time_period_in_days' as 'Number of days of history to analyze', 'analysis_type' with detailed options and their effects (e.g., 'Basic stats only' for 'quick_summary'), and 'fast_mode' as 'limits analysis for faster processing'. This effectively documents all 3 parameters, though it could provide more on default behaviors or constraints.
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 the tool 'analyzes browser history with different levels of detail' and 'consolidates all analysis options', which gives a general purpose but lacks specificity about what resources or data it operates on. It distinguishes from siblings like 'get_browser_history' (retrieval) and 'search_browser_history' (searching), but the purpose remains somewhat vague without concrete examples of what 'analysis' entails.
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 clear context by positioning this as 'Step 3' and 'the main analysis tool', implying a sequence or primary role among siblings. It distinguishes from alternatives by noting 'consolidates all analysis options', suggesting it's comprehensive, but does not explicitly state when not to use it or name specific alternatives among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_browser_statusA
Step 1: Check which browsers are available and which are locked. This is the first step in the workflow - run this to see if you need to close any browsers.
Returns a dictionary with:
- status: "ready", "browser_locked", or "error"
- error_message: Clear error message if there's an issue
- user_action_required: True if user needs to close browsers
- recommended_action: Specific instructions for the user
- available_browsers: List of detected browsers
- active_browsers: List of browsers that are currently running
IMPORTANT: If status is "browser_locked", you MUST tell the user to close the specified browser(s).| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 full burden and does well by disclosing key behaviors: it returns specific statuses and fields, indicates user action requirements, and provides error handling. However, it doesn't mention potential side effects like performance impact or authentication needs, leaving some gaps.
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 output details and important usage notes. However, the step numbering ('Step 1:') is slightly redundant and could be more concise, though overall it's efficient and informative.
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 complexity (status checking with user interactions), no annotations, and the presence of an output schema, the description is complete: it explains the purpose, usage context, output structure, and critical actions, covering all necessary aspects without needing to detail return values since an output schema exists.
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?
Since there are 0 parameters and schema description coverage is 100%, the baseline is 4. The description appropriately doesn't add parameter details, focusing instead on output semantics, which aligns with the tool's no-input nature.
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 specific verbs ('check which browsers are available and which are locked') and resources ('browsers'), distinguishing it from siblings like analyze_browser_history or get_browser_history by focusing on status rather than history or analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('first step in the workflow - run this to see if you need to close any browsers') and provides a clear action requirement ('If status is "browser_locked", you MUST tell the user to close the specified browser(s)'), effectively guiding usage versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_safari_supportC
Diagnose Safari support and accessibility. Useful for debugging Safari integration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. The description mentions 'diagnose' and 'debugging,' which implies a read-only analysis, but it does not clarify if this tool performs any mutations, requires specific permissions, has rate limits, or what the output entails. For a tool with zero annotation coverage, this is a significant gap in transparency about its behavior and constraints.
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 concise with two short sentences that directly state the purpose and usage context without unnecessary details. It is front-loaded with the core function. However, it could be slightly more structured by explicitly separating purpose from guidelines, but overall, it earns its place efficiently.
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 has 0 parameters, 100% schema coverage, and an output schema exists (which means return values are documented elsewhere), the description provides a basic purpose and usage hint. However, for a diagnostic tool with no annotations, it lacks details on what 'diagnose' entails, potential side effects, or integration specifics, making it minimally adequate but with clear gaps in completeness.
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 tool has 0 parameters, and the schema description coverage is 100%, meaning there are no parameters to document. The description does not need to add parameter semantics beyond what the schema provides. According to the rules, for 0 parameters, the baseline score is 4, as the description appropriately does not waste space on non-existent parameters.
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 the tool 'diagnose[s] Safari support and accessibility' and mentions it's 'useful for debugging Safari integration,' which gives a general purpose. However, it lacks specificity about what 'diagnose' entails (e.g., what aspects of support/accessibility) and does not clearly differentiate from sibling tools like 'check_browser_status' or 'health_check,' which might overlap in functionality. This results in a vague but not tautological 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 provides minimal guidance by stating it's 'useful for debugging Safari integration,' which implies a context of troubleshooting. However, it does not specify when to use this tool versus alternatives like 'check_browser_status' or 'health_check,' nor does it mention any prerequisites or exclusions. This lack of explicit when/when-not usage or named alternatives leaves the agent with insufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_browser_historyA
Step 2: Get raw browser history data without analysis. This is the fastest way to retrieve browser history and should be used before any analysis.
Args:
time_period_in_days: Number of days of history to retrieve (default: 7)
browser_type: Browser type ('firefox', 'chrome', 'safari', or None for auto-detect)
all_browsers: If True, get history from all available browsers (default: True)
Returns:
Either a list of history entries or a dictionary with partial results and browser status
| Name | Required | Description | Default |
|---|---|---|---|
| time_period_in_days | No | ||
| browser_type | No | ||
| all_browsers | No |
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 speed ('fastest way') and that it returns 'raw' data 'without analysis', which adds useful context. However, it doesn't disclose important behavioral aspects like whether this requires special permissions, what format the history entries have, or how errors are handled for a tool that interacts with browser data.
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 appropriately sized. It begins with the core purpose, provides usage guidance, then documents parameters and return values in clear sections. Every sentence earns its place, with no redundant information. The 'Step 2' prefix is slightly odd but doesn't detract significantly.
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 has an output schema (though not shown), the description doesn't need to fully explain return values, though it helpfully mentions the two possible return structures. With no annotations and 3 parameters, the description does a good job explaining parameters and basic behavior. The main gap is lack of information about permissions, error handling, or data format details that would be important for browser history access.
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 parameter documentation in the 'Args' section that explains all three parameters with meaningful context beyond the schema. With 0% schema description coverage, this fully compensates by explaining what each parameter does, including defaults and browser options. The only minor gap is not explaining what 'auto-detect' means for browser_type when None.
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: 'Get raw browser history data without analysis.' It specifies the verb ('get') and resource ('raw browser history data'), distinguishing it from analysis-focused siblings like 'analyze_browser_history'. However, it doesn't explicitly differentiate from other retrieval siblings like 'search_browser_history' beyond speed emphasis.
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 clear context for when to use this tool: 'This is the fastest way to retrieve browser history and should be used before any analysis.' This implies it's for initial data retrieval rather than analysis or searching. It doesn't explicitly state when NOT to use it or name alternatives, but the 'before any analysis' guidance is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Simple health check that returns immediately to test if the MCP server is working.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. It discloses key behavioral traits: 'returns immediately' (indicating low latency/no processing delay) and 'test if the MCP server is working' (clarifying the diagnostic nature). However, it doesn't specify response format, error conditions, or what 'working' entails.
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 a single, efficient sentence that front-loads the essential information: 'Simple health check' establishes purpose, 'returns immediately' describes behavior, and 'to test if the MCP server is working' provides usage context. Every word earns its place with zero waste.
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 simplicity (0 parameters, no annotations, but has output schema), the description is complete enough. It explains what the tool does, when to use it, and key behavioral characteristics. With an output schema present, the description doesn't need to explain return values, making this appropriately comprehensive.
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 tool has 0 parameters with 100% schema description coverage. The description appropriately doesn't discuss parameters since none exist, maintaining focus on the tool's purpose. A baseline of 4 is appropriate for zero-parameter tools when the description is otherwise complete.
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: 'Simple health check that returns immediately to test if the MCP server is working.' It specifies the verb ('health check'), resource ('MCP server'), and distinguishes it from siblings by focusing on server functionality testing rather than browser-related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'to test if the MCP server is working.' It provides clear context for usage (verifying server connectivity/functionality) and implicitly distinguishes it from sibling tools that handle browser-specific operations like history analysis or status checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_browser_historyB
Search browser history for specific queries. Use this after getting history data.
Args:
query: Search term to look for in URLs and titles
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
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 searching 'for specific queries' and using it 'after getting history data', but lacks details on permissions, rate limits, response format, or whether it's read-only or destructive. For a search tool with zero annotation coverage, this leaves significant gaps in understanding its 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?
The description is appropriately sized with two sentences and a parameter explanation. It's front-loaded with the main purpose, and the 'Args' section adds necessary detail without redundancy. However, the phrase 'Use this after getting history data' could be more specific, and overall structure is efficient but not perfectly polished.
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 complexity (simple search with one parameter), an output schema exists, and no annotations are provided, the description is minimally adequate. It covers the basic purpose and parameter semantics but lacks behavioral details and clear differentiation from siblings. With an output schema, it doesn't need to explain return values, but more context on usage and behavior would improve completeness.
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 adds meaning beyond the input schema by explaining that the 'query' parameter is a 'Search term to look for in URLs and titles'. This clarifies the parameter's purpose, but since schema description coverage is 0% and there's only one parameter, the baseline is 4. However, it doesn't provide additional context like format examples or constraints, so it scores slightly lower.
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: 'Search browser history for specific queries.' It specifies the verb ('search') and resource ('browser history'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_browser_history' or 'analyze_browser_history', which might have overlapping functionality.
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 some usage guidance: 'Use this after getting history data.' This implies a prerequisite or sequence, but it doesn't clarify when to use this tool versus alternatives like 'get_browser_history' or 'analyze_browser_history'. No explicit when-not-to-use or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_categoriesA
Get uncategorized URLs for custom categorization. Use this after running analysis.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 is used 'after running analysis,' hinting at dependencies, but doesn't describe key behaviors like whether this is a read-only operation, potential rate limits, authentication needs, or what the output entails. For a tool with no annotations, this leaves significant gaps in understanding its 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?
The description is extremely concise and front-loaded: two short sentences that directly state the purpose and usage guideline without any waste. Every word earns its place, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, an output schema exists (which handles return values), and no annotations, the description is minimally adequate. It covers purpose and usage but lacks behavioral context like safety or dependencies. For a tool with zero parameters and an output schema, it's complete enough to be functional but could benefit from more behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, meaning there are no parameters to document. The description doesn't need to add parameter details, so it meets the baseline for this case. It implicitly suggests the tool might rely on prior analysis results, but since no parameters exist, this doesn't affect the score negatively.
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: 'Get uncategorized URLs for custom categorization.' It specifies the verb ('Get') and resource ('uncategorized URLs'), and the goal ('for custom categorization'). However, it doesn't explicitly differentiate from sibling tools like 'get_browser_history' or 'search_browser_history' in terms of scope or filtering, which prevents 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 clear context for when to use the tool: 'Use this after running analysis.' This implies a prerequisite or sequence, guiding the agent on timing. However, it doesn't specify alternatives or when not to use it, such as compared to sibling tools for categorized data, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes: check_browser_status verifies browser availability, get_browser_history retrieves raw data, analyze_browser_history performs analysis, search_browser_history searches, and suggest_categories handles categorization. However, analyze_browser_history's 'comprehensive' mode might overlap with other tools like suggest_categories, creating minor ambiguity in advanced workflows.
All tool names follow a consistent snake_case pattern with clear verb_noun combinations (e.g., check_browser_status, get_browser_history, analyze_browser_history). This predictability makes it easy for agents to understand and select tools without confusion.
With 7 tools, the server is well-scoped for browser history analysis, covering key steps from checking browser status to retrieving, analyzing, searching, and categorizing history. Each tool serves a specific role without unnecessary bloat or gaps in the workflow.
The toolset covers a complete workflow: status check, data retrieval, analysis, search, and categorization. A minor gap exists as analyze_browser_history's 'basic' mode is noted as 'not yet implemented,' which could limit some analysis options, but core operations are well-covered.
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
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
MCP server to assist with JxBrowser development.
An MCP server that provides congressional transcripts
MCP server for US nursing facility search and ownership lookup (NursingHomeDatabase).
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn MCP Server that enables AI assistants to interact with your local browsers.3,60754MIT
- AlicenseAqualityCmaintenanceA local MCP server that collects structured human input via browser forms and maintains a searchable history dashboard.313MIT
- AlicenseNot gradedqualityCmaintenanceA Python MCP server that loads and analyzes HAR files locally, providing structured summaries to AI assistants to avoid token explosion and sensitive content filtering.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server that fetches web pages, extracts clean markdown (reducing token count), caches results, and provides searchable reading history.MIT
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/mixophrygian/browser_history_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server