@pokutuna/mcp-chrome-tabs 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +126 -0
- package/README.md +23 -1
- package/dist/mcp.js +4 -4
- package/package.json +10 -9
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.7.2] - 2026-03-18
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Update dependencies (defuddle 0.12.0, @modelcontextprotocol/sdk 1.27.1, zod 4.3.6)
|
|
15
|
+
|
|
16
|
+
## [0.7.1] - 2025-12-24
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- Claude Code plugin support (#94)
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Update dependencies
|
|
25
|
+
|
|
26
|
+
### Documentation
|
|
27
|
+
|
|
28
|
+
- Add AppleScript permission explanation and troubleshooting section (#83)
|
|
29
|
+
|
|
30
|
+
## [0.7.0] - 2025-10-17
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- Worker thread for Defuddle content extraction to prevent blocking (#56)
|
|
35
|
+
- `--extraction-timeout` CLI option to configure content extraction timeout
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- Resource subscription is now disabled by default (`--check-interval=0`) (#62)
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- Handle empty string content correctly in worker thread
|
|
44
|
+
|
|
45
|
+
## [0.6.0] - 2025-09-08
|
|
46
|
+
|
|
47
|
+
### Added
|
|
48
|
+
|
|
49
|
+
- Return tab ID from `open_in_new_tab` tool (#34)
|
|
50
|
+
- Demo animation in README
|
|
51
|
+
|
|
52
|
+
### Changed
|
|
53
|
+
|
|
54
|
+
- Migrate to NPM Trusted Publishing with OIDC (#37)
|
|
55
|
+
|
|
56
|
+
## [0.5.0] - 2025-08-12
|
|
57
|
+
|
|
58
|
+
### Added
|
|
59
|
+
|
|
60
|
+
- Arc browser support via `--experimental-browser=arc` (#20)
|
|
61
|
+
|
|
62
|
+
## [0.4.0] - 2025-08-04
|
|
63
|
+
|
|
64
|
+
### Added
|
|
65
|
+
|
|
66
|
+
- Content pagination with `--max-content-chars` option (#17)
|
|
67
|
+
- `includeUrl` option to `list_tabs` tool (#11)
|
|
68
|
+
- URL in front matter of `formatTabContent` (#12)
|
|
69
|
+
|
|
70
|
+
## [0.3.0] - 2025-08-01
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
|
|
74
|
+
- E2E tests with Playwright (#6)
|
|
75
|
+
- MIT License
|
|
76
|
+
|
|
77
|
+
### Changed
|
|
78
|
+
|
|
79
|
+
- Replace @mozilla/readability with defuddle for content extraction (#7)
|
|
80
|
+
|
|
81
|
+
## [0.2.0] - 2025-07-29
|
|
82
|
+
|
|
83
|
+
### Added
|
|
84
|
+
|
|
85
|
+
- Safari browser support (experimental) via `--experimental-browser=safari` (#4)
|
|
86
|
+
- Prettier configuration for code formatting (#5)
|
|
87
|
+
- CLAUDE.md documentation
|
|
88
|
+
|
|
89
|
+
### Fixed
|
|
90
|
+
|
|
91
|
+
- Replace deprecated actions/create-release with gh release create
|
|
92
|
+
|
|
93
|
+
## [0.1.4] - 2025-07-28
|
|
94
|
+
|
|
95
|
+
### Fixed
|
|
96
|
+
|
|
97
|
+
- npm publish provenance configuration
|
|
98
|
+
|
|
99
|
+
## [0.1.3] - 2025-07-28
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
|
|
103
|
+
- Add `--access public` to npm publish
|
|
104
|
+
|
|
105
|
+
## [0.1.2] - 2025-07-28
|
|
106
|
+
|
|
107
|
+
### Added
|
|
108
|
+
|
|
109
|
+
- Initial release
|
|
110
|
+
- `list_tabs` tool to list browser tabs
|
|
111
|
+
- `read_tab_content` tool to extract readable content from tabs
|
|
112
|
+
- `open_in_new_tab` tool to open URLs in browser
|
|
113
|
+
- Chrome browser support via AppleScript automation
|
|
114
|
+
|
|
115
|
+
[Unreleased]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.7.2...HEAD
|
|
116
|
+
[0.7.2]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.7.1...v0.7.2
|
|
117
|
+
[0.7.1]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.7.0...v0.7.1
|
|
118
|
+
[0.7.0]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.6.0...v0.7.0
|
|
119
|
+
[0.6.0]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.5.0...v0.6.0
|
|
120
|
+
[0.5.0]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.4.0...v0.5.0
|
|
121
|
+
[0.4.0]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.3.0...v0.4.0
|
|
122
|
+
[0.3.0]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.2.0...v0.3.0
|
|
123
|
+
[0.2.0]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.1.4...v0.2.0
|
|
124
|
+
[0.1.4]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.1.3...v0.1.4
|
|
125
|
+
[0.1.3]: https://github.com/pokutuna/mcp-chrome-tabs/compare/v0.1.2...v0.1.3
|
|
126
|
+
[0.1.2]: https://github.com/pokutuna/mcp-chrome-tabs/releases/tag/v0.1.2
|
package/README.md
CHANGED
|
@@ -27,7 +27,9 @@ Model Context Protocol (MCP) server that provides direct access to your browser'
|
|
|
27
27
|
First, enable "Allow JavaScript from Apple Events" in Chrome:
|
|
28
28
|
|
|
29
29
|
- (en) **View** > **Developer** > **Allow JavaScript from Apple Events**
|
|
30
|
-
- (ja) **表示** > **開発 / 管理** > **Apple Events からのJavaScript を許可**
|
|
30
|
+
- (ja) **表示** > **開発 / 管理** > **Apple Events からの JavaScript を許可**
|
|
31
|
+
|
|
32
|
+
When you first use the MCP server, macOS will prompt you to grant AppleScript automation permission to your MCP client (e.g., Claude Desktop, Claude Code). Click **OK** to allow access to Chrome. If you accidentally dismissed the dialog, you can enable it in **System Settings** > **Privacy & Security** > **Automation**.
|
|
31
33
|
|
|
32
34
|
Standard config works in most MCP clients (e.g., `.claude.json`, `.mcp.json`):
|
|
33
35
|
|
|
@@ -48,6 +50,18 @@ Or for Claude Code:
|
|
|
48
50
|
claude mcp add -s user chrome-tabs -- npx -y @pokutuna/mcp-chrome-tabs@latest
|
|
49
51
|
```
|
|
50
52
|
|
|
53
|
+
### Claude Code Plugin
|
|
54
|
+
|
|
55
|
+
You can also install this as a Claude Code plugin:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Add the marketplace
|
|
59
|
+
/plugin marketplace add pokutuna/mcp-chrome-tabs
|
|
60
|
+
|
|
61
|
+
# Install the plugin
|
|
62
|
+
/plugin install mcp-chrome-tabs@mcp-chrome-tabs
|
|
63
|
+
```
|
|
64
|
+
|
|
51
65
|
### Command Line Options
|
|
52
66
|
|
|
53
67
|
The server accepts optional command line arguments for configuration:
|
|
@@ -167,3 +181,11 @@ Resource template for accessing specific tabs.
|
|
|
167
181
|
- When enabled, the server monitors tab changes and sends MCP listChanged notifications
|
|
168
182
|
|
|
169
183
|
</details>
|
|
184
|
+
|
|
185
|
+
## Troubleshooting
|
|
186
|
+
|
|
187
|
+
### `Current Tabs (0 tabs exists)` is displayed
|
|
188
|
+
|
|
189
|
+
Ensure "Allow JavaScript from Apple Events" is enabled in Chrome (see [Getting Started](#getting-started)).
|
|
190
|
+
|
|
191
|
+
If it was working before, try restarting your browser.
|
package/dist/mcp.js
CHANGED
|
@@ -55,6 +55,7 @@ function hashTabList(tabs) {
|
|
|
55
55
|
export async function createMcpServer(options) {
|
|
56
56
|
const server = new McpServer({
|
|
57
57
|
name: "chrome-tabs",
|
|
58
|
+
title: "Chrome Tabs",
|
|
58
59
|
version: await packageVersion(),
|
|
59
60
|
}, {
|
|
60
61
|
instructions: "Use this server to access the user's open browser tabs.",
|
|
@@ -66,6 +67,7 @@ export async function createMcpServer(options) {
|
|
|
66
67
|
debouncedNotificationMethods: ["notifications/resources/list_changed"],
|
|
67
68
|
});
|
|
68
69
|
server.registerTool("list_tabs", {
|
|
70
|
+
title: "List Tabs",
|
|
69
71
|
description: "List all open tabs in the user's browser with their titles and tab references.",
|
|
70
72
|
inputSchema: {
|
|
71
73
|
includeUrl: z
|
|
@@ -87,6 +89,7 @@ export async function createMcpServer(options) {
|
|
|
87
89
|
};
|
|
88
90
|
});
|
|
89
91
|
server.registerTool("read_tab_content", {
|
|
92
|
+
title: "Read Tab Content",
|
|
90
93
|
description: "Get readable content from a tab in the user's browser. Provide ID (from list_tabs output) to read a specific tab, or omit for the active tab.",
|
|
91
94
|
inputSchema: {
|
|
92
95
|
id: z
|
|
@@ -114,6 +117,7 @@ export async function createMcpServer(options) {
|
|
|
114
117
|
};
|
|
115
118
|
});
|
|
116
119
|
server.registerTool("open_in_new_tab", {
|
|
120
|
+
title: "Open in New Tab",
|
|
117
121
|
description: "Open a URL in a new tab to present content or enable user interaction with webpages",
|
|
118
122
|
inputSchema: {
|
|
119
123
|
url: z.string().url().describe("URL to open in the browser"),
|
|
@@ -144,10 +148,8 @@ export async function createMcpServer(options) {
|
|
|
144
148
|
contents: [
|
|
145
149
|
{
|
|
146
150
|
uri: uri.href,
|
|
147
|
-
name: view.formatTabName(tab),
|
|
148
151
|
text,
|
|
149
152
|
mimeType: "text/markdown",
|
|
150
|
-
size: new Blob([text]).size,
|
|
151
153
|
},
|
|
152
154
|
],
|
|
153
155
|
};
|
|
@@ -182,10 +184,8 @@ export async function createMcpServer(options) {
|
|
|
182
184
|
contents: [
|
|
183
185
|
{
|
|
184
186
|
uri: uri.href,
|
|
185
|
-
name: view.formatTabName(tab),
|
|
186
187
|
mimeType: "text/markdown",
|
|
187
188
|
text,
|
|
188
|
-
size: new Blob([text]).size,
|
|
189
189
|
},
|
|
190
190
|
],
|
|
191
191
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pokutuna/mcp-chrome-tabs",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/pokutuna/mcp-chrome-tabs"
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"dist/**/*",
|
|
22
|
+
"CHANGELOG.md",
|
|
22
23
|
"README.md",
|
|
23
24
|
"package.json"
|
|
24
25
|
],
|
|
@@ -35,18 +36,18 @@
|
|
|
35
36
|
"test:e2e": "playwright test"
|
|
36
37
|
},
|
|
37
38
|
"dependencies": {
|
|
38
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
39
|
-
"defuddle": "^0.
|
|
39
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
40
|
+
"defuddle": "^0.12.0",
|
|
40
41
|
"jsdom": "^24.0.0",
|
|
41
|
-
"zod": "^3.
|
|
42
|
+
"zod": "^4.3.6"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
|
-
"@playwright/test": "^1.
|
|
45
|
-
"@types/node": "^
|
|
45
|
+
"@playwright/test": "^1.58.2",
|
|
46
|
+
"@types/node": "^24.10.1",
|
|
46
47
|
"playwright": "^1.54.1",
|
|
47
|
-
"prettier": "^3.
|
|
48
|
-
"tsx": "^4.
|
|
48
|
+
"prettier": "^3.8.1",
|
|
49
|
+
"tsx": "^4.21.0",
|
|
49
50
|
"typescript": "~5.9.3",
|
|
50
|
-
"vitest": "^
|
|
51
|
+
"vitest": "^4.0.18"
|
|
51
52
|
}
|
|
52
53
|
}
|