Skip to main content
Glama
skiddgoddamn

bing-seo-mcp

by skiddgoddamn
README.md
<div align="center">

# πŸ…±οΈ bing-seo-mcp

**The full Bing Webmaster Tools API for AI agents β€” over one MCP server.**

Sites &amp; verification Β· URL submission Β· Sitemaps Β· Traffic &amp; crawl stats Β· Keyword research Β· URL blocking

[![npm version](https://img.shields.io/npm/v/bing-seo-mcp?color=cb3837&logo=npm)](https://www.npmjs.com/package/bing-seo-mcp)
[![npm downloads](https://img.shields.io/npm/dm/bing-seo-mcp?color=cb3837&logo=npm)](https://www.npmjs.com/package/bing-seo-mcp)
[![node](https://img.shields.io/node/v/bing-seo-mcp?logo=node.js&logoColor=white)](https://nodejs.org)
[![license](https://img.shields.io/npm/l/bing-seo-mcp?color=blue)](./LICENSE)
[![MCP](https://img.shields.io/badge/Model_Context_Protocol-stdio-6E56CF)](https://modelcontextprotocol.io)

</div>

---

A [Model Context Protocol](https://modelcontextprotocol.io) server that lets Claude (and any MCP client) drive **Bing Webmaster Tools** end to end β€” manage and verify sites, push URLs for indexing, submit sitemaps, pull traffic / query / crawl stats, research keywords, and block URLs. Auth is a single **API key** β€” paste it once and you're running.

## ✨ Highlights

- 🌐 **Sites &amp; verification** β€” list, add, verify, inspect roles
- πŸ“€ **URL submission** β€” single, batch, full-content, with live quota
- πŸ—ΊοΈ **Sitemaps** β€” list and submit feeds
- πŸ“ˆ **Stats** β€” rank &amp; traffic, queries, pages, crawl stats &amp; issues
- πŸ”‘ **Keyword research** β€” keyword and related-keyword data
- 🚫 **URL blocking** β€” block pages/directories and deep links
- πŸ” **One-key auth** β€” validated on save, stored locally
- πŸ›‘οΈ **Safety rails** β€” read-only mode and per-call confirm guards

## πŸ“¦ Installation

Run straight from npm with `npx` (no install needed), or build from source:

```bash
# from source
git clone https://github.com/skiddgoddamn/bing-seo-mcp
cd bing-seo-mcp
npm install && npm run build
```

## πŸ”Œ Connect to your MCP client

Add to your MCP config (e.g. `~/.claude.json` or `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "bing-seo": {
      "command": "npx",
      "args": ["-y", "bing-seo-mcp"],
      "env": { "BING_API_KEY": "" }
    }
  }
}
```

<details>
<summary>Or point at a local build</summary>

```json
{
  "mcpServers": {
    "bing-seo": {
      "command": "node",
      "args": ["F:/projects/bing-seo-mcp/build/index.js"]
    }
  }
}
```
</details>

## πŸ”‘ Get your API key

1. Sign in at [Bing Webmaster Tools](https://www.bing.com/webmasters/)
2. Go to **Settings β†’ API access β†’ API Key**
3. Copy the key β€” set it via the `b_set_apikey` tool or the `BING_API_KEY` env var

## πŸš€ Setup flow

| Step | Tool | What happens |
|------|------|--------------|
| 1 | `b_set_apikey` | Save your key β€” validated against the live API before it's stored |
| 2 | `bing_sites_get` | List your verified sites |
| βœ“ | `b_auth_status` | Check whether the key is configured and valid |

## βš™οΈ Environment variables

| Variable | Default | Description |
|---|---|---|
| `BING_API_KEY` | β€” | Fallback API key (a saved key takes precedence) |
| `BING_MCP_CONFIG_DIR` | `~/.bing-seo-mcp` | Override the config directory |
| `B_READONLY` | `false` | Block every mutating tool (`_add` `_submit` `_remove` `_block` `_verify`) |
| `B_CONFIRM` | `false` | Require a `confirm=true` argument on mutating calls |
| `B_LOG_LEVEL` | `INFO` | `DEBUG` Β· `INFO` Β· `WARNING` Β· `ERROR` |
| `B_LOG_BODIES` | `false` | Log request/response bodies to stderr (verbose) |
| `B_LOG_FILE` | β€” | Append log lines to a file (default: stderr only) |

See [`.env.example`](./.env.example) for a ready-to-copy template.

## 🧰 Tool reference

### πŸ” Auth
| Tool | Description |
|---|---|
| `b_auth_status` | Show whether an API key is configured and valid |
| `b_set_apikey` | Save and validate the Bing Webmaster API key |

### 🌐 Site management
| Tool | Description |
|---|---|
| `bing_sites_get` | List all sites for the authenticated user |
| `bing_site_add` | Add a site to the account |
| `bing_site_verify` | Trigger ownership verification for a site |
| `bing_site_roles` | Get roles/owners of a site |

### πŸ“€ URL submission
| Tool | Description |
|---|---|
| `bing_submit_url` | Submit a single URL for indexing |
| `bing_submit_url_batch` | Submit multiple URLs in one batch |
| `bing_submit_content` | Submit a URL with its full HTTP content |
| `bing_url_quota` | Daily/monthly URL submission quota |

### πŸ—ΊοΈ Sitemaps
| Tool | Description |
|---|---|
| `bing_sitemaps_get` | List submitted sitemaps/feeds for a site |
| `bing_sitemap_submit` | Submit a sitemap/feed URL |

### πŸ“ˆ Stats &amp; analytics
| Tool | Description |
|---|---|
| `bing_rank_traffic_stats` | Rank and traffic stats for a site |
| `bing_query_stats` | Search query stats for a site |
| `bing_page_stats` | Per-page traffic stats |
| `bing_page_query_stats` | Query stats for a specific page |
| `bing_crawl_stats` | Crawl stats for a site |
| `bing_crawl_issues` | Crawl issues/errors for a site |

### πŸ”‘ Keywords
| Tool | Description |
|---|---|
| `bing_keyword_get` | Impression data for an exact keyword |
| `bing_related_keywords` | Related keywords for a query |

### 🚫 URL blocking
| Tool | Description |
|---|---|
| `bing_blocked_urls_get` | List blocked URLs for a site |
| `bing_block_url_add` | Block a URL or directory from Bing search |
| `bing_block_url_remove` | Remove a URL block |
| `bing_deep_link_block` | Add a deep link block |

## πŸ›‘οΈ Safety rails

- **`B_READONLY=true`** β€” blocks every tool whose name contains `_add` `_submit` `_remove` `_block` `_verify`. Reads still work.
- **`B_CONFIRM=true`** β€” mutating tools return a preview and require a follow-up call with `confirm: true`.

## πŸ“„ License

MIT Β© [skiddgoddamn](https://github.com/skiddgoddamn)

TDQS

B3.2/5.0

Scored across 24 tools

Disambiguation5/5

Each tool targets a specific operation (auth, site management, URL submission, sitemaps, stats, keywords, blocking) with clear boundaries. Even similar tools like submit_url, submit_url_batch, and submit_content are differentiated by their purpose and input.

Naming Consistency4/5

Most tools follow a 'bing_<domain>_<action>' pattern, but there are minor inconsistencies: plural vs singular (bing_sites_get vs bing_site_add) and verb placement (bing_site_verify vs bing_verify? Actually consistent) but overall pattern is recognizable.

Tool Count4/5

24 tools is on the higher end but justified by the broad scope of Bing Webmaster Tools (auth, sites, URLs, sitemaps, analytics, keywords, blocking). Each tool provides distinct functionality, so no obvious bloat.

Completeness5/5

The tool surface covers the full lifecycle of Bing SEO: authentication, site management (add, verify, roles), URL submission (single, batch, content), sitemaps, analytics, keywords, and blocking. Only minor gaps like site deletion or sitemap removal, but likely not supported by API.

Maintenance

ActivitySlowing
ResponsivenessNo issues