mcpField
B
Bing Webmaster AI CLI MCP

Bing Webmaster AI CLI MCP

本地服务
github.com/stufently商业与营销15 天前更新

关于 Bing Webmaster AI CLI MCP

bing-webmaster-ai-cli-mcp 提供 Python 命令行工具和 MCP 服务,用于读取 Bing Webmaster Tools 数据并提交更改。它面向网站运营者和 AI Agent;写入默认先生成计划供人工审核和应用,直接写入需明确启用。

主要功能

  1. 01读取流量、索引、抓取问题、链接和关键词
  2. 02默认采用审核后应用的计划式写入
  3. 03可选择启用直接写入
  4. 04追加式审计记录和持久化计划
  5. 05支持 IndexNow 提交

适用场景

  1. 01检查 Bing 流量和搜索查询
  2. 02排查抓取问题并检查索引状态
  3. 03应用前审核 URL 提交计划
  4. 04通过 IndexNow 向 Bing 提交 URL

MCP 相关

MCP 服务提供 Bing Webmaster 读取工具、本地 IndexNow 密钥规划工具、计划检查和写入工具。默认写入工具只创建计划,需通过命令行应用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"stufently-bing-webmaster-ai-cli": {
"command": "uvx",
"args": [
"bing-webmaster-ai-cli-mcp"
],
"env": {
"BING_WM_API_KEY": "<BING_WM_API_KEY>",
"BING_WM_ALLOW_WRITES": "<BING_WM_ALLOW_WRITES>"
}
}
}
}
启动命令uvx bing-webmaster-ai-cli-mcp
需要配置的环境变量
BING_WM_API_KEY密钥API key from Bing Webmaster Tools Settings > API Access
BING_WM_ALLOW_WRITESSet to true to enable one-step writes; unset or false keeps plan-and-apply

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypibing-webmaster-ai-cli-mcp0.1.4

工具

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.1Ubuntu 26.04 LTS,x86_64从此仓库在本地构建的 Docker 镜像,stdio,选择启用直接写入已验证维护者主机上的日常使用记录,审计轨迹中有读取和写入记录
bing-wm CLIUbuntu 26.04 LTS,x86_64相同的 Docker 镜像已验证维护者主机
Codex CLI 0.162Ubuntu 26.04 LTS,x86_64相同的 Docker 镜像,stdio已配置,但未单独检查维护者主机配置
Python 3.12、3.13、3.14Ubuntu(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.13MCP 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

将 bing-webmaster 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。