返回市场
竺黎-MCP服务器

竺黎-MCP服务器

作者:avisekrath6 星标更新:2025-06-22

项目介绍

Zulip MCP Server

这是一个模型上下文协议(MCP)服务器,它公开了Zulip REST API的功能作为工具供大型语言模型(LLMs)使用。此服务器允许AI助手通过编程方式与您的Zulip工作区进行交互。

功能

🔄 资源(上下文数据)

  • 用户目录:浏览组织成员及其角色和状态
  • 流目录:探索可用流及权限
  • 消息格式指南:完整的Zulip Markdown语法参考
  • 组织信息:服务器设置、策略及自定义表情符号
  • 用户组:可用于提及和权限的可用组

🛠️ 工具(25个可用操作)

辅助工具(适合LLM发现)

  • search-users - 在发送私信前按名称或电子邮件查找用户
  • get-started - 测试连接并获取工作区概览

消息操作

  • send-message - 发送到流或直接消息
  • get-messages - 使用高级过滤和搜索检索消息
  • get-message - 获取特定消息的详细信息
  • upload-file - 分享文件和图片
  • edit-message - 修改内容或移动主题
  • delete-message - 删除消息(需要管理员权限)
  • get-message-read-receipts - 查看谁阅读了消息
  • add-emoji-reaction - 使用Unicode或自定义表情符号反应
  • remove-emoji-reaction - 从消息中移除表情符号反应

定时消息及草稿

  • create-scheduled-message - 安排未来消息
  • edit-scheduled-message - 修改已安排的消息
  • create-draft - 创建新的消息草稿
  • get-drafts - 检索保存的草稿
  • edit-draft - 更新草稿内容

流管理

  • get-subscribed-streams - 列出用户的流订阅
  • get-stream-id - 根据名称获取流ID
  • get-stream-by-id - 获取详细的流信息
  • get-topics-in-stream - 浏览最近的主题

用户操作

  • get-users - 列出组织成员
  • get-user-by-email - 按电子邮件查找用户
  • get-user - 根据ID获取详细的用户信息
  • update-status - 设置状态消息和可用性
  • get-user-groups - 列出可用的用户组

📝 Zulip术语:流 vs 频道

在Zulip中,“流”和“频道”指的是同一个概念:

  • = 正式的Zulip术语(用于API、工具和界面)
  • 频道 = 来自Slack/Discord/Teams等的通用术语
  • 相同的东西 = 团队讨论话题的对话空间

此MCP服务器使用“流”以匹配Zulip的官方文档和API。

安装与配置

先决条件

快速开始

  1. 克隆并安装依赖项:
git clone <repository-url>
cd zulip-mcp-server
npm install
  1. 配置环境变量:
cp .env.example .env
# 编辑.env文件,填入您的Zulip凭证
  1. 构建并运行:
npm run build
npm start

环境配置

创建一个包含您的Zulip凭证的.env文件:

ZULIP_URL=https://your-organization.zulipchat.com
ZULIP_EMAIL=your-bot-email@yourcompany.com
ZULIP_API_KEY=your-api-key-here
NODE_ENV=production

获取Zulip API凭证

  1. 对于机器人访问(推荐):

    • 转到您的Zulip组织设置
    • 导航至“机器人”部分
    • 创建新机器人或使用现有机器人
    • 复制机器人的电子邮件和API密钥
  2. 对于个人访问

    • 转到个人设置 → 帐户与隐私
    • 找到“API密钥”部分
    • 生成或显示您的API密钥

Claude Desktop集成

要将此MCP服务器与Claude Desktop一起使用,请在您的Claude Desktop配置文件中添加以下配置:

选项1:使用环境变量(推荐)

添加到您的Claude Desktop配置:

{
  "mcpServers": {
    "zulip": {
      "command": "node",
      "args": ["/path/to/zulip-mcp-server/dist/server.js"],
      "env": {
        "ZULIP_URL": "https://your-organization.zulipchat.com",
        "ZULIP_EMAIL": "your-bot-email@yourcompany.com",
        "ZULIP_API_KEY": "your-api-key-here"
      }
    }
  }
}

选项2:使用.env文件

如果您更喜欢使用.env文件,请确保它位于项目目录中,并使用:

{
  "mcpServers": {
    "zulip": {
      "command": "node",
      "args": ["/path/to/zulip-mcp-server/dist/server.js"],
      "cwd": "/path/to/zulip-mcp-server"
    }
  }
}

Claude Desktop配置位置:

  • macOS~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

Cursor集成

