Skip to content

The MCP server ​

Ask Claude, ChatGPT, Cursor or VS Code about your infrastructure — "which monitors were down last night?", "where does mail.example.com point?", "which domains expire this quarter?" — and let it look the answer up in InfraNest. The assistant connects to the InfraNest MCP server, which reads through the same API as your scripts.

It only reads. Nothing an assistant does through it changes anything.

The server's address is:

https://api.infranest.io/mcp

There are two ways to connect:

  • In claude.ai and ChatGPT, Connect with InfraNest: add the address, sign in to InfraNest and approve. No token, every plan.
  • In Claude Code, Cursor, VS Code and Claude Desktop, use an API token.

The rest of this section:

Connect with a token ​

Claude Code, Cursor, VS Code and Claude Desktop take an API token. Create one under My account → Developer. Give it read scopes only for the areas you want the assistant to see — it cannot see more than the token can. In your sandbox, a test token works the same way, with sample data.

The token goes in the header Authorization: Bearer <token>. The links below add the server to your editor and read the token from the environment variable INFRANEST_TOKEN; neither link carries a token.

Claude Code ​

sh
claude mcp add --transport http infranest https://api.infranest.io/mcp \
  --header "Authorization: Bearer $INFRANEST_TOKEN"

Cursor ​

Add to Cursor above, or in ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

json
{
  "mcpServers": {
    "infranest": {
      "url": "https://api.infranest.io/mcp",
      "headers": { "Authorization": "Bearer ${env:INFRANEST_TOKEN}" }
    }
  }
}

VS Code ​

Add to VS Code above reads INFRANEST_TOKEN from the environment VS Code was started from. To have VS Code ask for the token once and keep it in its secret storage instead, put this in .vscode/mcp.json:

json
{
  "inputs": [
    { "type": "promptString", "id": "infranest-token", "description": "InfraNest API token", "password": true }
  ],
  "servers": {
    "infranest": {
      "type": "http",
      "url": "https://api.infranest.io/mcp",
      "headers": { "Authorization": "Bearer ${input:infranest-token}" }
    }
  }
}

Claude Desktop ​

The connector you add on claude.ai (Connect Claude and ChatGPT) is the simplest way. To use a token instead, use the mcp-remote bridge (it needs Node.js) in claude_desktop_config.json:

json
{
  "mcpServers": {
    "infranest": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.infranest.io/mcp", "--header", "Authorization: Bearer ${INFRANEST_TOKEN}"],
      "env": { "INFRANEST_TOKEN": "your token" }
    }
  }
}

The tools ​

Each tool is one read in the API reference, and needs that read's scope. This list is generated from the server itself.

ToolWhat it answersWhat it readsScope
list_organizationsList organizationsGET /organizationsmembers.read
status_overviewIs everything up right nowGET /organizations/{organization}/statusmonitoring.read
list_serversList serversGET /organizations/{organization}/cloud-serverscloud.read
get_serverGet a serverGET /organizations/{organization}/cloud-servers/{cloudServer}cloud.read
server_attentionWhat needs attention on a serverGET /organizations/{organization}/cloud-servers/{cloudServer}/attentioncloud.read
server_metricsServers with their latest metricsGET /organizations/{organization}/cloud-servers/metrics-overviewcloud.read
list_monitorsList monitorsGET /organizations/{organization}/monitoring-checksmonitoring.read
get_monitorGet a monitorGET /organizations/{organization}/monitoring-checks/{monitoringCheck}monitoring.read
monitor_statsUptime and response times of a monitorGET /organizations/{organization}/monitoring-checks/{monitoringCheck}/statsmonitoring.read
monitor_resultsRecent check results of a monitorGET /organizations/{organization}/monitoring-checks/{monitoringCheck}/resultsmonitoring.read
list_incidentsList incidentsGET /organizations/{organization}/incidentsmonitoring.read
incident_timelineTimeline of an incidentGET /organizations/{organization}/incidents/{incident}/updatesmonitoring.read
list_dns_zonesList DNS zonesGET /organizations/{organization}/dns-zonesdns.read
list_dns_recordsList the records in a DNS zoneGET /organizations/{organization}/dns-zones/{dnsZone}/dns-recordsdns.read
search_dnsSearch DNS records across all zonesGET /organizations/{organization}/dns/searchdns.read
list_domainsList domainsGET /organizations/{organization}/domainsdomains.read
list_certificatesList certificatesGET /organizations/{organization}/certificatesmonitoring.read
list_maintenance_windowsList maintenance windowsGET /organizations/{organization}/maintenance-windowsmonitoring.read
search_audit_logSearch the audit logGET /organizations/{organization}/audit-logsaudit-log.read
uptime_reportMonthly uptime reportGET /organizations/{organization}/uptime-reportmonitoring.read
read_apiRead any public API endpointany read in the API referencethe scope of what it reads

When a token reaches more than one organization, the assistant asks list_organizations first and names the one it means. Connected with InfraNest, it reaches the one organization you picked. A long answer is cut off at 80,000 characters, with a note telling the assistant how to narrow it.

Things to ask ​

  • "Is anything down right now?"
  • "Which monitors were down last night, and for how long?"
  • "Where does mail.example.com point, and when was that record last changed?"
  • "Which domains and certificates expire in the next 60 days?"
  • "Which servers are running out of disk space?"
  • "Who changed the DNS for shop.example.com this week?"
  • "What was our uptime last month, per monitor?"

What it costs ​

Nothing extra, on every plan — Free included. Each tool call is an API read, and counts against the same rate limit as any other request with that token.

Connect with InfraNest works on every plan. Connecting with a token needs a plan that includes API tokens (Pro or higher), or a test token in your sandbox. See Limits.

When something does not work, see Troubleshooting.