项目简介

'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与计算