New:Microsoft Teams Notifications Are Now Available in Socket.Learn more
Get Started

@site-spy/mcp-server

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@site-spy/mcp-server

MCP server for Site Spy — lets AI agents monitor websites for changes

latest
npmnpm
Version
0.3.0
Version published
Weekly downloads
58
-75.21%
Maintainers
1
Weekly downloads
 
Created
Source

@site-spy/mcp-server

Let an AI agent watch web pages for you. This MCP server connects your assistant to Site Spy: it can start monitoring a URL, tell you what changed between two points in time, and fetch or search the web on demand. Full docs at docs.sitespy.app.

Install

Get an API key from Settings → API. Every plan, including the free one, can read and write — you are bounded by watch count and daily requests, not by which tools you may call.

If your client has a CLI, this is the whole setup:

# Claude Code
claude mcp add site-spy --env SITE_SPY_API_KEY=your-key -- npx -y @site-spy/mcp-server

# Codex CLI
codex mcp add site-spy --env SITE_SPY_API_KEY=your-key -- npx -y @site-spy/mcp-server

# Gemini CLI  (the -- matters: without it, -y is parsed as a gemini flag)
gemini mcp add -s user -e SITE_SPY_API_KEY=your-key site-spy npx -- -y @site-spy/mcp-server

# OpenClaw
openclaw mcp add site-spy --command npx --arg -y --arg @site-spy/mcp-server \
  --env SITE_SPY_API_KEY=your-key

# VS Code
code --add-mcp '{"name":"site-spy","command":"npx","args":["-y","@site-spy/mcp-server"],"env":{"SITE_SPY_API_KEY":"your-key"}}'

Otherwise add this to your client's config file:

{
  "mcpServers": {
    "site-spy": {
      "command": "npx",
      "args": ["-y", "@site-spy/mcp-server"],
      "env": {
        "SITE_SPY_API_KEY": "your-key"
      }
    }
  }
}
ClientConfig fileShape
Claude Code.mcp.json (project) or ~/.claude.jsonas above
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
as above
Cursor.cursor/mcp.json or ~/.cursor/mcp.jsonas above
Windsurf~/.codeium/windsurf/mcp_config.jsonas above
Gemini CLI.gemini/settings.json or ~/.gemini/settings.jsonas above
Codex CLI~/.codex/config.tomlTOML, see below
OpenCodeopencode.json or ~/.config/opencode/opencode.jsondiffers, see below
OpenClaw~/.openclaw/openclaw.jsondiffers, see below
VS Code.vscode/mcp.jsondiffers, see below
Zedrun the zed: open settings file actiondiffers, see below

Restart the client afterwards; the tools appear on their own.

Clients whose config shape differs

Codex CLI — TOML, and the key is mcp_servers. The same file is read by the Codex CLI, the ChatGPT desktop app, and the IDE extension.

[mcp_servers.site-spy]
command = "npx"
args = ["-y", "@site-spy/mcp-server"]

[mcp_servers.site-spy.env]
SITE_SPY_API_KEY = "your-key"

OpenCode — key is mcp, command is one array, and the env key is environment.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "site-spy": {
      "type": "local",
      "command": ["npx", "-y", "@site-spy/mcp-server"],
      "enabled": true,
      "environment": { "SITE_SPY_API_KEY": "your-key" }
    }
  }
}

OpenClaw — servers nest under mcp.servers.

{
  "mcp": {
    "servers": {
      "site-spy": {
        "command": "npx",
        "args": ["-y", "@site-spy/mcp-server"],
        "env": { "SITE_SPY_API_KEY": "your-key" },
        "enabled": true
      }
    }
  }
}

VS Code — key is servers, and inputs keeps the key out of the file.

{
  "inputs": [
    {
      "type": "promptString",
      "id": "site-spy-key",
      "description": "Site Spy API key",
      "password": true
    }
  ],
  "servers": {
    "site-spy": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@site-spy/mcp-server"],
      "env": { "SITE_SPY_API_KEY": "${input:site-spy-key}" }
    }
  }
}

Zed — key is context_servers.

{
  "context_servers": {
    "site-spy": {
      "command": "npx",
      "args": ["-y", "@site-spy/mcp-server"],
      "env": { "SITE_SPY_API_KEY": "your-key" }
    }
  }
}

If you skip SITE_SPY_API_KEY, the agent asks you to authenticate interactively — but that key lives in memory only and is gone when the server restarts.

Tools

Read tools are annotated readOnlyHint, so most clients stop asking permission for them.

ToolDoesPlan
list_watchesList monitored pages, with limit / offsetall
get_watchFull detail for one watchall
search_watchesFind watches by URL or titleall
get_change_historyTimestamps where a change was detectedall
get_snapshotThe page as captured at one timestampall
get_diffWhat changed between two timestampsall
get_rss_settingsCurrent feed settings and tokenall
get_notificationsCurrent notification settingsall
auth_statusWhether the server is connectedall
create_watchStart monitoring a URLall
update_watchRename, repoint, pause, change interval, muteall
delete_watchStop monitoring and drop the historyall
trigger_recheckCheck everything now instead of on scheduleall
authenticateSupply an API key at runtimeall
generate_rss_tokenMint a feed token — invalidates existing feed URLsall
revoke_rss_tokenKill feed access immediatelyall
fetch_urlFetch one URL, with a browser backend for JS pagesall
web_searchFind URLs to fetch, instead of guessing themall
get_ai_summaryPlain-English summary of the latest changePro

get_snapshot and get_diff cap output at 20,000 characters; pass max_chars for more.

Once a token exists, feed URLs are https://sitespy.app/api/rss?token={token} for everything and …/api/rss/watch/{uuid}?token={token} for one watch.

Environment variables

VariableDescriptionDefault
SITE_SPY_API_KEYAPI key— (interactive auth)
SITE_SPY_API_URLBackend API URLhttps://api.sitespy.app/api/v1
SITE_SPY_AUTH_URLURL shown when a key is neededhttps://sitespy.app/dashboard

Self-hosting: the backend fetch_url endpoint can be restricted with FETCH_URL_API_ENABLED, FETCH_URL_REQUIRE_MASTER_ADMIN, or FETCH_URL_ALLOWED_API_KEYS.

Troubleshooting

  • "API key is invalid or expired" — the key was revoked or regenerated. Copy a fresh one from Settings → API. The server itself is fine; there is no need to work around it.
  • Tools never appear — restart the client after editing its config, and check npx runs (Node.js 20.19+).
  • "Watch limit reached" — you are at your plan's cap. Delete one or upgrade.
  • "Rate limit reached" — the day's write allowance is spent; the error says how long to wait. Reads do not count against it.
  • fetch_url keeps timing out — pass fetch_backend explicitly. html_requests is fast and right for static pages; html_webdriver renders JavaScript; flaresolverr is for Cloudflare. auto tries all three and gives up at 30s. On failure the response carries attempts[] and cascade_summary showing what was tried.

Try it

  • "Monitor https://example.com/pricing and tell me when the price changes"
  • "What changed on my watches this week?"
  • "Search for the current Postgres release notes and fetch the top result"

Keywords

mcp

FAQs

Package last updated on 04 Sep 2026

Related posts