Skip to main content
Glama
Bing Webmaster Tools MCP

Bing Webmaster Tools MCP

Bing Webmaster Tools MCP

CI npm License: MIT

English · Español

A local MCP server that lets Claude query your Bing Webmaster Tools data in plain language:

"Which queries brought me the most Bing clicks last month?" "Which pages have crawl errors?" "Who links to this URL, and with what anchor text?"

  • Runs on your computer. Claude starts it locally and it talks straight to the official Bing Webmaster API. No servers, no accounts, nothing in between.

  • Your own API key. It stays on your machine (stored by Claude Desktop as a sensitive setting, or in your own config).

  • Read-only. It never submits URLs, edits sitemaps or changes settings.

  • No dependencies. A single bundled file; Claude Desktop needs nothing else installed.

1. Get your Bing Webmaster Tools API key

Bing Webmaster Tools → Settings (gear icon) → API access → API Key → Generate, and copy it. One key covers every verified site on that account. If you regenerate it, update it in Claude too.

Related MCP server: bing-seo-mcp

2. Install

  1. Download the latest bing-webmaster-tools-mcp-x.y.z.mcpb from Releases.

  2. Double-click it (or drag it onto Claude Desktop, or use Settings → Extensions → Install extension…).

  3. Paste your API key when asked, and enable the extension.

Claude Desktop runs the extension with its own built-in Node.js, so you don't have to install anything.

Claude Desktop — manual config

The same way you'd add any other local MCP server. Requires Node.js 20 or newer. Open Settings → Developer → Edit Config and add this inside "mcpServers":

{
  "mcpServers": {
    "bing-webmaster": {
      "command": "npx",
      "args": ["-y", "bing-webmaster-tools-mcp"],
      "env": { "BING_WEBMASTER_API_KEY": "your-api-key" }
    }
  }
}

Save and restart Claude Desktop.

Claude Code

claude mcp add bing-webmaster -e BING_WEBMASTER_API_KEY=your-api-key -- npx -y bing-webmaster-tools-mcp

Add --scope user to make it available in every project.

Other MCP clients (Cursor, VS Code, Windsurf…)

Use the same command, args and env as in the manual config above, in that client's MCP settings.

3. Use it

Start a new chat and ask. Good first prompts:

  • List my Bing Webmaster sites.

  • Top 20 queries by clicks on https://example.com/ in the last 3 months, with CTR and position.

  • Which queries have many impressions but CTR under 1%?

  • Compare Bing clicks for /blog/ pages in August vs September.

  • Show crawl issues and sitemap errors for my site.

Tools

Tool

Returns

Bing API method

list_sites

Sites on the account and whether they are verified

GetUserSites

get_query_stats

Clicks, impressions, CTR and position per query

GetQueryStats

get_page_stats

Same, per URL

GetPageStats

get_pages_for_query

URLs that rank for a query

GetQueryPageStats

get_queries_for_page

Queries that lead to a URL

GetPageQueryStats

get_traffic_trend

Site-wide clicks and impressions over time

GetRankAndTrafficStats

get_query_trend

One query over time

GetQueryTrafficStats

get_crawl_stats

Daily crawl data: crawled, errors, indexed, blocked…

GetCrawlStats

get_crawl_issues

URLs with crawl issues

GetCrawlIssues

get_url_info

Index status of a URL

GetUrlInfo

get_url_traffic_info

Traffic for a URL

GetUrlTrafficInfo

get_sitemaps

Submitted sitemaps and their status

GetFeeds

get_inbound_link_counts

Pages with inbound links

GetLinkCounts

get_inbound_links

Links and anchors pointing to a URL

GetUrlLinks

get_keyword_stats

Historical Bing impressions for a keyword

GetKeywordStats

get_related_keywords

Related keywords

GetRelatedKeywords

get_url_submission_quota

Remaining URL submission quota

GetUrlSubmissionQuota

Performance tools accept startDate, endDate, aggregate, sortBy, limit and contains. By default they sum every week in the period into one row per query or page (CTR included, position weighted by impressions) and return the top 50 by clicks, so a conversation isn't flooded with raw rows.

Where it works

It's a local connector: it runs on the computer where Claude Desktop or Claude Code is installed. On its own it isn't available on claude.ai in the browser or in the mobile apps, which can only reach connectors hosted on the internet.

Keeping your API key safe

The connector is read-only, but the Bing API key itself is not: the same key can submit URLs, remove sites from your account or grant other people access. Treat it like a password.

Where the key ends up, from safest to least safe:

Method

Where the key is stored

Recommendation

.mcpb extension (Claude Desktop)

In Claude Desktop's settings, as a field marked sensitive; never in a file you edit

✅ Recommended

Claude Code (claude mcp add -e …, user or local scope)

Plain text in your personal Claude Code config

OK on a computer only you use

Manual claude_desktop_config.json

Plain text in that file

Works, but anyone with the file sees the key

Claude Code with --scope project

Plain text in .mcp.json inside the project

⚠️ Avoid: easy to commit to Git by mistake

If you need a project-level config, reference an environment variable instead of the key itself; Claude Code expands it at runtime:

"env": { "BING_WEBMASTER_API_KEY": "${BING_WEBMASTER_API_KEY}" }

Good habits:

  • Never paste the key into a chat with Claude or any other AI. Put it only in the settings field or config.

  • Install the .mcpb only from this repository's Releases page, where GitHub builds it from the published code.

  • If you think the key leaked, regenerate it in Bing Webmaster Tools: the old one stops working immediately. Bing allows one key per user, so update it everywhere you use it.

What this server does with it: the key is only sent to ssl.bing.com over HTTPS, as the official API requires. It's never logged or included in tool output. Report vulnerabilities privately: see SECURITY.md.

Troubleshooting

Symptom

Fix

"BING_WEBMASTER_API_KEY is not set"

Add the key in the extension settings, or in env in your config.

"InvalidApiKey" / key rejected

Copy the key again from Bing, or generate a new one and update it.

Errors for one specific site

Use the exact URL from list_sites, including https:// and the trailing /.

Tools don't appear (manual config)

Check node --version is 20+, then restart Claude Desktop. Logs: Settings → Developer.

Known limitations

  • Bing's AI Performance report (Copilot citations) has no public API, so it isn't available here.

  • Bing reports performance data per week, not per day, and keeps less history than Google Search Console.

  • Bing currently doesn't report the average click position (the API returns -1), so only the average impression position is shown.

  • Responses are capped at 200 rows; ask Claude to filter (contains, dates) or aggregate instead of pulling everything.

Development

npm install
npm run build        # dist/index.js
npm run typecheck
npm test             # unit tests
npm run test:e2e     # runs the built server over stdio against a fake Bing API
npm run pack         # builds the Claude Desktop extension (.mcpb)
src/index.ts      Entry point (stdio)
src/server.ts     MCP server and its 17 tools
src/bing.ts       Bing Webmaster JSON API client
src/stats.ts      Aggregation, filtering and sorting of performance rows
manifest.json     Claude Desktop extension manifest
scripts/          Build and .mcpb packaging
test/             Unit and end-to-end tests

Contributions are welcome — see CONTRIBUTING.md.

License

MIT © Rafa Villaplana. Not affiliated with Microsoft or Anthropic. Bing is a trademark of Microsoft; Claude is a trademark of Anthropic.

Available Tools

17 tools
get_crawl_issuesCrawl issuesB
Read-only

URLs with crawl issues detected by Bingbot (error codes, malware, etc.).

Inputs: siteUrl (required), limit.

get_crawl_statsCrawl statsC
Read-only

Daily crawl data: pages crawled, crawl errors, pages in index, blocked by robots.txt, etc.

Inputs: siteUrl (required), endDate, startDate.

get_keyword_statsKeyword historyA
Read-only

Historical Bing impressions for a keyword (keyword research; not tied to your site).

