Bing search results with the ad block and Copilot answer, geo and market targeting, as JSON.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.
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.
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.
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.
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/mcp.json for every project, or .cursor/mcp.json for one:
~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:
.vscode/mcp.json in the workspace:
One call answers each of these. Paging to the second and third page of results takes one more call each.
| 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.
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 | |
first | number | Result offset, 1 for the first page, 11 for the second |
Returns organicResults always, plus ads and copilotSearch when the page carries them.
An organic result has position, title, link, displayedLink, source and snippet.
ads appears on commercial queries and carries position, blockPosition, title, link, source, displayedLink, description and sitelinks. Six ads came back for best crm software and none for weather.
copilotSearch appears when Bing puts its AI answer on the page. It holds textBlocks, a sequence of typed blocks where a heading carries a snippet and a list carries an array of them, and references, the pages the answer cites.
Plan for these rather than assuming a happy path.
The result count is not ten and does not hold still. The same query returned 6 organic results on one call and 14 on another, because Bing decides how much of the page to give to ads and to Copilot. Read the array length rather than assuming a page size, and do not compute a rank position by multiplying page number by ten.
ads and copilotSearch are absent rather than empty when the page has neither. Test for the key before you read it. A query like weather came back with organic results alone.
An ad link is a Bing click tracker, not the advertiser's URL. It points at bing.com/aclk with the destination encoded inside. Read displayedLink for the domain that was advertising, and treat the tracker as a click-through rather than as a page address.
lat and lon override location. Sending all three silently ignores the free text. Send one or the other.
mkt, cc and setLang are three separate axes. The market decides which Bing index answers, the country code decides the origin, and the language decides the interface and the preferred result language. Setting only one moves the results less than you expect.
filters is a raw Bing filter string. The date options are documented, ex1:"ez1" for the past day through ex1:"ez3" for the past month. For anything else, run the search in a browser and copy the parameter out of the Bing URL, because the values are Bing's rather than ours.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/hasdata-bing)<a href="https://allmcps.com/mcp/hasdata-bing"><img src="https://allmcps.com/api/badge/hasdata-bing?style=directory" alt="HasData Bing on AllMCPs" /></a>