Set up Notifly in Windsurf.
The fastest path: copy the sentence and paste it into Windsurf — it runs every step below itself. Or follow the steps by hand.
No key goes into the MCP config — the server signs Windsurf in with OAuth 2.1.
- mcp_config.json — open it from the Cascade panel: … (Actions) menu → Open MCP config file
- Current docs (now published as Devin Desktop) place it at ~/.config/devin/mcp_config.json on macOS/Linux and %APPDATA%\devin\mcp_config.json on Windows
- Installs still branded Windsurf use the legacy path ~/.codeium/windsurf/mcp_config.json (%USERPROFILE%\.codeium\windsurf\mcp_config.json on Windows): if that directory exists, write the config there instead
{
"mcpServers": {
"notifly": {
"serverUrl": "https://api.notifly.io/mcp"
}
}
}Cascade supports OAuth for HTTP servers and opens the Notifly sign-in in the browser on first connect.
On the consent screen you choose what Windsurf may do; it can never exceed your own role.
Checked against Windsurf’s MCP documentation.
Your code authenticates with the environment’s secret key (https://app.notifly.io → choose the environment (Development or Production) in the sidebar → API Keys → Secret Keys). Keep it in a git-ignored .env as NOTIFLY_SECRET_KEY.
MCP tools
trigger_workflow
Fire a workflow for a subscriber (the one write tool; off until an admin enables it)
list_workflows
Search and page through workflows
get_workflow
Fetch a single workflow's details
list_subscribers
Search and page through subscribers
get_subscriber
Fetch a single subscriber
list_topics
Search and page through topics
list_notifications
Read notification history
Server SDKs
Node.js / TypeScript
npm install @notiflyio/[email protected]Python
pip install notifly-sdk==0.1.0
Any other language calls the REST API directly — see the API reference.
Run it from the project root: the first two lines load NOTIFLY_SECRET_KEY from .env and stop if it is empty, then the request prints HTTP 200 and a body containing totalCount. A 401 with the key loaded means the key is wrong or belongs to a different environment. Inside the agent, calling the list_workflows tool proves the MCP sign-in the same way.
if [ -f .env ]; then set -a; . ./.env; set +a; fi
: "${NOTIFLY_SECRET_KEY:?NOTIFLY_SECRET_KEY is not set: store it in .env first (step 1)}"
curl -sS -w "\nHTTP %{http_code}\n" -H "Authorization: ApiKey $NOTIFLY_SECRET_KEY" "https://api.notifly.io/v2/workflows?limit=1"The agent reads notifly.io/agent-setup/prompt.md — plain markdown you can read too. Optional next step: to wire a Notifly agent into Slack, Microsoft Teams or another channel, follow notifly.io/agents.md.