项目简介
'ntfy-me-mcp' 是一个高效的MCP服务器,专门用于向自托管的ntfy通知服务发送消息。它将ntfy的通知功能封装为MCP工具,使得大型语言模型(LLM)客户端能够方便、安全地调用该功能,实现自动化通知,例如任务完成、错误报告或状态更新等。
主要功能点
- LLM可调用通知: 允许LLM客户端通过标准JSON-RPC协议调用内置工具向ntfy发送通知。
- 安全令牌认证: 支持通过环境变量或工具参数提供令牌,确保通知发送的安全性。
- 灵活配置: 可自定义ntfy服务器URL和主题,支持消息优先级和标签。
- 跨平台运行: 支持Node.js环境下的npx直接运行,也提供Docker镜像,方便部署。
- 轻量高效: 设计简洁,占用资源少,确保通知服务的快速响应。
安装步骤
前提条件
确保您的系统已安装Node.js(推荐LTS版本)或Docker,并有一个可用的自托管ntfy服务器。
使用npx安装并运行
npx ntfy-me-mcp
使用Docker安装并运行
docker pull dieg0ski/ntfy-me-mcp docker run -d dieg0ski/ntfy-me-mcp
服务器配置
'ntfy-me-mcp' 服务器通过环境变量进行配置,无需修改代码。 重要的环境变量包括:
- 'NTFY_TOPIC': 必需,指定接收通知的ntfy主题名称。例如:'NTFY_TOPIC=my_alerts'
- 'NTFY_URL': 可选,ntfy服务器的URL,默认为 'https://ntfy.sh'。例如:'NTFY_URL=https://my-ntfy.example.com'
- 'NTFY_TOKEN': 可选,用于认证的访问令牌。如果'PROTECTED_TOPIC'为'true'且未提供,服务器会提示输入。例如:'NTFY_TOKEN=your_secret_token'
- 'PROTECTED_TOPIC': 可选,设置为'"true"'表示该ntfy主题需要认证。默认为'false'。例如:'PROTECTED_TOPIC=true'
对于MCP客户端,连接 'ntfy-me-mcp' 服务器的配置示例如下:
{ "name": "ntfy-me-mcp", "description": "用于发送ntfy通知的MCP服务器", "command": "npx", "args": ["ntfy-me-mcp"], "environment": { "NTFY_TOPIC": "your_topic_name", "NTFY_URL": "https://ntfy.sh", "NTFY_TOKEN": "your_optional_token", "PROTECTED_TOPIC": "true" }, "capabilities": { "tools": ["ntfy_me"] } }
- 'name': 服务器的名称,与 'McpServer' 实例中的名称一致。
- 'description': 服务器的简要描述。
- 'command': 启动MCP服务器的命令。
- 'args': 启动命令的参数。
- 'environment': 传递给服务器进程的环境变量,用于配置ntfy主题、URL和认证令牌。
- 'capabilities': 服务器提供的功能列表,例如这里声明了提供的工具 'ntfy_me'。
基本使用方法
部署并配置好 'ntfy-me-mcp' 服务器后,您的LLM客户端即可通过JSON-RPC调用其内置的 'ntfy_me' 工具。 该工具接受以下参数:
- 'taskTitle' (字符串, 必填): 通知标题,例如“任务完成”或“系统错误”。
- 'taskSummary' (字符串, 必填): 通知详情或摘要。
- 'ntfyUrl' (字符串, 可选): 覆盖默认的ntfy服务器URL。
- 'ntfyTopic' (字符串, 可选): 覆盖默认的ntfy主题。
- 'accessToken' (字符串, 可选): 覆盖默认的ntfy访问令牌。
- 'priority' (枚举, 可选): 消息优先级,可选值包括 "min", "low", "default", "high", "max"。
- 'tags' (字符串数组, 可选): 通知标签,可包含ntfy支持的表情符号短代码(例如 "warning")。
示例(由LLM客户端调用的JSON-RPC请求体):
{ "jsonrpc": "2.0", "id": 1, "method": "tool_code/ntfy_me", "params": { "taskTitle": "报告生成完成", "taskSummary": "每日数据分析报告已成功生成并上传至云存储。", "priority": "high", "tags": ["check", "report"] } }
服务器将执行通知发送,并返回成功或失败的JSON-RPC响应。
信息
分类
AI与计算