Server
- Server address
http://watch.flyhare.com/mcp/v1
- MCP access token
-
Add a token for each assistant on the Access tokens sub-tab. It is shown once, when it is created.
Treat it like a password.
It does not expire, and anyone who has it can use these tools and read what they return. Never paste it into a file you commit or share.
Most assistants below can read it from an environment variable, so it stays out of their config files. Set it once, for example in ~/.bashrc or ~/.zshrc:
export CDIO_MCP_TOKEN=YOUR_MCP_TOKEN
Claude Code
Run this in a terminal, then start a new Claude Code session and ask, for example, "Which of my monitors have errors?"
claude mcp add --transport http changedetection http://watch.flyhare.com/mcp/v1 --header "Authorization: Bearer $CDIO_MCP_TOKEN"
To remove it again: claude mcp remove changedetection
By default (--scope local) Claude Code saves this in ~/.claude.json, only for you and only in the current project. Add --scope user to have it in all your projects.
--scope project writes .mcp.json into the project, which is usually committed. Use this form there instead, it saves a reference to the environment variable, not the token:
claude mcp add --transport http --scope project changedetection http://watch.flyhare.com/mcp/v1 --header 'Authorization: Bearer ${CDIO_MCP_TOKEN}'
Cursor ~/.cursor/mcp.json
{"mcpServers": {"changedetection": {"url": "http://watch.flyhare.com/mcp/v1", "headers": {"Authorization": "Bearer ${env:CDIO_MCP_TOKEN}"}}}}
VS Code / GitHub Copilot .vscode/mcp.json
VS Code asks for the token once and stores it securely, so this file is safe to commit.
{"inputs": [{"type": "promptString", "id": "cdio-mcp-token", "description": "changedetection.io MCP access token", "password": true}], "servers": {"changedetection": {"type": "http", "url": "http://watch.flyhare.com/mcp/v1", "headers": {"Authorization": "Bearer ${input:cdio-mcp-token}"}}}}
OpenAI Codex ~/.codex/config.toml
[mcp_servers.changedetection]
url = "http://watch.flyhare.com/mcp/v1"
bearer_token_env_var = "CDIO_MCP_TOKEN"
OpenCode opencode.json
{"mcp": {"changedetection": {"type": "remote", "url": "http://watch.flyhare.com/mcp/v1", "oauth": false, "headers": {"Authorization": "Bearer {env:CDIO_MCP_TOKEN}"}}}}
Gemini CLI ~/.gemini/settings.json
Uses httpUrl, not url (url means the older SSE transport).
{"mcpServers": {"changedetection": {"httpUrl": "http://watch.flyhare.com/mcp/v1", "headers": {"Authorization": "Bearer YOUR_MCP_TOKEN"}}}}
This file contains the token: keep it in your own settings, not in anything you commit or share.
GitHub Copilot CLI ~/.copilot/mcp-config.json
copilot mcp add --transport http --header "Authorization: Bearer $CDIO_MCP_TOKEN" changedetection http://watch.flyhare.com/mcp/v1
This file contains the token: keep it in your own settings, not in anything you commit or share.
Zed settings.json
{"context_servers": {"changedetection": {"url": "http://watch.flyhare.com/mcp/v1", "headers": {"Authorization": "Bearer YOUR_MCP_TOKEN"}}}}
This file contains the token: keep it in your own settings, not in anything you commit or share.
Claude Desktop claude_desktop_config.json
Through the mcp-remote bridge (needs Node.js), since Claude Desktop connectors only support sign-in, not an access token.
{"mcpServers": {"changedetection": {"command": "npx", "args": ["-y", "mcp-remote", "http://watch.flyhare.com/mcp/v1", "--header", "Authorization:${MCP_AUTH}"], "env": {"MCP_AUTH": "Bearer YOUR_MCP_TOKEN"}}}}
This file contains the token: keep it in your own settings, not in anything you commit or share.
Any other assistant (Windsurf, Devin and others)
Most assistants can run a local command: the same mcp-remote bridge (needs Node.js), in the format of that assistant's MCP settings.
{"command": "npx", "args": ["-y", "mcp-remote", "http://watch.flyhare.com/mcp/v1", "--header", "Authorization:${MCP_AUTH}"], "env": {"MCP_AUTH": "Bearer YOUR_MCP_TOKEN"}}
This file contains the token: keep it in your own settings, not in anything you commit or share.
Public MCP address
The address assistants reach this instance on, for example when it is served through another domain or proxy. Sign-in (OAuth) hands this address out, so it must be the one assistants connect to. Leave it empty to use the address of each request, shown in grey.
The MCP server is then at this address followed by /mcp/v1. Changing it signs out assistants connected with sign-in (OAuth), they need to connect again. Access tokens keep working.
Access without sign-in
Anyone with the MCP address can then list your monitors and read their changes, snapshots and screenshots, without a token or password, for example for a public demo. Notifications, system info and any change still need sign-in or an access token.
Without sign-in, each address can make 30 tool calls a minute.
MCP Note
What every assistant is told when it connects: what this server is for and how to use its tools. Leave it empty to use the built-in note, shown in grey.
Copies the built-in note into the box, so you can change it. For example, on a demo, say how to sign up or where to download it.
Read-only tokens, and tokens limited to some groups, are always told that after this note.