What the Beamfar MCP server is
MCP, the Model Context Protocol, is the open standard AI assistants use to call tools on a service. The Beamfar MCP server lets an assistant read one organisation’s monitoring data: sites and their status, incidents with their evidence, the likely cause of an incident, what changed before it, security findings and monthly reports. It only reads. The assistant asks, the server answers from the checks Beamfar stored, and a site with no valid measurement is reported as “data unavailable”, never as up.
| Fact | Value |
|---|---|
| Address | POST https://api.beamfar.com/mcp (a GET answers 405) |
| Transport | MCP Streamable HTTP; JSON answers; no session; no server-sent stream |
| Protocol versions | 2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05, chosen in initialize |
| Sign-in | Authorization: Bearer bfk_..., an organisation API key; a key that only reads is enough; checked on every request |
| Tools | Twelve, all marked read-only |
| Plans | Every plan, Free included, within its monthly request quota (see pricing); keys that write come with Agency and Agency Plus. |
| Hosting | The server and the database are in Falkenstein, Germany (Hetzner), in the EU |
| Limits | A request up to 32 KiB, an answer up to 256 KiB, a tool call up to 25 seconds, two tool calls at a time per key; the API’s rate limits apply |
What you can ask
You do not call the tools yourself. You ask a question and the assistant picks the tool, reads the answer and replies. These are the twelve tools and the questions they are for.
| Tool | Ask things like | What it reads |
|---|---|---|
list_sites | Which of my sites are down right now? | Every site’s status, open incidents and last check, with the status counts of the organisation |
site_status | How has shop.example.com done this week? | One site: status, each monitor, uptime and coverage over 1 to 2160 hours |
list_incidents | What incidents did we have this month? | Incidents newest first, for one site or all, open or resolved |
incident_evidence | Show me the proof for that incident. | The stored observations that opened and closed it: region, outcome, timings, HTTP, TLS and DNS facts |
explain_incident | Why did it go down? | The likely cause with its confidence, who needs to act, fix steps, what was ruled out and what could not be checked |
what_changed | What changed on this site before it broke? | DNS, certificate, redirect, SEO-signal and domain-expiry changes and incident events, newest first |
first_day_findings | What should I look at first across all my sites? | Ranked findings from the first checks: certificates and domains expiring, redirects, SEO risks, DNS problems, sites down |
monthly_report_summary | Summarise last month’s report for this client. | A stored monthly report: uptime, incidents, changes, certificates expiring soon |
security_overview | Which sites show signs of hacking or SEO spam? | How many sites were scanned and which have warnings, with a status per site |
site_security | What did the last security scan of this site find? | Each finding with its kind, severity, confidence and evidence; possible problems, never a verdict |
list_maintenance | Is any maintenance planned or running? | Maintenance schedules and their next window |
dns_changes | Did anyone change a DNS record? | Changes in watched name server, mail, SPF, DMARC, CAA and text records |
A tool does not invent a value. If the app has no measurement, no report or no scan, the answer says “data unavailable”, and the server tells the assistant to say so instead of filling the gap. The likely cause of an incident is a ranked reading of the stored evidence, given with its confidence, not a measurement.
Set-up for each assistant
Three steps. First, an owner or admin opens AI assistants in the app (under Settings, next to API keys), names a key after the assistant, presses Make key and copies it: it is shown once (more about keys). Second, add the address and the key to the assistant as below. Third, press Test connection in the app, or ask the assistant to list your sites.
| Assistant | What we did | Documentation |
|---|---|---|
| Claude Code | Tested on 3 November 2026: it connected and a Claude model called two tools | Claude Code, MCP |
| Claude Desktop | The mcp-remote helper tested; the app set up per its docs | Local servers, mcp-remote |
| Gemini CLI | Tested on 3 November 2026: it reports the server as connected | Gemini CLI, MCP |
| Cursor | Set up per its own docs, not run by us | Cursor, MCP |
| VS Code and GitHub Copilot | Set up per its own docs, not run by us | VS Code, MCP configuration |
| Windsurf | Set up per its own docs, not run by us | Windsurf, customizations |
| Zed | Set up per its own docs, not run by us | Zed, MCP |
| n8n | Set up per its own docs, not run by us | n8n, MCP Client Tool |
Tested means we ran it against a test installation of this server with made-up demo data, never against a customer’s data. Per its own docs means we followed that assistant’s own documentation and did not run it. Replace bfk_... with your key. Do not commit a file that holds the key. Product names are the property of their owners and are used here only to say what works with what; none of them endorses Beamfar.
Claude Code
claude mcp add --transport http beamfar https://api.beamfar.com/mcp \
--header "Authorization: Bearer bfk_..."
Add --scope user to keep it for every project. claude mcp list then shows beamfar as connected.
Claude Desktop
Claude Desktop starts programs on your computer, so a small helper called mcp-remote (it needs Node.js) joins it to the address. In Claude Desktop open Settings, Developer, Edit config, put this in claude_desktop_config.json and restart.
{
"mcpServers": {
"beamfar": {
"command": "npx",
"args": ["-y", "mcp-remote@0.1.16", "https://api.beamfar.com/mcp", "--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer bfk_..." }
}
}
}
The helper’s version is fixed on purpose: 0.1.16 is the first release that fixes CVE-2025-6514. We ran exactly this helper command against a test installation: it connected, listed the tools and answered a call. We did not run the Claude Desktop app itself.
Gemini CLI
gemini mcp add --transport http --header "Authorization: Bearer bfk_..." beamfar https://api.beamfar.com/mcp
The server is saved in the project’s .gemini/settings.json; add --scope user for every project. gemini mcp list shows beamfar as connected. We tested Gemini CLI 0.66.0 up to that point and did not run a Gemini model.
Cursor
Save this as mcp.json in the .cursor folder of your home folder and set BF_API_KEY in your environment, so the key stays out of the file.
{
"mcpServers": {
"beamfar": {
"url": "https://api.beamfar.com/mcp",
"headers": { "Authorization": "Bearer ${env:BF_API_KEY}" }
}
}
}
VS Code and GitHub Copilot
Save this as .vscode/mcp.json in your project. VS Code asks for the key when it starts the server and keeps it out of the file.
{
"inputs": [
{ "type": "promptString", "id": "beamfar-key", "description": "Beamfar API key", "password": true }
],
"servers": {
"beamfar": {
"type": "http",
"url": "https://api.beamfar.com/mcp",
"headers": { "Authorization": "Bearer ${input:beamfar-key}" }
}
}
}
Windsurf
Windsurf’s documentation, now on the Devin docs site, describes a remote server by url, transport and headers. Put the entry in the git-ignored file .devin/mcp_config.local.json.
{
"mcpServers": {
"beamfar": {
"url": "https://api.beamfar.com/mcp",
"transport": "http",
"headers": { "Authorization": "Bearer bfk_..." }
}
}
}
Zed
Open the settings file with the action zed: open settings file and add the server. Zed sends the header you give it; with no Authorization header it would try an OAuth sign-in, which this server does not offer.
{
"context_servers": {
"beamfar": {
"url": "https://api.beamfar.com/mcp",
"headers": { "Authorization": "Bearer bfk_..." }
}
}
}
n8n
Add the MCP Client Tool node to an AI Agent. Set the endpoint to https://api.beamfar.com/mcp, the transport to HTTP Streamable, and the authentication to Bearer with your key in a credential. This server has no SSE stream, so a node that can only use SSE cannot connect.
Any other assistant
Any assistant that can reach a remote MCP server over Streamable HTTP and send a header will do: the address https://api.beamfar.com/mcp, the header Authorization: Bearer bfk_..., the transport called “streamable-http” or “http”. A client that can only start local programs can use mcp-remote as in the Claude Desktop example. The help article has the same set-up in short form, and the API documentation has the protocol details.
What it does not do
- It does not write. There is no tool that adds, changes or deletes anything, a key that only reads cannot write, and billing, members and settings are out of reach.
- It does not connect to Claude.ai or ChatGPT connectors. Those sign in with OAuth, and this server takes an API key. Use an assistant from the table above.
- It does not push. The server keeps no session and sends nothing by itself: the assistant asks, the server answers. Alerts still reach you the way you set them up in the app.
- It has no resources or prompts, only the twelve tools.
Keys and safety
- A key belongs to one organisation and acts as the member who made it. If that member leaves, the key stops working. Revoke a key in the app and the assistant stops at once; expiry and the plan check apply on every request.
- The organisation is never an argument: every tool reads only the key’s own organisation, and the database enforces it again.
- Names, URLs, page titles, error details and DNS records come from monitored websites or from people. Each answer marks them as untrusted data, and the server’s instructions tell the assistant to report on them and never follow instructions found in them. This lowers the risk that text on a monitored page steers the assistant; it cannot remove it, which is why the tools only read.
- A request that names a browser Origin is refused unless we allow-listed it, so a web page cannot call the server from your browser. Assistants send no Origin.
- We count tool calls per key and tool. We do not store the arguments or the answers.
- What you ask, and the answers the tools give (site names, statuses, incident evidence), pass through the company that runs your assistant, under its terms. Check them, and your client contracts, before you connect client data.
- Background reading: hidden prompt injection in web pages explains why text from a monitored site is treated as data, and the security page lists the other controls.
How we tested it
On 3 November 2026 we started a test installation of this code with demo data (an agency with 12 made-up sites, 30 days of checks from two regions and several incidents) and made a read key the way a customer does. Then:
- The official MCP Python SDK 1.30.0 ran
initializeandtools/list(twelve tools, all read-only) and calledlist_sites,site_status,list_incidentsandexplain_incident. A call with a missing argument came back as a tool error the model can correct, and an unknown tool as a protocol error. - The MCP Inspector command line, version 2.13.0, listed the tools, called
list_sitesandsecurity_overview, and reported no schema portability problem. - The
mcp-remotehelper, version 0.1.16, started by the Inspector exactly as Claude Desktop would start it, connected, listed the tools and answered awhat_changedcall. - Claude Code 2.1.316 added the server with the command above and showed it as connected. In a headless run a Claude model then called
list_sitesandsite_statusand answered from the data. - Gemini CLI 0.66.0 added the server with the command above and showed it as connected.
- On the live address, a request with no key answers 401 with
WWW-Authenticate: Bearer, and a GET answers 405.
We have not run Cursor, VS Code, Windsurf, Zed, n8n or the Claude Desktop app. If one of them does not connect as shown, tell us through the contact page.
Questions
What is the Beamfar MCP server?
A hosted, read-only server that lets an AI assistant read one organisation’s sites, incidents, evidence, changes and monthly reports from Beamfar through twelve tools, using an organisation API key.
Can the assistant change or delete anything in my account?
No. All twelve tools only read, a key that only reads cannot write, and billing, members and settings are out of reach.
Which plans include the MCP server?
Every plan, Free included: the MCP server and the read-only API come with each one, within a number of requests a month and a minute that the pricing page states per plan (3,000 requests a month on Free). Keys that write come with the Agency and Agency Plus plans.
Does it work with Claude.ai or ChatGPT connectors?
No. Those connectors sign in with OAuth, and this server takes an API key. Clients that can send an Authorization header can connect with a key, for example Claude Code and Gemini CLI, which we tested.
Where is the data processed?
The server and the database are in Falkenstein, Germany, in the EU. The answers the tools give pass through the company that runs your assistant, under its own terms.
What if a key leaks?
Revoke it in the app: the assistant that uses it stops at once. Make a new key for the assistant. A key that only reads cannot change anything, but it can read your monitoring data until it is revoked.