🚀 Windows 10 和 macOS 带有通知功能的 MCP 服务器
本项目致力于打造一个具备桌面通知显示功能的 Model Context Protocol (MCP) 服务器。在 Windows 10 系统中借助 win10toast 库,而在 macOS 系统则利用 osascript 来实现通知展示。该服务器会接收来自 MCP 客户端(例如 VSCode Cline)的请求,并依据这些请求在桌面呈现相应通知。
🚀 快速开始
完成后的服务器可以这样运行:
python mcp_server.py --port 8000 --host 0.0.0.0
然后,可以通过 VSCode Cline 或其他 MCP 客户端通过 MCP 协议触发通知。
✨ 主要特性
- MCP 协议支持:实现与 MCP 客户端的通信,建立 Model Context Protocol,支持最新的 MCP 规格,确保与 VSCode Cline 完全兼容,能处理同步和异步请求。
- 通知系统:在 Windows 10 上用 win10toast 库显示桌面通知,在 macOS 上通过 osascript 在 NotificationCenter 中显示通知,支持可自定义的通知参数,如标题、消息内容、显示时间等。
- 客户端连接:支持在设置的网络接口上侦听,不仅限于 localhost 的 127.0.0.1,也支持所有接口的 0.0.0.0,支持设置端口(默认 8000),能处理多个同时客户端连接,并对连接问题进行适当的错误处理。
- 命令处理:处理来自 MCP 客户端的通知命令,支持触发通知的简单 API,进行命令验证并提供适当的错误响应。
📦 安装指南
此部分原文档未提及安装命令,故跳过。
💻 使用示例
基础用法
完成后的服务器可以这样运行:
python mcp_server.py --port 8000 --host 0.0.0.0
之后,可通过 VSCode Cline 或其他 MCP 客户端通过 MCP 协议触发通知。
📚 详细文档
需求
功能需求
- MCP 协议支持
- 实现与 MCP 客户端的通信,以建立 Model Context Protocol。
- 支持最新的 MCP 规格(提供与 VSCode Cline 的完全兼容性)。
- 处理同步和异步请求。
- 通知系统
- 在 Windows 10 上使用 win10toast 库显示桌面通知。
- 在 macOS 上使用 osascript 在 NotificationCenter 中显示通知。
- 支持可自定义的通知参数:
- 标题
- 消息内容
- 显示时间
- 图标(Windows 专用,可选)
- 副标题(macOS 专用,可选)
- 通知音(macOS 专用,可选)
- 通知类型(信息、警告、错误、成功)
- 客户端连接
- 支持在设置的网络接口上进行侦听(不仅限于 localhost 的 127.0.0.1,也支持所有接口的 0.0.0.0)。
- 支持设置端口(默认:8000)。
- 处理多个同时客户端连接。
- 对连接问题进行适当的错误处理。
- 命令处理
- 处理来自 MCP 客户端的通知命令。
- 支持触发通知的简单 API。
- 进行命令验证并提供适当的错误响应。
技术需求
- 服务器实现
- 使用 Python 3.8 或更高版本进行实现。
- 使用 asyncio 或类似库实现异步服务器。
- 遵循 MCP 服务器实现的最佳实践。
- 依赖关系
- Windows 10 桌面通知用的 win10toast。
- macOS 通知用的 osascript(系统自带)。
- 实现 MCP 协议所需的库。
- 最小化外部依赖项。
- 配置
- 支持通过命令行参数进行设置。
- 支持通过环境变量进行设置。
- 提供所有设置的合理默认值。
- 日志记录和错误处理
- 实现全面的日志系统。
- 记录所有客户端连接、命令、错误。
- 进行有意义的错误消息的适当异常处理。
测试需求
- 测试脚本
- 包含验证服务器功能的测试脚本。
- 展示各种通知类型的示例。
- 客户端互操作性
- 确保与 VSCode Cline 的互操作性。
- 文档化客户端特有的设置要求。
成果物
- Python 实现的 MCP 服务器。
- 验证功能的测试脚本。
- 列出所有依赖项的 requirements.txt。
- 使用方法和配置的相关文档。
- 一般问题的故障排除指南。
实现注意事项
- 让服务器绑定到 localhost 之外的所有接口(0.0.0.0)。
- 为处理同时请求使用适当的线程或异步模式。
- 包含适当的输入验证等安全措施。
- 提供详细的日志选项以便连接问题的调试。
- 实现服务器的适当关闭。
🔧 技术细节
- 服务器实现:采用 Python 3.8 或更高版本,借助 asyncio 或类似库实现异步服务器,遵循 MCP 服务器实现的最佳实践。
- 依赖关系:Windows 10 桌面通知依赖 win10toast,macOS 通知使用系统自带的 osascript,同时包含实现 MCP 协议所需的库,并尽量减少外部依赖项。
- 配置方式:支持通过命令行参数和环境变量进行设置,且为所有设置提供合理的默认值。
- 日志记录和错误处理:实现了全面的日志系统,记录所有客户端连接、命令和错误,并对有意义的错误消息进行适当的异常处理。