Bing MCP Server
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
A hosted Model Context Protocol (MCP) server that gives Claude, Cursor, Windsurf and any other MCP client one read-only Bing tool. Run a Bing search from a chosen country, market, language and device, and get the organic results, the ad block and the Copilot answer as structured JSON, with no Azure subscription and nothing to host.
It reads the Bing results page a signed-out visitor sees.
**1,000 free credits every month, no card required**, which is 100 Bing calls at the 10-credit rate.
- Prompts and resources
Contents
- What you need
- Quick start
- Example prompts
- Tools
- Errors and failure paths
- Pricing, free tier and limits
- How it compares
- FAQ
- HasData links
- Development
- Contributing
- License
What you need
An MCP client and a HasData API key from the dashboard, free to create with no card, and the free tier covers about 100 calls a month at the 10-credit rate. This is a remote server, so the simplest path is a URL and an x-api-key header, with no container to run. A client that only speaks stdio reaches it through a thin launcher, published as @hasdata/bing-mcp on npm and hasdata-bing-mcp on PyPI, shown below.
Quick start
The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.
| Field | Value |
| :--- | :--- |
| URL | https://mcp.hasdata.com/mcp?apis=bing |
| Transport | HTTP, streamable |
| Auth header | x-api-key: HASDATA_API_KEY |
Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.
Claude Code
Claude Desktop
Settings, then Connectors, then Add custom connector, then paste https://mcp.hasdata.com/mcp?apis=bing and sign in.
For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The @hasdata/bing-mcp package is that launcher, and it reads the key from the environment. Add this to claude_desktop_config.json:
For Python instead of Node, swap the launcher for the PyPI package, which uvx runs without a manual install:
Cursor
~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
Windsurf
~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:
VS Code
.vscode/mcp.json in the workspace:
Example prompts
- Search Bing for python web scraping tutorials and list the top ten sources.
- Who is advertising against the query "best crm software" on Bing right now?
- What does Bing Copilot answer for this query, and which pages does it cite?
- Run this query from Germany in German and compare the results with the US ones.
- Show me pages Bing indexed for this query in the past week.
- Search this query as a mobile user and tell me whether the ranking differs from desktop.
One call answers each of these. Paging to the second and third page of results takes one more call each.
Tools
| Tool | What it returns |
| --- | --- |
| hasdata_bing_serp_getSearchResults | Organic results (title, url, snippet, displayed url, position), related searches, answer boxes/knowledge panels, and pagination metadata. 10 credits a call |
One tool, 10 credits per successful call.
Get Bing search results
hasdata_bing_serp_getSearchResults
One Bing results page.
| Parameter | Type | Required | Notes |
| :--- | :--- | :--- | :--- |
| q | string | yes | The search term |
| location | string | | Free-text origin, such as Austin, Texas. Resolved to coordinates |
| lat / lon | string | | GPS origin. Takes precedence over location |
| mkt | string | | Market, one of 38, such as en-gb or de-de |
| cc | string | | Country, one of 36, such as gb or de |
| setLang | string | | Interface and preferred result language, one of 39 |
| safeSearch | string | | off, moderate or strict |
| deviceType | string | | desktop, mobile or tablet |
| filters | string | | A Bing filter string, such as ex1:"ez2" for the past week |