一个提供桌面通知功能的模型上下文协议(MCP)服务器。该服务器提供了一个工具,可以被MCP客户端用来发送带有自定义标题和消息的桌面通知。
这是一个对MCP使用的探索,如果你在本地运行此服务器并连接到一个可以在任务完成后通知你的客户端,则不会有任何用处。
FROM scratch构建的最小Docker镜像。1. 克隆仓库:
git clone https://github.com/Tuurlijk/notify-mcp.git
cd notify-mcp
2. 原生运行:
cargo build --release
cargo run --release
服务器将启动(默认在http://127.0.0.1:3000)。
3. 使用Docker构建和运行(推荐用于隔离性和可移植性):
首先,构建Docker镜像:
./build.sh
此脚本会:
x86_64-unknown-linux-musl(静态二进制文件)。FROM scratch基础构建名为michielroos/notify-mcp的Docker镜像。然后,使用run.sh脚本运行容器:
./run.sh
此脚本会:
notify-mcp-container的容器。michielroos/notify-mcp镜像启动一个新的Docker容器。PORT环境变量指定的端口上监听(默认为3000),映射到主机上的相同端口。run.sh)run.sh脚本允许你在Docker容器内以特定的UID和GID运行应用程序。默认情况下,它使用当前主机用户的UID/GID(如果可以通过id -u/id -g检测到)或回退到1000。你可以通过设置APP_UID和APP_GID环境变量来定制这些值,在运行run.sh之前:
APP_UID=1001 APP_GID=1001 ./run.sh
run.sh脚本将挂载主机的D-Bus套接字(通常为$XDG_RUNTIME_DIR/bus)到容器中。它还会在容器内部设置必要的环境变量(DBUS_SESSION_BUS_ADDRESS,XDG_RUNTIME_DIR),以便应用程序找到并使用这个套接字。这使得notify-rust(及其底层库)能够与主机的通知守护进程通信。
此服务器可以与支持SSE传输的任何MCP客户端一起使用,例如:
MCP: 添加服务器(或你的扩展对应的等效命令)。build.sh默认的Docker):http://127.0.0.1:3000/sse(或者如果你设置了PORT环境变量,则为自定义端口)。一旦连接,你可以指示你的MCP客户端使用notify工具:
@mcp notify title="来自MCP的问候" message="这条通知是通过服务器发送的!"
或者以更对话的方式与代理互动:
发送一条带有标题“提醒”和消息“会议还有5分钟”的通知。
notify)发送带有自定义标题和消息的桌面通知。
参数:
title(字符串):通知的标题。message(字符串):通知的正文文本。该项目使用rust-mcp-sdk实现MCP服务器,并使用notify-rust实现桌面通知功能。
src/tools.rs中定义新工具(结构体、#[mcp_tool]宏、call_tool逻辑),并将它们添加到tool_box!枚举中。src/handler.rs中的处理器。src/main.rs中。cargo test运行测试。为新功能添加新的测试。本项目根据MIT许可证发布 - 查看LICENSE文件以获取详情(如果有创建,否则假设为MIT或具体说明)。