Bing Webmaster Tools MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bing Webmaster Tools MCP Top 20 Bing queries by clicks for my site last month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bing Webmaster Tools MCP
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
Claude Desktop — one click (recommended)
Download the latest
bing-webmaster-tools-mcp-x.y.z.mcpbfrom Releases.Double-click it (or drag it onto Claude Desktop, or use Settings → Extensions → Install extension…).
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-mcpAdd --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 |
| Sites on the account and whether they are verified | GetUserSites |
| Clicks, impressions, CTR and position per query | GetQueryStats |
| Same, per URL | GetPageStats |
| URLs that rank for a query | GetQueryPageStats |
| Queries that lead to a URL | GetPageQueryStats |
| Site-wide clicks and impressions over time | GetRankAndTrafficStats |
| One query over time | GetQueryTrafficStats |
| Daily crawl data: crawled, errors, indexed, blocked… | GetCrawlStats |
| URLs with crawl issues | GetCrawlIssues |
| Index status of a URL | GetUrlInfo |
| Traffic for a URL | GetUrlTrafficInfo |
| Submitted sitemaps and their status | GetFeeds |
| Pages with inbound links | GetLinkCounts |
| Links and anchors pointing to a URL | GetUrlLinks |
| Historical Bing impressions for a keyword | GetKeywordStats |
| Related keywords | GetRelatedKeywords |
| 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 |
| In Claude Desktop's settings, as a field marked sensitive; never in a file you edit | ✅ Recommended |
Claude Code ( | Plain text in your personal Claude Code config | OK on a computer only you use |
Manual | Plain text in that file | Works, but anyone with the file sees the key |
Claude Code with | Plain text in | ⚠️ 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
.mcpbonly 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 |
"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 |
Tools don't appear (manual config) | Check |
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 testsContributions 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 toolsget_crawl_issuesCrawl issuesBRead-only
URLs with crawl issues detected by Bingbot (error codes, malware, etc.).
Inputs: siteUrl (required), limit.
get_crawl_statsCrawl statsCRead-only
Daily crawl data: pages crawled, crawl errors, pages in index, blocked by robots.txt, etc.
Inputs: siteUrl (required), endDate, startDate.
get_inbound_link_countsPages with inbound linksBRead-only
Site pages that receive external links and how many, according to Bing. Paginated.
Inputs: siteUrl (required), page.
get_inbound_linksInbound links to a URLARead-only
External links pointing to one URL of the site, with anchor text. Paginated.
Inputs: link (required), siteUrl (required), page.
get_keyword_statsKeyword historyARead-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 queryBRead-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 pageBRead-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 pageARead-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 queryARead-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 trendBRead-only
Time series of clicks and impressions for one query in Bing.
Inputs: query (required), siteUrl (required), endDate, startDate.
get_sitemapsSitemapsBRead-only
Submitted sitemaps and feeds: status, URLs discovered, last crawl and errors.
Inputs: siteUrl (required).
get_traffic_trendTraffic trendARead-only
Time series of clicks and impressions for the whole site in Bing.
Inputs: siteUrl (required), endDate, startDate.
get_url_infoURL index statusBRead-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 quotaBRead-only
How many URLs the site can still submit to Bing today and this month.
Inputs: siteUrl (required).
get_url_traffic_infoURL trafficBRead-only
Clicks and impressions for one URL according to Bing's index.
Inputs: url (required), siteUrl (required).
list_sitesList sitesARead-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
Scored across 17 tools
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.
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.
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.
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
Related MCP Connectors
Google Search Console, Bing, GA4 and SEO reports for Claude, ChatGPT and any MCP client
Google Search Console, GA4 and Bing Webmaster data for SEO and AI-search work. 20 read-only tools.
SEO research, Search Console, GA4 and PPC tools for Claude and ChatGPT.
Read-only Google Ads, GA4 and Search Console data for Claude, with no Google Cloud setup.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables querying Google Search Console data, including search analytics, indexing status, and sitemap management, through natural language conversations with Claude.155 npm6MIT
- AlicenseBqualityCmaintenanceProvides AI agents full access to Bing Webmaster Tools API for site management, URL submission, sitemaps, traffic stats, keyword research, and URL blocking.2410 npm1MIT
- AlicenseAqualityBmaintenanceBing 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.6356 PyPI1MIT
- AlicenseAqualityCmaintenanceEnables 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.6MIT