要将此MCP服务器与Cursor IDE一起使用,请在您的Cursor MCP设置中添加以下内容:

Cursor MCP配置

添加到Cursor的MCP设置文件(.cursor-mcp/config.json在您的工作区或全局设置中):

{
  "mcpServers": {
    "zulip": {
      "command": "node",
      "args": ["/path/to/zulip-mcp-server/dist/server.js"],
      "env": {
        以下省略...

Cursor MCP配置位置:

  • 工作区:项目根目录下的.cursor-mcp/config.json
  • 全局:平台特定的Cursor设置目录

Raycast MCP扩展

要将此MCP服务器与Raycast一起使用,请在MCP扩展设置中进行配置:

Raycast MCP配置

添加到Raycast MCP扩展配置:

{
  "servers": {
    "zulip": {
      "name": "Zulip集成",
      "description": "发送消息并与Zulip工作区互动",
      "command": "node",
      "args": ["/path/to/zulip-mcp-server/dist/server.js"],
      "env": {
        "ZULIP_URL": "https://your-organization.zulipchat.com",
        "ZULIP_EMAIL": "your-bot-email@yourcompany.com",
        "ZULIP_API_KEY": "your-api-key-here"
      },
      "icon": "💬",
      "categories": ["communication", "productivity"]
    }
  }
}

Raycast设置步骤:

  1. 安装Raycast MCP扩展
  2. 打开Raycast偏好设置 → 扩展 → MCP
  3. 添加新的服务器配置
  4. 粘贴上述JSON配置
  5. 根据实际情况更新路径和凭证

Raycast用法:

  • 使用⌘ + Space打开Raycast
  • 搜索“Zulip”命令
  • 直接从Raycast界面执行MCP工具

支持的MCP客户端

此服务器兼容任何符合MCP标准的客户端。以下是经过验证的集成:

平台配置类型状态使用
Claude DesktopJSON配置✅ 已验证与Zulip集成的AI对话
Cursor IDE工作区/全局配置✅ 已验证带有Zulip通知的代码编辑器
Raycast扩展配置✅ 已验证快捷命令和自动化
其他MCP客户端标准MCP协议🔄 兼容任何符合MCP标准的应用程序

通用MCP命令:

node /path/to/zulip-mcp-server/dist/server.js

开发

脚本

npm run dev          # 开发模式,支持热重载
npm run build        # 构建生产版本
npm test            # 运行测试
npm run lint        # TypeScript代码检查
npm run typecheck   # 类型检查

项目结构

src/
├── server.ts        # 主MCP服务器
├── zulip/
│   └── client.ts    # Zulip API客户端
└── types.ts         # TypeScript定义

测试

使用MCP Inspector测试服务器:

npx @modelcontextprotocol/inspector npm start

使用示例

发送消息

// 发送到流
await callTool("send-message", {
  type: "stream",
  to: "general",
  topic: "每日站会",
  content: "早上好团队!👋\n\n**今日目标:**\n- 审查PR #123\n- 部署功能X"
});

// 发送直接消息
await callTool("send-message", {
  type: "direct",
  to: "user@example.com",
  content: "嘿!您方便时能否审查最新的更改?"
});

获取消息

// 从流中获取最近的消息
await callTool("get-messages", {
  narrow: [["stream", "general"], ["topic", "公告"]],
  num_before: 50
});

// 搜索消息
await callTool("get-messages", {
  narrow: [["search", "部署"], ["sender", "admin@example.com"]]
});

流管理

// 列出已订阅的流
await callTool("get-subscribed-streams", {
  include_subscribers: true
});

// 获取流中的主题
await callTool("get-topics-in-stream", {
  stream_id: 123
});

Markdown格式支持

服务器包括一个全面的格式指南资源。Zulip支持:

  • 标准Markdown:粗体、斜体、代码块、链接、列表
  • 提及@**全名**(通知),@_**名字**_(静默)
  • 流链接#**流名称**
  • 代码块:带有语法高亮
  • 数学:使用$$数学$$的LaTeX表达式
  • 剧透||隐藏内容||
  • 自定义表情符号:组织特定的表情符号

错误处理

服务器提供全面的错误处理:

  • 网络连接问题
  • 认证失败
  • 权限错误
  • 速率限制
  • 无效参数
  • Zulip API错误

所有错误都包含有助于调试的帮助信息。

贡献

  1. 叉出仓库
  2. 创建功能分支
  3. 为新功能添加测试
  4. 确保TypeScript编译通过
  5. 提交拉取请求

支持

对于问题和疑问: