npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

bing-webmaster-mcp

v0.1.1

Published

MCP server (stdio) for Bing Webmaster Tools: query/page stats, sitemaps, URL submission + IndexNow, crawl diagnostics, keyword & link research

Downloads

340

Readme

bing-webmaster-mcp

MCP server (stdio) for Bing Webmaster Tools: search performance, sitemaps, URL submission, IndexNow, crawl diagnostics, keyword volumes and inbound links, for Claude Code, Claude Desktop, Cursor and any other MCP client.

Plain Node.js, two dependencies, no build step. The only network calls go to ssl.bing.com and api.indexnow.org.

Tools

| Tool | What it answers / does | | -------------------- | -------------------------------------------------------------------------------------- | | list_sites | Which sites can this API key see, and are they verified? | | query_stats | Top Bing search queries: impressions / clicks / position | | page_stats | Top pages by Bing search traffic | | rank_traffic_stats | Daily Bing impressions / clicks trend | | list_sitemaps | Submitted sitemaps with status and URL counts | | submit_sitemap | (Re)submit a sitemap URL | | remove_sitemap | Remove a submitted sitemap (the file itself is untouched) | | url_info | What Bing knows about one URL: discovery, last crawl, HTTP status | | submit_urls | Push up to 500 URLs into Bing's crawl queue; response includes the remaining quota | | indexnow | Instant, quota-free "URL added/updated" ping to the IndexNow network (Bing, Yandex, …) | | crawl_stats | Bingbot activity: pages crawled, HTTP code buckets, robots blocks | | crawl_issues | Concrete URLs with crawl problems and their HTTP codes | | keyword_research | Bing search volumes for a term in a market; related: true → related keywords | | backlinks | Inbound-link counts per page; with url, the linking pages + anchor texts |

Every site-scoped tool takes an optional siteUrl. When omitted it uses the BING_SITE_URL environment variable. Pass the site exactly as it is registered in Bing Webmaster Tools. For a domain-scoped property that is the apex (https://example.com/), and URLs on its subdomains are accepted by the submission tools.

Responses are JSON. Bing's {"d": …} wrapper and WCF /Date(ms)/ timestamps are normalized before the tool returns.

Setup

1. Get an API key

  1. Sign in to Bing Webmaster Tools with the account that owns the verified site.
  2. Open Settings → API Access, accept the terms and click Generate API Key. One key per user; it covers all the user's verified sites.

Without a key the server still starts and registers its tools; every call answers with these setup steps instead of data.

2. Add the server to your client

Claude Code (.mcp.json in the project, or claude mcp add):

{
  "mcpServers": {
    "bing-webmaster": {
      "command": "npx",
      "args": ["-y", "bing-webmaster-mcp"],
      "env": {
        "BING_API_KEY": "your-api-key",
        "BING_SITE_URL": "https://example.com/"
      }
    }
  }
}

Claude Desktop (claude_desktop_config.json) and Cursor (.cursor/mcp.json) take the same block.

If the config file is committed to version control, keep the key out of it: save the key in a file outside the repo and set BING_API_KEY_FILE to its path instead of BING_API_KEY.

3. IndexNow (optional)

The IndexNow protocol verifies ownership by fetching https://<your-host>/<key>.txt, so the key is public by design.

  1. Generate a key: 8–128 characters of a-z, A-Z, 0-9 and -.
  2. Host it as <key>.txt at the root of the site (it must return the key as plain text).
  3. Keep a local copy of that file and set INDEXNOW_KEY_FILE to its path. The file name must match its content.

If the key file is not yet reachable, the indexnow tool returns the 403 explanation instead of a bare error.

Environment

| Variable | Meaning | | ------------------- | -------------------------------------------------------------------------------------------------------------------------------- | | BING_API_KEY | The API key. Overrides BING_API_KEY_FILE. | | BING_API_KEY_FILE | Path to a file containing the API key. Relative paths resolve from the process working directory. | | BING_SITE_URL | Default site for every site-scoped tool, as registered in Bing Webmaster Tools. | | INDEXNOW_KEY_FILE | Path to your local copy of the IndexNow key file (<key>.txt). | | INDEXNOW_SITE_URL | The host that serves the key file, when it differs from BING_SITE_URL (e.g. property on the apex, site served on www). Governs the indexnow tool's origin check and key location. |

Development

npm install
npm test            # node --test — offline, network mocked
node server.mjs     # run manually (stdio; speaks MCP JSON-RPC)

server.mjs wires the MCP tools, lib.mjs holds the pure validation and shaping helpers (unit-tested), and bing.mjs is the only file that talks to the network.

License

MIT