Model Context Protocol (MCP) server that provides direct access to your browser's open tabs content. No additional fetching or authentication required - simply access what you're already viewing.
- Direct browser tab access - No web scraping needed, reads content from already open tabs
- Content optimized for AI - Automatic content extraction and markdown conversion to reduce token usage
- Active tab shortcut - Instant access to currently focused tab without specifying IDs
- MCP listChanged notifications - Follows MCP protocol to notify tab changes (set
--check-interval
to enable)
Important
macOS only - This MCP server uses AppleScript and only works on macOS.
- Node.js 20 or newer
- MCP Client such as Claude Desktop, Claude Code, or any MCP-compatible client
- macOS only (uses AppleScript for browser automation)
First, enable "Allow JavaScript from Apple Events" in Chrome:
- (en) View > Developer > Allow JavaScript from Apple Events
- (ja) 表示 > 開発 / 管理 > Apple Events からのJavaScript を許可
Standard config works in most MCP clients (e.g., .claude.json
, .mcp.json
):
{
"mcpServers": {
"chrome-tabs": {
"command": "npx",
"args": ["-y", "@pokutuna/mcp-chrome-tabs@latest"]
}
}
}
Or for Claude Code:
claude mcp add -s user chrome-tabs -- npx -y @pokutuna/mcp-chrome-tabs@latest
The server accepts optional command line arguments for configuration:
Content Extraction Options
--max-content-chars
- Maximum content characters per single read (default: 20000)--extraction-timeout
- Timeout for content extraction worker in milliseconds (default: 20000)--exclude-hosts
- Comma-separated list of domains to exclude from tab listing and content access
Resource Options
--check-interval
- Interval in milliseconds to check for tab changes and send listChanged notifications (default: 0 disabled, set to 3000 for 3 seconds)
Browser Options
--application-name
- Application name to control (default: "Google Chrome")--experimental-browser
- Browser implementation to use: "chrome", "safari", or "arc" (default: "chrome")
Other Options
--help
- Show help message with all available options
Setting --check-interval
to a value greater than 0 enables resource subscription. When enabled, the server monitors tab list changes and sends MCP listChanged
notifications to prompt clients to refresh their resource lists. This also makes tab://{windowId}/{tabId}
resources available for all open tabs.
In 2025-10, few MCP clients support resource subscriptions. Resource subscription is disabled by default (--check-interval=0
). Most users only need the tab://current
resource, which is always available.
To enable resource subscription:
{
"mcpServers": {
"chrome-tabs": {
"command": "npx",
"args": [
"-y",
"@pokutuna/mcp-chrome-tabs@latest",
"--check-interval=3000"
]
}
}
}
Note that Safari lacks unique tab IDs, making it sensitive to tab order changes during execution:
npx @pokutuna/mcp-chrome-tabs --application-name=Safari --experimental-browser=safari
npx @pokutuna/mcp-chrome-tabs --application-name=Arc --experimental-browser=arc
list_tabs
List all open tabs in the user's browser with their titles, URLs, and tab references.
- Returns: Markdown formatted list of tabs with tab IDs for reference
read_tab_content
Get readable content from a tab in the user's browser.
id
(optional): Tab reference fromlist_tabs
output (e.g.,ID:12345:67890
)- If
id
is omitted, uses the currently active tab - Returns: Clean, readable content extracted using Mozilla Readability
open_in_new_tab
Open a URL in a new tab to present content or enable user interaction with webpages.
url
(required): URL to open in the browser- Returns: Tab ID in format
ID:windowId:tabId
for immediate access to the new tab
tab://current
Resource representing the content of the currently active tab.
- URI:
tab://current
- MIME type:
text/markdown
- Content: Real-time content of the active browser tab
- Always available regardless of
--check-interval
setting
tab://{windowId}/{tabId}
Resource template for accessing specific tabs.
- URI pattern:
tab://{windowId}/{tabId}
- MIME type:
text/markdown
- Content: Content of the specified tab
- Availability: Only when
--check-interval
is set to a value greater than 0 - Resources are dynamically generated based on currently open tabs
- When enabled, the server monitors tab changes and sends MCP listChanged notifications