web-access-mcp 0.2.0__tar.gz

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.
@@ -0,0 +1,158 @@
1
+ Metadata-Version: 2.4
2
+ Name: web-access-mcp
3
+ Version: 0.2.0
4
+ Summary: MCP server for browser automation over Chrome CDP
5
+ Author: renqingfei
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/renqingfei/web-access-mcp
8
+ Project-URL: Repository, https://github.com/renqingfei/web-access-mcp
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3 :: Only
11
+ Classifier: Operating System :: OS Independent
12
+ Requires-Python: >=3.10
13
+ Description-Content-Type: text/markdown
14
+
15
+ # web-access-mcp
16
+
17
+ 把 [`eze-is/web-access`](https://github.com/eze-is/web-access) 里真正“可执行”的浏览器能力下沉成一个显式 MCP server,避免依赖 skill 自动激活。
18
+
19
+ 当前版本已完全切到 Python 实现,安装、运行、发布都走 PyPI。
20
+
21
+ ## 安装
22
+
23
+ 推荐:
24
+
25
+ ```bash
26
+ pipx install web-access-mcp
27
+ ```
28
+
29
+ 或:
30
+
31
+ ```bash
32
+ pip install web-access-mcp
33
+ ```
34
+
35
+ 升级到最新版本:
36
+
37
+ ```bash
38
+ pipx upgrade web-access-mcp
39
+ ```
40
+
41
+ ## 资源限制
42
+
43
+ - MCP 自己创建的受管 tab 最多 10 个
44
+ - 超过 10 个后,`new_tab` 会直接报错,防止 Chrome target 过多导致卡顿或内存爆掉
45
+ - `adopt_tab` 接管你原本已打开的 tab 后,不计入这 10 个配额
46
+ - `close_tab` 会释放配额
47
+ - 默认情况下,用户本来就打开的 Chrome tab 不计入这 10 个配额,除非你显式执行 `adopt_tab`
48
+
49
+ ## 已实现能力
50
+
51
+ - `browser_health`: 只验证 MCP server 正常响应,不要求浏览器授权
52
+ - `browser_connect`: 在浏览器侧授权后,显式完成一次 Chrome CDP 连接验证
53
+ - `list_tabs`: 列出当前页面 tab,并标记 `isManaged` 与 `managedSource`
54
+ - `new_tab`: 新建后台 tab
55
+ - `close_tab`: 关闭 tab
56
+ - `close_all_managed_tabs`: 一键关闭全部受管 tab
57
+ - `close_created_tabs`: 只关闭 MCP 新开的 `created` tab,保留接管的 `adopted` tab
58
+ - `adopt_tab`: 接管一个用户已打开的 tab
59
+ - `navigate`: 页面跳转并等待加载
60
+ - `go_back`: 后退
61
+ - `page_info`: 读取标题、URL、readyState
62
+ - `eval`: 在页面内执行 JavaScript
63
+ - `click`: `element.click()`
64
+ - `click_at`: 真实鼠标点击
65
+ - `set_files`: 给 file input 注入本地文件
66
+ - `scroll`: 页面滚动
67
+ - `screenshot`: 截图,支持返回 base64 或落盘
68
+
69
+ ## 前置条件
70
+
71
+ 1. Python 3.10+
72
+ 2. Chrome 已打开
73
+ 3. 在 Chrome 打开 `chrome://inspect/#remote-debugging`
74
+ 4. 勾选 `Allow remote debugging for this browser instance`
75
+
76
+ 首次验证建议拆成两步:
77
+
78
+ 1. 调 `browser_health`,只验证 MCP server 正常响应;这一步不要求浏览器授权
79
+ 2. 若浏览器侧弹出授权或尚未勾选 remote debugging,先完成授权,再调 `browser_connect`
80
+
81
+ ## 本地开发
82
+
83
+ 开发安装:
84
+
85
+ ```bash
86
+ pip install -e .
87
+ ```
88
+
89
+ 语法检查:
90
+
91
+ ```bash
92
+ python -m compileall src
93
+ ```
94
+
95
+ 直接启动:
96
+
97
+ ```bash
98
+ python -m web_access_mcp
99
+ ```
100
+
101
+ ## Codex MCP 配置
102
+
103
+ 推荐直接用 Python module,避免依赖 Windows shell shim:
104
+
105
+ ```toml
106
+ [mcp_servers.web-access]
107
+ command = "C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python313\\python.exe"
108
+ args = ["-m", "web_access_mcp"]
109
+ startup_timeout_sec = 60.0
110
+ ```
111
+
112
+ 如果机器里不存在旧的 npm 全局同名 shim,且 `web-access-mcp` 已通过 `pipx` 或 `pip` 安装进 PATH,也可以直接写:
113
+
114
+ ```toml
115
+ [mcp_servers.web-access]
116
+ command = "web-access-mcp"
117
+ startup_timeout_sec = 60.0
118
+ ```
119
+
120
+ ## MCP 接入示例
121
+
122
+ 其他支持 stdio 的 MCP 客户端也可直接这样配置:
123
+
124
+ ```json
125
+ {
126
+ "mcpServers": {
127
+ "web-access": {
128
+ "command": "web-access-mcp"
129
+ }
130
+ }
131
+ }
132
+ ```
133
+
134
+ ## 发布到 PyPI
135
+
136
+ 构建:
137
+
138
+ ```bash
139
+ python -m build
140
+ ```
141
+
142
+ 发布:
143
+
144
+ ```bash
145
+ python -m twine upload dist/*
146
+ ```
147
+
148
+ ## 与原 skill 的差异
149
+
150
+ - 原 skill 的“自动选择 WebSearch / WebFetch / Jina / CDP”是提示词层能力,不是脚本层能力
151
+ - 本仓库把稳定、确定、可调用的部分下沉成 MCP tools
152
+ - 如果后续需要,可继续补 `fetch_url`、`fetch_html`、`site_pattern_lookup` 等工具
153
+
154
+ ## 设计取舍
155
+
156
+ - 运行时无第三方依赖,WebSocket 与 MCP stdio 都用 Python standard library 自行实现
157
+ - 采用 stdio + JSON-RPC 实现最小 MCP server
158
+ - 保留原仓库的核心思路:复用用户自己的 Chrome 登录态,而不是启动独立浏览器
@@ -0,0 +1,144 @@
1
+ # web-access-mcp
2
+
3
+ 把 [`eze-is/web-access`](https://github.com/eze-is/web-access) 里真正“可执行”的浏览器能力下沉成一个显式 MCP server,避免依赖 skill 自动激活。
4
+
5
+ 当前版本已完全切到 Python 实现,安装、运行、发布都走 PyPI。
6
+
7
+ ## 安装
8
+
9
+ 推荐:
10
+
11
+ ```bash
12
+ pipx install web-access-mcp
13
+ ```
14
+
15
+ 或:
16
+
17
+ ```bash
18
+ pip install web-access-mcp
19
+ ```
20
+
21
+ 升级到最新版本:
22
+
23
+ ```bash
24
+ pipx upgrade web-access-mcp
25
+ ```
26
+
27
+ ## 资源限制
28
+
29
+ - MCP 自己创建的受管 tab 最多 10 个
30
+ - 超过 10 个后,`new_tab` 会直接报错,防止 Chrome target 过多导致卡顿或内存爆掉
31
+ - `adopt_tab` 接管你原本已打开的 tab 后,不计入这 10 个配额
32
+ - `close_tab` 会释放配额
33
+ - 默认情况下,用户本来就打开的 Chrome tab 不计入这 10 个配额,除非你显式执行 `adopt_tab`
34
+
35
+ ## 已实现能力
36
+
37
+ - `browser_health`: 只验证 MCP server 正常响应,不要求浏览器授权
38
+ - `browser_connect`: 在浏览器侧授权后,显式完成一次 Chrome CDP 连接验证
39
+ - `list_tabs`: 列出当前页面 tab,并标记 `isManaged` 与 `managedSource`
40
+ - `new_tab`: 新建后台 tab
41
+ - `close_tab`: 关闭 tab
42
+ - `close_all_managed_tabs`: 一键关闭全部受管 tab
43
+ - `close_created_tabs`: 只关闭 MCP 新开的 `created` tab,保留接管的 `adopted` tab
44
+ - `adopt_tab`: 接管一个用户已打开的 tab
45
+ - `navigate`: 页面跳转并等待加载
46
+ - `go_back`: 后退
47
+ - `page_info`: 读取标题、URL、readyState
48
+ - `eval`: 在页面内执行 JavaScript
49
+ - `click`: `element.click()`
50
+ - `click_at`: 真实鼠标点击
51
+ - `set_files`: 给 file input 注入本地文件
52
+ - `scroll`: 页面滚动
53
+ - `screenshot`: 截图,支持返回 base64 或落盘
54
+
55
+ ## 前置条件
56
+
57
+ 1. Python 3.10+
58
+ 2. Chrome 已打开
59
+ 3. 在 Chrome 打开 `chrome://inspect/#remote-debugging`
60
+ 4. 勾选 `Allow remote debugging for this browser instance`
61
+
62
+ 首次验证建议拆成两步:
63
+
64
+ 1. 调 `browser_health`,只验证 MCP server 正常响应;这一步不要求浏览器授权
65
+ 2. 若浏览器侧弹出授权或尚未勾选 remote debugging,先完成授权,再调 `browser_connect`
66
+
67
+ ## 本地开发
68
+
69
+ 开发安装:
70
+
71
+ ```bash
72
+ pip install -e .
73
+ ```
74
+
75
+ 语法检查:
76
+
77
+ ```bash
78
+ python -m compileall src
79
+ ```
80
+
81
+ 直接启动:
82
+
83
+ ```bash
84
+ python -m web_access_mcp
85
+ ```
86
+
87
+ ## Codex MCP 配置
88
+
89
+ 推荐直接用 Python module,避免依赖 Windows shell shim:
90
+
91
+ ```toml
92
+ [mcp_servers.web-access]
93
+ command = "C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python313\\python.exe"
94
+ args = ["-m", "web_access_mcp"]
95
+ startup_timeout_sec = 60.0
96
+ ```
97
+
98
+ 如果机器里不存在旧的 npm 全局同名 shim,且 `web-access-mcp` 已通过 `pipx` 或 `pip` 安装进 PATH,也可以直接写:
99
+
100
+ ```toml
101
+ [mcp_servers.web-access]
102
+ command = "web-access-mcp"
103
+ startup_timeout_sec = 60.0
104
+ ```
105
+
106
+ ## MCP 接入示例
107
+
108
+ 其他支持 stdio 的 MCP 客户端也可直接这样配置:
109
+
110
+ ```json
111
+ {
112
+ "mcpServers": {
113
+ "web-access": {
114
+ "command": "web-access-mcp"
115
+ }
116
+ }
117
+ }
118
+ ```
119
+
120
+ ## 发布到 PyPI
121
+
122
+ 构建:
123
+
124
+ ```bash
125
+ python -m build
126
+ ```
127
+
128
+ 发布:
129
+
130
+ ```bash
131
+ python -m twine upload dist/*
132
+ ```
133
+
134
+ ## 与原 skill 的差异
135
+
136
+ - 原 skill 的“自动选择 WebSearch / WebFetch / Jina / CDP”是提示词层能力,不是脚本层能力
137
+ - 本仓库把稳定、确定、可调用的部分下沉成 MCP tools
138
+ - 如果后续需要,可继续补 `fetch_url`、`fetch_html`、`site_pattern_lookup` 等工具
139
+
140
+ ## 设计取舍
141
+
142
+ - 运行时无第三方依赖,WebSocket 与 MCP stdio 都用 Python standard library 自行实现
143
+ - 采用 stdio + JSON-RPC 实现最小 MCP server
144
+ - 保留原仓库的核心思路:复用用户自己的 Chrome 登录态,而不是启动独立浏览器
@@ -0,0 +1,32 @@
1
+ [build-system]
2
+ requires = ["setuptools>=69"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "web-access-mcp"
7
+ version = "0.2.0"
8
+ description = "MCP server for browser automation over Chrome CDP"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+ authors = [
13
+ { name = "renqingfei" }
14
+ ]
15
+ classifiers = [
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3 :: Only",
18
+ "Operating System :: OS Independent",
19
+ ]
20
+
21
+ [project.urls]
22
+ Homepage = "https://github.com/renqingfei/web-access-mcp"
23
+ Repository = "https://github.com/renqingfei/web-access-mcp"
24
+
25
+ [project.scripts]
26
+ web-access-mcp = "web_access_mcp.cli:main"
27
+
28
+ [tool.setuptools]
29
+ package-dir = { "" = "src" }
30
+
31
+ [tool.setuptools.packages.find]
32
+ where = ["src"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,5 @@
1
+ """web-access-mcp Python package."""
2
+
3
+ __all__ = ["__version__"]
4
+
5
+ __version__ = "0.2.0"
@@ -0,0 +1,5 @@
1
+ from .cli import main
2
+
3
+
4
+ if __name__ == "__main__":
5
+ raise SystemExit(main())