通知服务器演示

一个完整的MCP(模型上下文协议)通知和订阅的生产就绪演示,包含工作示例、多种模式、交互式演示和完整文档。

  • by whocaresthat
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 whocaresthat/mcp-notification-server

使用说明

MCP 通知服务器 - 完整演示

A. 全面且可投入生产的演示 关于MCP(模型上下文协议)的通知和订阅,提供工作示例、多种模式、交互式演示以及完整的文档。

🎯 这是什么?

这个仓库提供了 最完整的演示 现有MCP通知包括:

  • 实际运行的服务器实现(基础版和高级版)
  • 交互式客户端演示
  • 现实世界中的通知模式
  • 全面的测试场景
  • 完整的架构文档
  • 分步指南

非常适合学习如何在自己的MCP服务器上实现通知功能!

⚡ 快速入门

5分钟内开始跑步 → QUICKSTART.md 翻译为中文是:快速入门指南.md

git clone https://github.com/whocaresthat/mcp-notification-server.git
cd mcp-notification-server
npm install
npm run build

# Run interactive demo
node dist/examples/client.js

📚 完整文档

文件 描述
🚀 QUICKSTART.md 翻译为中文是:“快速入门指南.md”(其中“.md”通常表示Markdown格式的文件) 5分钟内快速启动并运行
🎬(视频播放图标) DEMO.md 翻译为中文是:“演示文件.md” 或 “示例文件.md”(具体翻译可能根据上下文有所调整,但“DEMO”通常可译为“演示”或“示例”) 交互式演示指南
🏗️ ARCHITECTURE.md 翻译为中文是:“架构.md”(其中,“md”通常表示Markdown文件格式) 系统设计、模式与最佳实践
🧪 test-scenarios.md 翻译为中文是:“测试场景.md” 10个全面的测试场景
📚(一本书) patterns.md(文件名,可译为“模式.md”或保持原样,因为文件扩展名通常不翻译) 7种通知模式及代码示例

✨ 特点/功能

三个实施层面

  1. 基本服务器 (src/index.ts 翻译为中文是:源代码目录下的入口文件(或索引文件).ts(TypeScript文件))

    • 简单,易于理解
    • 核心通知概念
    • 非常适合学习
  2. 高级服务器 (示例/高级服务器.ts)

    • 文件系统监控
    • Webhook 端点
    • 定期更新
    • 生产模式
  3. 交互式客户端 (`examples/client.ts` 翻译为中文是:“示例/客户端代码.ts” 或 “示例/客户端文件.ts”(具体翻译可能根据上下文调整,但基本意思是表示这是一个示例中的客户端代码或文件))

    • 完整的客户端实现
    • 自动化演示
    • 显示通知在运行中的状态

综合示例

✅ 事件驱动的通知 ✅ 定期更新(定时器) ✅ 文件系统监控 ✅ Webhook 集成 ✅ 基于阈值的警报 ✅ 批量通知 ✅ 多个订阅者 ✅ 订阅生命周期管理

🎓 你将学到的内容

适合初学者

  • ✓ 什么是MCP通知?
  • ✓ 如何启用订阅
  • ✓ 发送您的第一条通知
  • ✓ 使用Claude桌面版进行测试

针对高级用户

  • ✓ 可投入生产的图案/模板
  • ✓ 性能优化
  • ✓ 错误处理策略
  • ✓ 安全考量
  • ✓ 可扩展性模式

🚀 使用方法

选项1:互动演示

npm install
npm run build
node dist/examples/client.js

通过自动化演示,实时查看通知功能!

选项2:Claude桌面版

在您的Claude配置中添加:

{
  "mcpServers": {
    "notification-demo": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-notification-server/dist/index.js"]
    }
  }
}

然后在Claude上试试:

  • “订阅 counter://main”
  • “将计数器增加5”
  • “当前计数器的值是多少?”

选项3:MCP检查器

npx @modelcontextprotocol/inspector dist/index.js

打开 http://localhost:5173 进行交互式测试。

选项4:自定义集成

将此代码作为您自己的MCP服务器的模板来使用!

📖 文档亮点

架构概述

Client ──subscribe──> Server
Client <──notify──────┘

服务器:

  1. 接受客户的订阅
  2. 监控资源的变化
  3. 自动通知订阅者
  4. 管理订阅生命周期

看 ARCHITECTURE.md 翻译为中文是:“架构.md”(其中,“.md”表示这是一个Markdown格式的文件) 以获取完整详情。

通知模式

来自 `patterns.md` 翻译成中文为:“模式.md” 或 “样式指南.md”(具体翻译取决于上下文,如果是指文件名中的“patterns”,通常可以理解为“模式”或“样式指南”等含义)。在这里,为了保持文件名的简洁性,通常直接翻译为“模式.md”即可:

  1. 事件驱动 - 用户操作触发通知
  2. 周期性的 - 定期更新(定时器)
  3. 文件系统 - 监控文件变化
  4. 阈值 - 对重要数值发出警报
  5. 批量处理的 - 群组通知
  6. 过滤过的 - 条件更新
  7. 级联 - 相关资源更新

测试场景

