io.github.kumarprobeops/probeops-mcp-server
Network diagnostics from 6 global regions. SSL, DNS, ping, whois, traceroute, port scan, latency.
Open source Open in the app JSON README (API)
About
Network diagnostics from 6 global regions. SSL, DNS, ping, whois, traceroute, port scan, latency.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- kumarprobeops
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 1.2.3
- Last push
- 2026-02-18T07:07:42Z
- Repository state
- ativo
- Language
- JavaScript
- License
- MIT
- Added
- 2026-08-29 04:00:22
- Updated
- 2026-08-29 04:00:22
- Origin id
io.github.kumarprobeops/probeops-mcp-server
README
# ProbeOps MCP Server
[](https://www.npmjs.com/package/@probeops/mcp-server)
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org)
[](https://modelcontextprotocol.io)
MCP server for running infrastructure diagnostics from 6 global regions. SSL checks, DNS lookups, ping, whois, port checks, traceroute, latency tests, and more — each executed simultaneously from US East, US West, EU Central, Canada, India, and Australia.
**Works instantly — no API key required.** Run `npx @probeops/mcp-server` and get 11 diagnostic tools with 10 free calls per day. Add an API key to unlock all 21 tools, 6 regions, and higher limits.
Works with **Claude Code**, **Codex**, **Cursor**, **Windsurf**, **Cline**, and any [Model Context Protocol](https://modelcontextprotocol.io) compatible client.
## Quick Start
### Option 1: Try It Now (No API Key)
**Claude Code:**
```bash
claude mcp add probeops -- npx -y @probeops/mcp-server
```
**Codex:**
```bash
codex mcp add probeops -- npx -y @probeops/mcp-server
```
**Cursor / Windsurf / Cline** (add to `.mcp.json` or your client's MCP config):
```json
{
"mcpServers": {
"probeops": {
"command": "npx",
"args": ["-y", "@probeops/mcp-server"]
}
}
}
```
That's it. You get 11 tools with 10 calls per day and 2 probe regions — no signup, no configuration.
### Option 2: Full Access (Free API Key)
Sign up at [probeops.com](https://probeops.com) and create an API key from the dashboard. Then add it to your config:
**Claude Code:**
```bash
claude mcp add probeops -e PROBEOPS_API_KEY=your-key -- npx -y @probeops/mcp-server
```
**Codex** (add to `~/.codex/config.toml`):
```toml
[mcp_servers.probeops]
command = "npx"
args = ["-y", "@probeops/mcp-server"]
[mcp_servers.probeops.env]
PROBEOPS_API_KEY = "your-api-key-here"
```
**Cursor / Windsurf / Cline:**
```json
{
"mcpServers": {
"probeops": {
"command": "npx",
"args": ["-y", "@probeops/mcp-server"],
"env": {
"PROBEOPS_API_KEY": "your-api-key-here"
}
}
}
}
```
## Demo Mode vs Full Access
| | **Demo Mode** (no key) | **Free Tier** (with key) | **Professional** |
|--|----------------------|------------------------|-----------------|
| Tools | 11 | 21 | 21 |
| Calls per day | 10 | 100 | 5,000 |
| Regions per call | 2 | 4 | 6 |
| Geo-proxy browsing | — | 3 hours/day | 10 hours/day |
| Setup time | 0 min | 2 min | 2 min |
## What You Get
21 infrastructure diagnostic tools, each running from up to 6 regions simultaneously. Plus geo-proxy browsing and account management.
Every diagnostic tool call returns per-region results and a quota footer showing remaining usage.
### Diagnostic Tools (14)
| Tool | What it does | Example input |
|------|-------------|---------------|
| `ssl_check` | SSL/TLS certificate validity, expiry, issuer, TLS version, SANs, cross-region consistency | `{ "domain": "example.com" }` |
| `dns_lookup` | DNS record lookup (A, AAAA, CNAME, MX, TXT, NS, SOA, CAA, PTR) with multi-region propagation check | `{ "domain": "example.com", "record_type": "MX" }` |
| `is_it_down` | Website up/down/partial status from multiple regions | `{ "url": "https://example.com" }` |
| `latency_test` | HTTP latency (TTFB) from multiple regions, returns min/avg/max | `{ "target": "example.com" }` |
| `traceroute` | Network path tracing with per-hop latency. TCP, UDP, or ICMP | `{ "target": "example.com", "protocol": "tcp" }` |
| `port_check` | Port open/closed/filtered check from multiple regions | `{ "target": "example.com", "port": 443 }` |
| `ping` | ICMP ping with packet loss and round-trip times | `{ "target": "8.8.8.8" }` |
| `whois` | Domain registration info: registrar, dates, nameservers | `{ "domain": "example.com" }` |
| `nmap_port_check` | Check multiple ports open/closed using nmap (not a full scan) | `{ "target": "example.com", "ports": "80,443" }` |
| `tcp_ping` | TCP-level latency to a specific port (works when ICMP is blocked) | `{ "target": "example.com", "port": 443 }` |
| `keyword_check` | Check if a keyword exists on a web page from multiple regions | `{ "url": "https://example.com", "keyword": "pricing" }` |
| `websocket_check` | WebSocket endpoint connectivity check | `{ "url": "wss://example.com/ws" }` |
| `banner_grab` | Service banner/version detection on a port | `{ "target": "example.com", "port": 22 }` |
| `api_health` | API endpoint health check (HTTP status, response time, availability) | `{ "url": "https://api.example.com/health" }` |
### DNS Shortcuts
These call `dns_lookup` with a preset `record_type` so you don't have to remember record type names:
| Tool | Equivalent to |
|------|--------------|
| `mx_lookup` | `dns_lookup` with `record_type: "MX"` |
| `txt_lookup` | `dns_lookup` with `record_type: "TXT"` |
| `ns_lookup` | `dns_lookup` with `record_type: "NS"` |
| `cname_lookup` | `dns_lookup` with `record_type: "CNAME"` |
| `caa_lookup` | `dns_lookup` with `record_type: "CAA"` |
| `reverse_dns_lookup` | `dns_lookup` with `record_type: "PTR"` (takes an IP address) |
### Geo-Proxy Browsing
| Tool | What it does | Example input |
|------|-------------|---------------|
| `get_geo_proxy` | Get proxy credentials for a region. Use with Playwright or any HTTPS proxy client | `{ "region": "eu-central" }` |
| `geo_browse` | Browse a URL from a region using a real browser. Returns page content and/or screenshot | `{ "url": "https://example.com", "region": "ap-south" }` |
### Account
| Tool | What it does |
|------|-------------|
| `account_status` | Current quota usage (minute/hour/day/month), subscription tier, active proxy token |
## Resources
| URI | Description |
|-----|-------------|
| `probeops://regions` | Probe regions with location, country, and node count |
| `probeops://proxy-regions` | Geo-proxy regions with FQDNs and proxy URLs |
| `probeops://usage` | Current API usage, remaining quota, active token status |
## Global Regions
All diagnostic tools run from these 6 regions simultaneously:
| Region Code | Location | Country |
|-------------|----------|---------|
| `us-east` | Ashburn, Virginia | United States |
| `us-west` | Boardman, Oregon | United States |
| `eu-central` | Helsinki | Finland |
| `ca-central` | Montreal | Canada |
| `ap-south` | Mumbai | India |
| `ap-southeast` | Sydney | Australia |
## Geo-Proxy Token Management
The server manages proxy tokens automatically:
| Token State | Action | Quota Cost |
|-------------|--------|------------|
| > 5 min remaining | Reuse cached token | 0 |
| 0-5 min remaining | Auto-extend +1 hour | 1 unit |
| Expired or no token | Generate new token | 1 unit |
- A single token works across all 6 regions. Switching regions does not consume quota.
- Daily quota = total hours of proxy browsing per day.
- Quota resets at midnight UTC.
## Output Examples
### SSL Check
```
ssl_check({ domain: "github.com" })
SSL Certificate Report for github.com
Status: VALID
Subject: github.com
Issuer: DigiCert (DigiCert Inc)
Expires in: 245 days
TLS: TLSv1.3 (TLS_AES_256_GCM_SHA384)
Region Results:
| Region | Location | Status | Time |
|--------|----------|--------|------|
| us-east | Ashburn | OK | 45ms |
| eu-central | Helsinki | OK | 38ms |
| ap-south | Mumbai | OK | 112ms |
| us-west | Boardman | OK | 52ms |
| ca-central | Montreal | OK | 41ms |
| ap-southeast | Sydney | OK | 98ms |
Completed in 125ms
---
Diagnostics: 97 of 100 remaining today (Free)
```
### Ping
```
ping({ target: "1.1.1.1" })
Ping: 1.1.1.1
ap-south (Mumbai):
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=56 time=1.35 ms
3 packets transmitted, 3 received, 0% packet loss
rtt min/avg/max/mdev = 1.353/1.398/1.474/0.054 ms
Response time: 2147ms
eu-central (Helsinki):
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=54 time=21.2 ms
3 packets transmitted, 3 received, 0% packet loss
rtt min/avg/max/mdev = 20.651/20.941/21.217/0.231 ms
Response time: 2031ms
...
Completed in 2332ms
---
Diagnostics: 96 of 100 remaining today (Free)
```
### Whois
```
whois({ domain: "example.com" })
Whois: example.com
us-east (Ashburn):
Domain Name: EXAMPLE.COM
Registry Domain ID: 2336799_DOMAIN_COM-VRSN
Registrar: RESERVED-Internet Assigned Numbers Authority
Creation Date: 1995-08-14T04:00:00Z
Registry Expiry Date: 2025-08-13T04:00:00Z
Name Server: A.IANA-SERVERS.NET
Name Server: B.IANA-SERVERS.NET
DNSSEC: signedDelegation
Response time: 734ms
...
Completed in 852ms
---
Diagnostics: 95 of 100 remaining today (Free)
```
## Environment Variables
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `PROBEOPS_API_KEY` | No | - | Your ProbeOps API key ([get one free](https://probeops.com/dashboard/api-keys)). Without it, runs in demo mode (11 tools, 10 calls/day) |
| `PROBEOPS_BASE_URL` | No | `https://probeops.com` | API base URL (for staging or self-hosted instances) |
## Rate Limits
| | **Free** | **Standard** | **Professional** |
|--|----------|-------------|-----------------|
| Per minute | 15 | 30 | 50 |
| Per hour | 100 | 500 | 2,000 |
| Per day | 100 | 1,000 | 5,000 |
| Per month | 500 | 20,000 | 100,000 |
| Concurrent | 3 | 5 | 10 |
| Proxy hours/day | 3 | 5 | 10 |
| Regions | 4 of 6 | All 6 | All 6 |
Free tier requires no credit card. Check usage anytime with `account_status`.
See [probeops.com/pricing](https://probeops.com/pricing) for current details.
## Development
```bash
git clone https://github.com/kumarprobeops/probeops-mcp-server.git
cd probeops-mcp-server
npm install
npm run build
```
Test locally:
```bash
PROBEOPS_API_KEY=your-key node dist/index.js
```
## Requirements
- **Node.js** >= 18.0.0
- **Playwright** (optional) - only needed for `geo_browse` screenshots
```bash
npx playwright install chromium
```
Without Playwright, `geo_browse` falls back to HTTP fetch (raw HTML, no screenshots).
## FAQ
**Q: How is this different from running `curl` or `dig` locally?**
Every check runs from 6 global regions simultaneously. You see DNS propagation, latency, and availability from the perspective of real users worldwide, not your local network.
**Q: Do I need to install anything besides Node.js?**
No. `npx -y @probeops/mcp-server` handles everything. Playwright is optional (only for `geo_browse` screenshots).
**Q: Can I use this in CI/CD pipelines?**
Yes. Set `PROBEOPS_API_KEY` as an environment variable and call the MCP server from any MCP-compatible tool.
**Q: Is the API key sent securely?**
Yes. All communication uses HTTPS. The key is sent via the `X-API-Key` header, never in URLs or logs.
## License
MIT - see [LICENSE](LICENSE)
## Links
- [ProbeOps Platform](https://probeops.com)
- [Get API Key](https://probeops.com/dashboard/api-keys)
- [Pricing](https://probeops.com/pricing)
- [Report Issues](https://github.com/kumarprobeops/probeops-mcp-server/issues)
- [npm Package](https://www.npmjs.com/package/@probeops/mcp-server)