MCP Server
MCP Server
Section titled “MCP Server”Notifly MCP Server is an implementation of the Model Context Protocol (MCP) that allows AI assistants (Claude, GitHub Copilot, and others) to control Notifly through a set of ready-made tools.
With the MCP server an AI assistant can:
- send notifications to channels;
- read, filter, and delete messages;
- create and manage channels and clients;
- administer server users.
Installation
Section titled “Installation”Requirements
Section titled “Requirements”- Go 1.21 or newer
Build from source
Section titled “Build from source”git clone https://github.com/notifly/mcp.gitcd mcpgo mod tidygo build -o notifly-mcp .The resulting binary notifly-mcp is launched via the stdio transport — an MCP client runs it as a child process.
Configuration
Section titled “Configuration”The server is configured exclusively via environment variables:
| Переменная | Обязательная | Описание |
|---|---|---|
NOTIFLY_URL | ✓ | Base URL of the Notifly server, e.g. https://your-domain.com |
NOTIFLY_APP_TOKEN | App token (prefix A) — for the send_message tool | |
NOTIFLY_CLIENT_TOKEN | MCP code (prefix M) or client token (prefix C) — for resource management | |
NOTIFLY_USER | Login for Basic Auth (alternative to MCP code) | |
NOTIFLY_PASS | Password for Basic Auth |
Connecting to Claude Desktop
Section titled “Connecting to Claude Desktop”Open the Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the mcpServers section:
{ "mcpServers": { "notifly": { "command": "/usr/local/bin/notifly-mcp", "env": { "NOTIFLY_URL": "https://your-notifly-domain.com", "NOTIFLY_APP_TOKEN": "AGdjfk_L.dKe8q", "NOTIFLY_CLIENT_TOKEN": "CaQw5lL_L.yiRbN" } } }}After restarting Claude Desktop the Notifly tools will appear in the interface.
Connecting to VS Code (GitHub Copilot)
Section titled “Connecting to VS Code (GitHub Copilot)”Add to .vscode/mcp.json at the project root or to your VS Code user settings:
{ "servers": { "notifly": { "type": "stdio", "command": "/usr/local/bin/notifly-mcp", "env": { "NOTIFLY_URL": "https://your-notifly-domain.com", "NOTIFLY_APP_TOKEN": "AGdjfk_L.dKe8q", "NOTIFLY_CLIENT_TOKEN": "CaQw5lL_L.yiRbN" } } }}Connecting to Cursor
Section titled “Connecting to Cursor”Add the file .cursor/mcp.json to the project root (project-scope) or ~/.cursor/mcp.json globally:
{ "mcpServers": { "notifly": { "command": "/usr/local/bin/notifly-mcp", "env": { "NOTIFLY_URL": "https://your-notifly-domain.com", "NOTIFLY_APP_TOKEN": "AGdjfk_L.dKe8q", "NOTIFLY_CLIENT_TOKEN": "CaQw5lL_L.yiRbN" } } }}After saving the file Cursor will pick up the server automatically. Make sure notifly-mcp is available in PATH.
Connecting to Windsurf
Section titled “Connecting to Windsurf”Open or create ~/.codeium/windsurf/mcp_config.json and add the mcpServers section:
{ "mcpServers": { "notifly": { "command": "/usr/local/bin/notifly-mcp", "env": { "NOTIFLY_URL": "https://your-notifly-domain.com", "NOTIFLY_APP_TOKEN": "AGdjfk_L.dKe8q", "NOTIFLY_CLIENT_TOKEN": "CaQw5lL_L.yiRbN" } } }}After saving, restart Windsurf — the Notifly tools will appear in Cascade.
Connecting to Claude Code (CLI)
Section titled “Connecting to Claude Code (CLI)”Use the claude mcp add command to register the server:
claude mcp add notifly /usr/local/bin/notifly-mcp \ -e NOTIFLY_URL=https://your-notifly-domain.com \ -e NOTIFLY_CLIENT_TOKEN=CaQw5lL_L.yiRbNThe --scope user flag adds the server globally for all projects (default is project-scope). Check the list of added servers: claude mcp list.
Connecting to Codex CLI
Section titled “Connecting to Codex CLI”Open or create ~/.codex/config.toml and add the section:
[[mcp_servers]]name = "notifly"command = "/usr/local/bin/notifly-mcp"env = { NOTIFLY_URL = "https://your-notifly-domain.com", NOTIFLY_CLIENT_TOKEN = "CaQw5lL_L.yiRbN" }After saving Codex will pick up the server on the next start. Make sure notifly-mcp is available in PATH.
Connecting to Zed
Section titled “Connecting to Zed”Open Zed settings (~/.config/zed/settings.json) and add the context_servers section:
{ "context_servers": { "notifly": { "command": { "path": "/usr/local/bin/notifly-mcp", "args": [], "env": { "NOTIFLY_URL": "https://your-notifly-domain.com", "NOTIFLY_CLIENT_TOKEN": "CaQw5lL_L.yiRbN" } } } }}Zed will pick up the server without a restart.
Connecting to Continue
Section titled “Connecting to Continue”Add the mcpServers section to the Continue configuration file (~/.continue/config.json):
{ "mcpServers": [ { "name": "notifly", "command": "/usr/local/bin/notifly-mcp", "env": { "NOTIFLY_URL": "https://your-notifly-domain.com", "NOTIFLY_CLIENT_TOKEN": "CaQw5lL_L.yiRbN" } } ]}Continue is supported as an extension for VS Code and JetBrains IDEs.
Available tools
Section titled “Available tools”Server info
Section titled “Server info”| Инструмент | Описание |
|---|---|
get_health | Check the health of the server and the database |
get_version | Get version, commit and build date |
get_server_info | Get server flags (registration, OIDC) |
Messages
Section titled “Messages”| Инструмент | Параметры | Описание |
|---|---|---|
send_message | message*, title, priority | Send a notification (requires NOTIFLY_APP_TOKEN) |
list_messages | limit, since | List all messages with pagination |
list_application_messages | app_id*, limit, since | Messages of a specific channel |
delete_message | id* | Delete a message by ID |
delete_all_messages | — | Delete all messages |
delete_application_messages | app_id* | Delete all messages of a channel |
Channels
Section titled “Channels”| Инструмент | Параметры | Описание |
|---|---|---|
list_applications | — | List all channels |
create_application | name*, description, default_priority | Create a channel |
update_application | id*, name, description, default_priority | Update a channel |
delete_application | id* | Delete a channel |
Clients
Section titled “Clients”| Инструмент | Параметры | Описание |
|---|---|---|
list_clients | — | List all clients (devices/tokens) |
create_client | name* | Create a client and obtain a client token |
update_client | id, name | Rename a client |
delete_client | id* | Delete a client (revoke token) |
| Инструмент | Параметры | Описание |
|---|---|---|
get_current_user | — | Information about the current user |
list_users | — | List all users (requires admin) |
get_user | id* | Get a user by ID (admin) |
create_user | name, pass, admin | Create a user (admin) |
delete_user | id* | Delete a user (admin) |
* — обязательный параметр
Usage examples
Section titled “Usage examples”Send a notification via Claude
Section titled “Send a notification via Claude”Отправь уведомление в Notifly с заголовком "Деплой завершён"и текстом "Версия 2.1.0 успешно развёрнута на prod" с приоритетом 7.Claude will call the send_message tool automatically.
Managing channels
Section titled “Managing channels”Покажи список всех каналов в Notifly и последние 10 сообщенийиз канала с ID 3.Claude will call list_applications and then list_application_messages sequentially.
Administration
Section titled “Administration”Создай нового пользователя в Notifly с именем "devops"и паролем "securepass", без прав администратора.Claude will call create_user with the required parameters.
Security
Section titled “Security”- The MCP server runs locally over stdio — no network port is opened.
- Tokens are stored only in the process environment variables.
- The
delete_all_messagesanddelete_usertools perform irreversible operations — the AI assistant should request confirmation before calling them.