使用说明
通知MCP服务器🔔
提供桌面通知功能的模型上下文协议(MCP)服务器。此服务器公开了一个工具,MCP客户端可以使用该工具发送带有自定义标题和消息的桌面通知。
这是对mcp使用情况的探索,如果您在本地运行此服务器并将其连接到客户端,然后客户端可以在任务完成时通知您,则没有用。
特性✨
- 具有SSE传输的MCP兼容服务器。
- 用于发送桌面通知的简单API。
- 与本机操作系统通知系统集成。
- Docker支持运行时UID/GID配置和D-Bus直通,用于容器通知。
- 使用最小Docker镜像
FROM scratch.
入门指南🚀
先决条件
- Rust工具链(1.76.0或更高版本)。
- 支持桌面通知的系统(用于本地运行的Linux/macOS/Windows)。
- 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
此脚本将:
- 编译Rust应用程序
x86_64-unknown-linux-musl(对于静态二进制文件)。 - 构建一个名为的Docker镜像
michielroos/notify-mcp使用aFROM scratch基地。
然后,使用以下命令运行容器 run.sh 脚本:
./run.sh
此脚本将:
- 停止并删除任何名为的现有容器
notify-mcp-container. - 从以下位置启动一个新的Docker容器
michielroos/notify-mcp图像。 - 容器内的服务器将侦听由指定的端口
PORT环境变量(默认值为3000),映射到主机上的同一端口。
Docker:用于通知的自定义UID/GID和D-Bus(通过 run.sh)
- 运行时UID/GID:The
run.sh该脚本允许您使用特定的UID和GID在Docker容器内运行应用程序。默认情况下,它使用当前主机用户的UID/GID(如果可以通过以下方式检测到id -u/id -g)或者回落到1000。您可以通过设置进行自定义APP_UID和APP_GID环境变量 之前 跑步run.sh:APP_UID=1001 APP_GID=1001 ./run.sh - D-Bus用于来自容器的桌面通知:对于容器化服务器向您的主机系统发送桌面通知
run.sh脚本挂载主机的D-Bus套接字(通常$XDG_RUNTIME_DIR/bus)放入容器中。它还设置了必要的环境变量(DBUS_SESSION_BUS_ADDRESS,XDG_RUNTIME_DIR)在容器内,应用程序可以查找和使用此套接字。这允许notify-rust(和底层库)与主机的通知守护进程通信。- 安全说明:安装D-Bus插座可减少容器隔离。虽然此功能是必要的,但请注意,受感染的容器可能会与主机上的其他D-Bus服务进行交互。请谨慎使用,特别是在容器映像源不完全受信任或处于多用户环境中的情况下。
用法📋
此服务器可以与支持SSE传输的任何MCP客户端一起使用,例如:
- VS代码中的GitHub副本
- Claude桌面应用程序(如果它支持自定义MCP SSE服务器)
- 自定义MCP客户端
将服务器添加到VS代码
- 打开VS代码(使用GitHub Copilot或类似的启用MCP的扩展)。
- 运行命令:
MCP: Add server(或与您的分机等效的)。 - 选择“HTTP(服务器发送的事件)”作为传输。
- 输入服务器URL。如果在本地运行(本机或Docker通过
build.sh默认值):http://127.0.0.1:3000/sse(或您的自定义港口,如果PORTenv-var已设置)。 - 从VS Code中的MCP面板启动服务器。
示例用法
连接后,您可以指示MCP客户端使用 notify 工具:
@mcp notify title="Hello from MCP" message="This notification came via the server!"
或者以更具对话性的方式与代理人:
Send a notification with the title "Reminder" and the message "Meeting in 5 minutes."
可用工具🛠️
通知工具(notify)
发送带有自定义标题和消息的桌面通知。
参数:
title(string):通知的标题。message(string):通知的正文。
发展👨💻
该项目使用 rust-mcp-sdk 用于MCP服务器的实现和 notify-rust 用于桌面通知功能。
- 添加工具:在中定义新工具
src/tools.rs(结构体,#[mcp_tool]宏,call_tool逻辑)并将其添加到tool_box!枚举。 - 处理器逻辑:更新中的处理程序
src/handler.rs如果新工具需要不同的参数处理,或者如果新的MCP消息类型需要自定义处理。 - 服务器配置:调整中的服务器设置(端口、主机、功能)
src/main.rs. - 测试:使用运行测试
cargo test.为新功能添加新测试。
许可证📄
此项目根据MIT许可证获得许可-请参阅 LICENSE 文件以获取详细信息(如果已创建,则假定为MIT或指定)。