Inputs: q (required), country, language.

get_pages_for_queryPages for a queryB
Read-only

Which URLs of the site show up in Bing for a given query, with their clicks and impressions.

Inputs: query (required), siteUrl (required), limit, sortBy, +3 more.

get_page_statsPerformance by pageB
Read-only

Clicks, impressions, CTR and average position per URL of the site in Bing (top pages). By default rows are summed per URL over the period.

Inputs: siteUrl (required), limit, sortBy, endDate, +3 more.

get_queries_for_pageQueries for a pageA
Read-only

Which queries bring Bing traffic to a given URL, with clicks, impressions, CTR and position.

Inputs: page (required), siteUrl (required), limit, sortBy, +4 more.

get_query_statsPerformance by queryA
Read-only

Clicks, impressions, CTR and average position per search query in Bing. Bing keeps weekly data for recent months; by default rows are summed per query over the period.

Inputs: siteUrl (required), limit, sortBy, endDate, +3 more.

get_query_trendQuery trendB
Read-only

Time series of clicks and impressions for one query in Bing.

Inputs: query (required), siteUrl (required), endDate, startDate.

get_sitemapsSitemapsB
Read-only

Submitted sitemaps and feeds: status, URLs discovered, last crawl and errors.

Inputs: siteUrl (required).

get_traffic_trendTraffic trendA
Read-only

Time series of clicks and impressions for the whole site in Bing.

Inputs: siteUrl (required), endDate, startDate.

get_url_infoURL index statusB
Read-only

Index information for one URL: HTTP status, discovery and last crawl dates, size, document links…

Inputs: url (required), siteUrl (required).

get_url_submission_quotaURL submission quotaB
Read-only

How many URLs the site can still submit to Bing today and this month.

Inputs: siteUrl (required).

get_url_traffic_infoURL trafficB
Read-only

Clicks and impressions for one URL according to Bing's index.

Inputs: url (required), siteUrl (required).

list_sitesList sitesA
Read-only

Lists the user's sites in Bing Webmaster Tools and whether each is verified. Call this first to get the exact siteUrl.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 17 tools

    Disambiguation4/5

    Most tools target a clearly distinct dimension (queries, pages, crawls, links, sitemaps, trends), and descriptions explicitly disambiguate the risky pairs like get_query_stats vs get_queries_for_page and get_page_stats vs get_pages_for_query. The only mild overlap is get_inbound_links vs get_inbound_link_counts (per-URL link detail vs per-page counts) and get_url_info vs get_url_traffic_info, but both pairs are still distinguishable from their descriptions.

    Naming Consistency5/5

    Every tool follows a consistent verb_noun snake_case pattern, overwhelmingly get_* with a single list_sites. The noun phrases are descriptive and predictable across the whole set.

    Tool Count4/5

    17 tools is slightly above the ideal range for a single-domain server, but the domain (a full webmaster analytics API) is broad and each tool maps to a distinct report or entity. None feel like filler, so it justifies its weight without being bloated.

    Completeness4/5

    Coverage is strong across analytics (queries, pages, trends), crawl diagnostics, sitemaps, links, and keyword research. The main gap is action-oriented operations like URL submission and sitemap submission: get_url_submission_quota hints at submission but no submit tool exists, leaving a write-side dead end.

    Maintenance

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables querying Google Search Console data, including search analytics, indexing status, and sitemap management, through natural language conversations with Claude.
      155 npm
      6
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Provides AI agents full access to Bing Webmaster Tools API for site management, URL submission, sitemaps, traffic stats, keyword research, and URL blocking.
      24
      10 npm
      1
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Bing Webmaster Tools and IndexNow for AI agents: traffic, indexing, crawl issues, inbound links, keywords. Direct writes are off by default; changes go through a plan a person applies.
      63
      56 PyPI
      1
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables Claude to query Google Search Console performance data, inspect URL indexing status, submit URLs via IndexNow, and check title and meta-description lengths against Bing limits directly in chat.
      6
      MIT