来自 测试场景说明文件(或:测试情景.md):

  • 基本订阅和通知
  • 多个订阅者
  • 退订行为
  • 多种资源
  • 错误处理
  • 负载下的性能
  • 连接丢失恢复
  • 还有更多。。。

🎯 实际应用场景

这个演示展示了以下模式:

  • 📊 表格/数据图表 实时仪表板 - 实时数据更新
  • 🔍(放大镜图标,通常表示搜索或查看细节) 系统监控 - 健康检查和警报
  • 📁 文件夹 文件同步 - 热加载配置
  • 📝 翻译成中文是:📝(这个符号本身没有直接的中文翻译,但通常代表“便签”或“记事本”的意思,所以可以理解为“📝(便签/记事本)”) 日志流 - 实时日志查看
  • 🚨(紧急警报/危险信号) 警报系统 - 基于阈值的通知
  • 👥(表示“人们”或“人群”的符号,具体翻译可能根据上下文有所不同) 协作工具 - 多用户更新
  • 📈 分析(或:数据分析) - 实时指标追踪

📦 包含内容

mcp-notification-server/
├── 📄 QUICKSTART.md              # 5-minute setup guide
├── 📄 DEMO.md                    # Interactive walkthrough
├── 📄 ARCHITECTURE.md            # System design docs
├── src/
│   └── index.ts                  # Basic server (start here!)
├── examples/
│   ├── advanced-server.ts        # Production patterns
│   ├── client.ts                 # Interactive demo
│   ├── patterns.md               # 7 notification patterns
│   ├── test-scenarios.md         # Testing guide
│   └── run-demo.sh               # Easy demo runner
├── package.json
└── tsconfig.json

🔧 开发

# Install dependencies
npm install

# Build everything
npm run build

# Run basic server
npm start

# Run advanced server
node dist/examples/advanced-server.js

# Run interactive client demo
node dist/examples/client.js

📊 代码示例

最小化服务器

import { Server } from "@modelcontextprotocol/sdk/server/index.js";

const server = new Server(
  { name: "my-server", version: "1.0.0" },
  { capabilities: { resources: { subscribe: true } } }
);

// Handle subscriptions
server.setRequestHandler(SubscribeRequestSchema, async (request) => {
  subscriptions.set(clientId, request.params.uri);
  return {};
});

// Send notifications
await server.notification({
  method: "notifications/resources/updated",
  params: { uri: "resource://example" }
});

最小化客户端

import { Client } from "@modelcontextprotocol/sdk/client/index.js";

// Handle notifications
client.setNotificationHandler({
  method: "notifications/resources/updated",
  handler: async (notification) => {
    console.log(`Updated: ${notification.params.uri}`);
  }
});

// Subscribe
await client.request({
  method: "resources/subscribe",
  params: { uri: "resource://example" }
});

🧪 测试

运行综合测试场景:

# See all test scenarios
cat examples/test-scenarios.md

# Run with MCP Inspector
npx @modelcontextprotocol/inspector dist/index.js

🌟 主要特点

功能 基础服务器 高级服务器
订阅/取消订阅 ✅ ✅
工具触发的通知 ✅ ✅
文件系统监视 ❌ ✅
定期更新 ❌ ✅
Webhook 集成 ❌(否) ✅(是)
多个订阅者 ✅ ✅
错误处理 ✅ ✅
性能优化 基本 ✅

🤝 贡献(或“参与贡献”)

欢迎投稿!请:

  1. 阅读 ARCHITECTURE.md 翻译为中文是:“架构.md”(其中“.md”通常表示Markdown格式文件,但在此处作为文件名的一部分,直接保留原样翻译)
  2. 检查 test-scenarios.md 翻译为中文是:“测试场景.md”
  3. 为新功能添加测试
  4. 更新文档

📚 了解更多

🎯 下一步行动

  1. 从这里开始 → QUICKSTART.md 翻译为中文是:“快速入门指南.md”(其中,“.md”表示这是一个Markdown格式的文件)
  2. 试用演示版 → node dist/examples/client.js
  3. 阅读模式 → `patterns.md` 翻译为中文是:“模式.md”
  4. 理解设计 → ARCHITECTURE.md(文件名,可译为“架构说明.md”或保持原样,因为文件名通常不直接翻译)
  5. 自建你的专属(系统/项目/产品等) → 把这个当作模板使用!

📄 许可证

MIT 许可证 - 详见 许可证 文件中详述


🌟 为什么选择这个仓库?

这是 最全面的MCP(可能是指某种特定系统或协议的缩写,如“多协议转换”或根据上下文具体确定)通知演示 之所以可用,是因为它包含:

  • ✅ 三级实施(基础级、高级、客户端)
  • ✅ 七种现实世界中的通知模式
  • ✅ 完整的架构文档
  • ✅ 设计全面的测试场景
  • ✅ 你可以立即运行的交互式演示
  • ✅ 可直接投入生产的代码,可用作模板
  • ✅ 各技能水平的分步指南

准备好掌握MCP通知了吗? 从……开始 QUICKSTART.md 翻译为中文是:“快速入门指南.md”(其中“.md”通常表示Markdown文件格式,但在此处作为文件名的一部分,直接保留不翻译)🚀!