关于 Bing Webmaster AI CLI MCP
bing-webmaster-ai-cli-mcp 提供 Python 命令行工具和 MCP 服务,用于读取 Bing Webmaster Tools 数据并提交更改。它面向网站运营者和 AI Agent;写入默认先生成计划供人工审核和应用,直接写入需明确启用。
主要功能
- 01读取流量、索引、抓取问题、链接和关键词
- 02默认采用审核后应用的计划式写入
- 03可选择启用直接写入
- 04追加式审计记录和持久化计划
- 05支持 IndexNow 提交
适用场景
- 01检查 Bing 流量和搜索查询
- 02排查抓取问题并检查索引状态
- 03应用前审核 URL 提交计划
- 04通过 IndexNow 向 Bing 提交 URL
MCP 相关
MCP 服务提供 Bing Webmaster 读取工具、本地 IndexNow 密钥规划工具、计划检查和写入工具。默认写入工具只创建计划,需通过命令行应用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx bing-webmaster-ai-cli-mcpBING_WM_API_KEY密钥API key from Bing Webmaster Tools Settings > API AccessBING_WM_ALLOW_WRITESSet to true to enable one-step writes; unset or false keeps plan-and-apply本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
63收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
bing-webmaster-ai-cli-mcp
bing-webmaster-ai-cli-mcp 让 AI Agent 只读访问 Bing 所掌握的网站信息,包括流量、索引、抓取问题、入站链接和关键词;写入路径则由你选择:默认先审核计划再应用,或在主动启用后直接写入。
它提供一个适用于 JSON Bing Webmaster Tools API 的 Python 3.12+ CLI 和 MCP 服务, 以及符合协议规范的 IndexNow 提交功能。SOAP 和 POX 则有意不予支持。
选择写入路径
读取工具始终会立即执行。对于所有会更改 Bing 状态的操作,只需一个设置即可在两种路径之间选择:
export BING_WM_ALLOW_WRITES=false # default: writes are planned and applied by a human
export BING_WM_ALLOW_WRITES=true # opt in: writes go straight through
默认情况下,对 Bing 只读。 如果没有设置 BING_WM_ALLOW_WRITES=true,服务不会列出任何会更改 Bing 的工具,CLI 也会拒绝单步写入。原因如下。
使用此服务的 Agent 还会读取他人撰写的页面、锚文本、抓取问题和搜索查询。Agent 可以提交的确认,也可以由提示词注入提交;因此,只要 Agent 能写入,他人锚文本中的恶意字符串就可能进入你的 Bing 帐户。使用默认设置时,在你阅读计划并亲自运行 bing-wm plan apply 之前,Agent 的任何操作都不会更改 Bing。只有当你信任某个 Agent 使用你的 Bing 帐户时,才选择启用写入。
直接写入(BING_WM_ALLOW_WRITES=true)
MCP 服务会公布单步 bing_<operation> 工具,CLI 也会接受:
$ bing-wm submit-url example.com https://example.com/new-page --json
{"applied": true, "plan_id": "…", "operation": "submit_url", "result": null}
直接写入不具备幂等性:重试会记录一个新计划,并再次发送更改。如果响应丢失,请先读取 audit.jsonl 或运行 bing-wm plan list,再重复调用。
经审核的写入(默认,BING_WM_ALLOW_WRITES=false)
服务会改为公布 bing_plan_<operation> 工具。这些工具不会发送任何内容:
$ bing-wm plan submit-url example.com https://example.com/new-page --json
{
"plan_id": "…",
"summary": "submit url https://example.com/new-page for https://example.com",
"apply_with": "bing-wm plan apply …"
}
$ bing-wm plan apply PLAN_ID
Apply this plan? [y/N]: y
在任一模式下,MCP 工具都不会接收计划 ID:记录待审核的计划只能由你通过 CLI 应用或拒绝。直接写入会在同一次调用中应用其创建的计划,绝不会触及他人记录的计划。即使启用了直接写入,计划路径仍然可用,因此 Agent 仍可以提出更改,供你审核。
两种路径共有的机制
直接写入与经审核的写入使用相同代码,只是省去了人工步骤:它会记录相同的持久化计划,并经过相同的应用边界。两种路径都适用可读的计划记录、仅追加的审计日志、一次性应用、过期机制、Bing 自身的提交配额、站点拒绝名单(BING_WM_DENIED_SITES)以及重启后仍有效的本地限额(BING_WM_MAX_WRITES_PER_DAY)。
如果应用计划的进程被终止并留下锁,命令
bing-wm plan unlock PLAN_ID 会先验证记录的 PID 已不存在,再进行恢复。未完成的计划会变为 unknown_outcome,且无法再次应用;恢复操作会记录在审计日志中。
安装
BING_WM_ALLOW_WRITES=false uvx bing-webmaster-ai-cli-mcp
这条命令会启动 stdio MCP 服务。下面每个客户端配置块都会运行相同的
uvx 命令。在 Bing Webmaster Tools 的 Settings → API Access 下创建 API 密钥,
并将其作为 BING_WM_API_KEY 传入。除非同时设置
BING_WM_ALLOW_WRITES=true,否则写入操作会先提交审核;请参阅选择写入路径。
该软件包已发布到 PyPI,名称为
bing-webmaster-ai-cli-mcp。uvx 会缓存已安装的软件包,并可能继续运行该版本;
uvx bing-webmaster-ai-cli-mcp@latest 会再次检查 PyPI,而
uvx bing-webmaster-ai-cli-mcp==0.1.4 则会固定到某个版本。本 README 跟随 main,
因此更新日志中 Unreleased 下列出的变更尚未包含在 PyPI 版本中。
从 0.1.3 起,BING_WM_ALLOW_WRITES=false 是默认值;不设置该值,上面的命令和下面的
客户端配置块也会有相同的行为。这里仍明确写出该设置:0.1.2 及更早版本的默认值是
true,因此,如果 uvx 缓存中仍保留这些版本,而未设置该值,它们就会恢复为直接写入。
要直接运行 main,请使用
uvx --from "git+https://github.com/stufently/bing-webmaster-ai-cli-mcp.git" bing-webmaster-ai-cli-mcp。
pip(Python 3.12+)会安装相同的软件包,并将 bing-wm、
bing-webmaster-ai-cli-mcp 和 bing-webmaster-ai-cli-mcp-http 放到 PATH 中——可在
虚拟环境中安装,也可以使用 pipx install bing-webmaster-ai-cli-mcp:
python -m pip install bing-webmaster-ai-cli-mcp
export BING_WM_API_KEY='…'
bing-wm sites list
支持的版本组合为 Python 3.12、3.13 和 3.14。开发环境和镜像使用
constraints.txt 中指定的确切版本;已发布的依赖则保留兼容性最低版本要求。
切勿在仓库中放入真实密钥。所有设置请参阅配置。
示例提示词
- 上周我的网站为什么点击量下降了?
- Bing 无法抓取哪些页面,原因是什么?
- 此 URL 已被编入索引吗?Bing 上次抓取它是什么时候?
- 将这个新页面提交给 Bing,但先让我审核变更。
已验证的客户端和平台
这里只列出实际运行过的内容。将 MCP 服务添加到 AI 客户端中的 其他内容都是有文档说明但未经端到端检查的配置。
| 客户端 / 运行时 | 操作系统 | 运行方式 | 状态 | 证据 |
|---|---|---|---|---|
| Claude Code 2.1 | Ubuntu 26.04 LTS,x86_64 | 从此仓库在本地构建的 Docker 镜像,stdio,选择启用直接写入 | 已验证 | 维护者主机上的日常使用记录,审计轨迹中有读取和写入记录 |
bing-wm CLI | Ubuntu 26.04 LTS,x86_64 | 相同的 Docker 镜像 | 已验证 | 维护者主机 |
| Codex CLI 0.162 | Ubuntu 26.04 LTS,x86_64 | 相同的 Docker 镜像,stdio | 已配置,但未单独检查 | 维护者主机配置 |
| Python 3.12、3.13、3.14 | Ubuntu(ubuntu-latest) | Lint、测试、stdio MCP 烟雾测试 | 已在 CI 中验证 | ci.yml |
| Docker 镜像 | Ubuntu(ubuntu-latest) | 镜像构建成功,且不会以 root 身份运行 | 已在 CI 中验证 | ci.yml,作业 container |
uvx bing-webmaster-ai-cli-mcp(PyPI 0.1.2) | Linux x86_64 | 使用 安装 中的安装方式,Docker 中的 uv 0.13 | MCP initialize 已响应,未连接客户端 | 维护者主机,2026-10-12 |
Claude Desktop(.mcpb) | macOS、Windows | 桌面扩展 | 未验证 | CI 中会构建安装包,但从未在真实的 Desktop 中安装 |
| Cursor、Windsurf、Zed | 任意 | 以下配置 | 未验证 | 仅有文档说明 |
| macOS、Windows | — | 任意客户端 | 未验证 | 这些系统上没有 CI 运行器 |
将 MCP 服务添加到 AI 客户端
下面每个 JSON 代码块都会运行与 安装 相同的 uvx 命令。
此处 BING_WM_ALLOW_WRITES 为 false(显式写出默认值),因此写入操作会先生成计划,
由你来应用。将其设为 true 可直接写入——请参阅
选择写入方式。请将此密钥保存在用户级配置中,
而不是保存在会提交的项目文件中。该服务提供 34 个 Bing 只读工具、一个本地
只读工具(bing_indexnow_key_plan)、计划检查功能,以及每个受支持操作对应的一个写入工具——
默认使用 bing_plan_<operation> 工具,或者在 BING_WM_ALLOW_WRITES=true 时使用直接写入的
bing_<operation> 工具。它不提供应用或拒绝计划的工具。更改设置后,请重启服务,
以便客户端刷新工具列表。
Claude Code
项目文件:项目根目录中的 .mcp.json。
{
"mcpServers": {
"bing-webmaster": {
"command": "uvx",
"args": [
"bing-webmaster-ai-cli-mcp"
],
"env": {
"BING_WM_API_KEY": "your-api-key",
"BING_WM_ALLOW_WRITES": "false"
}
}
}
}
或者在终端中运行:
claude mcp add bing-webmaster --scope user \
--env BING_WM_API_KEY=your-api-key --env BING_WM_ALLOW_WRITES=false \
-- uvx bing-webmaster-ai-cli-mcp
Claude Desktop
文件:claude_desktop_config.json — macOS
~/Library/Application Support/Claude/claude_desktop_config.json,Windows
%APPDATA%\Claude\claude_desktop_config.json,Linux
~/.config/Claude/claude_desktop_config.json。
{
"mcpServers": {
"bing-webmaster": {
"command": "uvx",
"args": [
"bing-webmaster-ai-cli-mcp"
],
"env": {
"BING_WM_API_KEY": "your-api-key",
"BING_WM_ALLOW_WRITES": "false"
}
}
}
}
无需编辑 JSON,即可一键安装:从
https://github.com/stufently/bing-webmaster-ai-cli-mcp/releases/latest
下载 .mcpb 并打开。Claude Desktop 会安装扩展并提示输入 API 密钥。
除非你开启 Allow direct writes,否则直接写入功能会保持关闭。关闭时,
扩展只会记录计划。应用计划需要使用 bing-wm CLI,而扩展不会将其添加到你的 PATH:
请按照安装中的说明使用 pip 安装,在该 shell 中将相同的密钥导出为
BING_WM_API_KEY,然后运行 bing-wm plan apply。
该版本包含 checksums.txt,其中列出了每个 .mcpb 的 SHA256 值。
将该文件下载到与软件包相同的目录,并在打开扩展前进行校验:
sha256sum -c --ignore-missing checksums.txt # run next to the downloaded .mcpb
在 macOS 上,筛选出软件包对应的行,并使用 shasum -a 256 -c - 进行校验。
从下一个标签版本起,每个 .mcpb 还会附带 GitHub 构建来源证明,并由发布工作流签名。
检查软件包是否由此仓库的工作流构建且之后未被替换(需要 GitHub CLI):
gh attestation verify <bundle>.mcpb --repo stufently/bing-webmaster-ai-cli-mcp
Cursor
安装后,替换 ~/.cursor/mcp.json 中的占位值。或者手动添加下面的代码块。
文件:~/.cursor/mcp.json(适用于每个项目)或 .cursor/mcp.json(仅适用于此项目)。
{
"mcpServers": {
"bing-webmaster": {
"command": "uvx",
"args": [
"bing-webmaster-ai-cli-mcp"
],
"env": {
"BING_WM_API_KEY": "your-api-key",
"BING_WM_ALLOW_WRITES": "false"
}
}
}
}
Windsurf
文件:mcp_config.json — macOS 和 Linux:~/.config/devin/mcp_config.json
(或 $XDG_CONFIG_HOME/devin/mcp_config.json),Windows:
%APPDATA%\devin\mcp_config.json。较旧的版本会读取
~/.codeium/windsurf/mcp_config.json。
{
"mcpServers": {
"bing-webmaster": {
"command": "uvx",
"args": [
"bing-webmaster-ai-cli-mcp"
],
"env": {
"BING_WM_API_KEY": "your-api-key",
"BING_WM_ALLOW_WRITES": "false"
}
}
}
}
Zed
文件:settings.json — Linux 和 macOS:~/.config/zed/settings.json。
{
"context_servers": {
"bing-webmaster": {
"command": "uvx",
"args": [
"bing-webmaster-ai-cli-mcp"
],
"env": {
"BING_WM_API_KEY": "your-api-key",
"BING_WM_ALLOW_WRITES": "false"
}
}
}
}
安装包位于 PATH 后(即完成上述 pip 安装;uvx 不会安装持久可用的命令),
也可以使用可选的 Streamable HTTP 入口点:
export BING_WM_HTTP_BEARER_TOKEN='a-random-token-of-at-least-32-characters'
bing-webmaster-ai-cli-mcp-http
它会拒绝非回环绑定地址和未经身份验证的请求。
常见问题
我的网站存在哪些抓取问题?
bing-wm crawl issues example.com --json
结果会原样保留 Bing 返回的行,并根据 Microsoft 的
UrlWithCrawlIssues.CrawlIssues 标志提供类别明细,包括重定向、4xx、5xx、robots.txt
拦截、恶意软件、DNS 和超时错误;同时按类别统计数量、按原始 HttpCode 统计数量,
并设有 other 类别,确保 Bing 返回的内容不会被丢弃。4xx 行会根据其自身的
HttpCode 进一步细分为 http_404 或 http_403,并与宽泛的 http_4xx 类别并列,
而非取而代之。Bing 没有 noindex 抓取问题标志,因此没有对应类别,本项目也不会凭空添加此类。
如何检查 Bing 是否已收录我的页面?
bing-wm index url example.com https://example.com/page
如何从命令行向 Bing 提交 URL?
启用写入后,可以提交单个 URL 或以换行分隔的文件:
bing-wm submit-url example.com https://example.com/page
bing-wm submit-urls example.com --file PATH
设置 BING_WM_ALLOW_WRITES=false 时,先创建计划并检查,然后再应用:
bing-wm plan submit-url example.com https://example.com/page
bing-wm plan submit-urls example.com --file PATH
bing-wm plan show PLAN_ID
bing-wm plan apply PLAN_ID
规划器会调用 GetUrlSubmissionQuota;配额数值不会硬编码。Bing 的方法
文档还规定,单次 SubmitUrlBatch 调用最多可提交 500 个 URL。
IndexNow 是否适用于 Google?
Google 不参与 IndexNow。目前,实时 IndexNow 注册表列出的服务有
Bing、Yandex、Seznam、Naver、Yep、Internet Archive 和 Amazonbot。通过
api.indexnow.org 提交的请求会转发给参与的搜索引擎。
生成密钥,托管显示的 UTF-8 密钥文件,然后提交:
bing-wm indexnow key example.com
bing-wm indexnow key example.com --key KEY # is the key file live yet?
bing-wm indexnow submit example.com --file PATH --key KEY
indexnow key——以及对应的 bing_indexnow_key_plan MCP 工具——只会计算并
检查。它不会与 Bing 或 api.indexnow.org 通信,因此不属于写入操作,也不需要
计划。生成的密钥只会显示一次,不会存储在任何地方:请保存它,将其托管在
显示的 URL 上,然后提交。
或者,在设置 BING_WM_ALLOW_WRITES=false 时:
bing-wm plan indexnow example.com --file PATH --key KEY
bing-wm plan apply PLAN_ID
提交前,程序会检查密钥文件的确切 URL,且不会跟随重定向。IndexNow 主机必须 使用多标签 DNS 名称,不能使用 IP 字面地址或单标签名称;密钥文件必须 仅包含密钥。超过 10,000 个 URL 的批次、含有歧义点段的路径,以及位于授权主机或密钥子路径 之外的 URL,都会在本地被拒绝。不会设置未经验证的 2,048 个字符 URL 上限,这是有意为之。IndexNow 协议要求调用方在收到非成功响应后重新提交有效请求,因此 HTTP 5xx 会使计划保持待处理状态;CLI 不会自动重试。
输出安全
锚文本、爬取问题 URL、标题、消息和查询字符串都可能由陌生人控制。共享操作层会移除控制字符和双向格式字符、截断极端值,并以
{"value": "…", "untrusted": true} 的形式返回这些字段。使用方必须将它们视为数据,而非指令。
验证密钥不会意外离开本机。GetUserSites 会在每个站点旁返回 AuthenticationCode 和 DnsVerificationCode,GetSiteRoles 会返回 DelegatedCode;持有其中任一代码的人都能在另一个 Bing 账户中认领该站点。所有响应都会将这三项替换为 [redacted: verification secret]。查看代码的唯一方式,是由操作员在 bing-wm sites list|show|roles 或 bing-wm plan show|list|apply 中输入 --reveal-verification-codes。没有任何 MCP 工具接受该参数,因此模型以及模型读到的任何文本都无法索取代码。
脱敏是输出边界上的处理,而非读取路径中的步骤。同一过滤器还会处理写入操作的结果、计划记录的参数——add_site_roles 计划会保存它要发送的 authentication_code,但查看计划不会显示该代码——以及 Bing 自身的错误文本,以防 Bing 在错误中回显它拒绝的代码。需要隐藏的字面值来自请求正文,因此无论秘密下次出现在哪个字段,都不必靠任何人预测。磁盘上的计划记录会保留真实值;计划若丢失代码,就无法执行。
API 密钥也会在同一边界受到保护,并使用专属标记 [redacted: API credential]。Microsoft 仅将密钥记录为查询字符串参数,因此每个请求 URL 都携带有效凭据——否则,代理在说明无法访问哪个地址时,或 Bing 在错误中回显请求时,都可能将该 URL 写入错误消息、终端和审计记录。不包含凭据的错误,其内容与以往完全相同。
空答案绝不会被呈现为测量结果。有些较旧的端点会对明显有数据的账户返回空集合:某站点的 bing_crawl_stats 在同一分钟报告有 1700 个入站链接,但 bing_link_counts、bing_crawl_issues 和 bing_fetched_urls 都返回了空结果。未返回任何行的读取操作会在 MCP 的 result 旁附带 empty_response: {rows_returned: 0, measured: false, note: …},并在 CLI 中将说明打印到 stderr,因此“Bing 没有返回内容”不会被误报为“未发现问题”。返回单条记录的读取操作——bing_url_info、bing_crawl_settings、配额以及 bing_keyword——不会被标记:单条记录中的数组(例如 CrawlRate)是该记录的字段,而不是 Bing 隐去的行。bing_url_info 会在一个字段中标明同样的陷阱:HttpStatus: 0 表示 Bing 未报告状态,而非 200;该行会通过 http_status_reported 说明这一点。
覆盖范围和参考资料
Microsoft 接口包含 62 个方法:其中 59 个在此受支持,另有 3 个已过时的深层链接方法被有意排除。关键词研究是独立功能,因为其官方签名不包含站点参数。内容提交功能仍包含在 Microsoft 当前接口中,因此也予以提供;特定账户是否符合账户侧资格,只能由 Bing 确认。
许可证
MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。