返回市场
会议-MCP

会议-MCP

作者:Meeting-BaaS21 星标更新:2025-06-30

项目介绍

Meeting BaaS MCP Server

项目Logo

<p align="center"><a href="https://discord.com/invite/dsvFgDTr6c"><img height="60px" src="https://gips1.baidu.com/it/u=1420248715,4175390186&fm=3081&app=3081&f=PNG?w=598&h=187" alt="加入我们的Discord!"></a></p>

这是一个提供会议数据管理工具的模型上下文协议(MCP)服务器,包括会议记录、录音、日历事件和搜索功能。

快速开始:与Claude Desktop集成

要在Claude Desktop中使用Meeting BaaS:

  1. 编辑Claude Desktop配置文件:

    vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
    
  2. 添加Meeting BaaS配置:

    "meetingbaas": {
      "command": "/bin/bash",
      "args": [
        "-c",
        "cd /path/to/meeting-mcp && (npm run build 1>&2) && export MCP_FROM_CLAUDE=true && node dist/index.js"
      ],
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
    
  3. 对于日历集成,可以在botConfig中添加calendarOAuth部分:

    "botConfig": {
      "calendarOAuth": {
        "platform": "Google",  // 或 "Microsoft"
        "clientId": "YOUR_OAUTH_CLIENT_ID",
        "clientSecret": "YOUR_OAUTH_CLIENT_SECRET", 
        "refreshToken": "YOUR_REFRESH_TOKEN",
        "rawCalendarId": "primary@gmail.com"  // 可选
      }
    }
    
  4. 保存文件并重启Claude Desktop。

注意: 日历集成是可选的。Meeting BaaS可以不连接日历使用,只需省略calendarOAuth部分即可。

概述

该项目实现了一个模型上下文协议(MCP)服务器,允许像Claude和Cursor这样的AI助手访问和操作会议数据。它提供了一组工具和资源,可用于:

  • 邀请会议机器人:创建并邀请机器人参加视频会议,自动录制和转录会议

    "为我明天的Zoom会议创建一个新的会议机器人"
    
  • 查询会议数据:通过会议记录搜索特定信息,无需观看整个录音

    "在我的最近会议中搜索关于季度预算的讨论"
    "查找昨天团队会议中提到的所有关于阿波罗项目的提及"
    "显示简在讲话的部分"
    
  • 管理日历事件:查看和组织日历条目和即将到来的会议

  • 访问录音信息:获取会议录音的元数据及其状态

预备条件

  • Node.js(v16或更高版本)
  • npm
  • MeetingBaaS账户:您需要使用公司电子邮件地址访问MeetingBaaS账户
    • 所有日志、机器人和共享链接都可供具有相同公司域(非个人邮箱如gmail.com)的同事使用
    • 这使得所有团队成员都可以无缝协作,访问由组织内任何人创建的会议录音和记录

安装

  1. 克隆仓库:

    git clone <repository-url>
    cd mcp-baas
    
  2. 安装依赖项:

    npm install
    
  3. 构建项目:

    npm run build
    

使用方法

启动服务器:

npm run start

默认情况下,服务器运行在7017端口,并在http://localhost:7017/mcp暴露MCP端点。

可用工具

服务器通过MCP协议暴露多个工具:

日历工具

  • oauthGuidance:获取设置Google或Microsoft日历OAuth的详细分步指南

    • 不需要参数
    • 返回获取OAuth凭证和设置日历集成的全面指南
  • listRawCalendars:列出Google或Microsoft日历在集成前可用的日历

    • 参数:platform ("Google" 或 "Microsoft"),clientIdclientSecretrefreshToken
    • 返回可用日历及其ID和主要状态的列表
  • setupCalendarOAuth:使用OAuth凭证集成日历

    • 参数:platform ("Google" 或 "Microsoft"),clientIdclientSecretrefreshTokenrawCalendarId(可选)
    • 返回成功集成的确认及日历详情
  • listCalendars:列出所有已集成的日历

    • 不需要参数
    • 返回所有日历的名称、电子邮件地址和UUID列表
  • getCalendar:获取特定日历集成的详细信息

    • 参数:calendarId(日历的UUID)
    • 返回详细的日历信息
  • deleteCalendar:永久删除日历集成

    • 参数:calendarId(日历的UUID)
    • 返回成功删除的确认
  • resyncAllCalendars:强制刷新所有连接的日历

    • 不需要参数
    • 返回同步操作的状态
  • listUpcomingMeetings:列出日历中的即将举行的会议

    • 参数:calendarIdstatus(可选:"upcoming","past","all"),limit(可选)
    • 返回带有名称、时间及录音状态的会议列表
  • listEvents:列出带有综合过滤选项的日历事件

    • 参数:calendarId,加上可选过滤器如startDateGtestartDateLteattendeeEmail
    • 返回带有丰富信息的详细事件列表
  • listEventsWithCredentials:使用直接提供的凭证列出日历事件

    • 参数:calendarIdapiKey,加上与listEvents相同的可选过滤器
    • 返回与listEvents相同的信息,但带有直接认证
  • getEvent:获取特定日历事件的详细信息

    • 参数:eventId(事件的UUID)
    • 返回详细的事件信息,包括参与者和录音状态
  • scheduleRecording:安排机器人记录即将举行的会议

    • 参数:eventIdbotName,加上可选设置如botImagerecordingMode
    • 返回成功安排的确认
  • scheduleRecordingWithCredentials:使用直接提供的凭证安排录音

    • 参数:eventIdapiKeybotName,加上与scheduleRecording相同的可选设置
    • 返回成功安排的确认
  • cancelRecording:取消之前安排的录音

    • 参数:eventIdallOccurrences(可选,针对重复事件)
    • 返回成功取消的确认
  • cancelRecordingWithCredentials:使用直接提供的凭证取消录音

    • 参数:eventIdapiKeyallOccurrences(可选)
    • 返回成功取消的确认
  • checkCalendarIntegration:检查和诊断日历集成状态

    • 不需要参数
    • 返回全面的状态报告和故障排除提示

会议工具

  • createBot:创建一个可以加入视频会议以记录和转录会议的会议机器人
    • 参数:
      • meeting_url(要加入的会议URL)
      • name(可选机器人名称)
      • botImage(可选机器人的头像图片URL)
      • entryMessage(机器人加入时发送的消息)
      • deduplicationKey(可选键以覆盖加入同一会议的5分钟限制)
      • nooneJoinedTimeout(如果无人加入,机器人离开的超时时间,单位秒)
      • waitingRoomTimeout(如果卡在等候室,机器人离开的超时时间,单位秒)
      • speechToTextProvider(可选转录提供商:"Gladia","Runpod"或"Default")
      • speechToTextApiKey(转录提供商的API密钥)
      • streamingInputUrl(用于流式音频输入的WebSocket URL)
      • streamingOutputUrl(用于流式音频输出的WebSocket URL)
      • streamingAudioFrequency(流式传输频率:"16khz"或"24khz")
      • extra(有关会议的附加元数据对象,例如会议类型、自定义摘要提示、搜索关键词)
    • 返回:机器人详情,包括ID和加入状态
  • getBots:列出所有机器人及其关联会议
  • getBotsByMeeting:获取特定会议URL的机器人
  • getRecording:检索特定机器人/会议的录音信息
  • getRecordingStatus:检查正在进行的录音状态
  • getMeetingData:获取特定会议的记录和录音数据
    • 参数:meetingId(要获取数据的会议ID)
    • 返回:会议录音信息,包括持续时间和记录段数
  • getMeetingDataWithCredentials:使用直接API凭证获取记录和录音数据
    • 参数:meetingId(会议ID),apiKey(身份验证的API密钥)
    • 返回:与getMeetingData相同的信息,但带有直接认证

录音工具

  • getMeetingTranscript:获取带有发言人姓名和内容按发言人分组的会议记录

    • 参数:botId(记录会议的机器人)
    • 返回:完整的记录,带有发言人信息,按发言人分组的段落格式
    • 示例输出:
      会议:"每周团队会议"
      持续时间:45分钟30秒
      记录:
      
      John Smith:大家好,感谢今天参加会议。我们有很多关于第三季度路线图和平台重新设计的进展需要讨论。
      
      Sarah Johnson:谢谢John。我已经准备了一些关于我们昨天收到的用户测试结果的幻灯片。反馈总体上是积极的,但我们有一些需要解决的地方。
      
  • findKeyMoments:自动识别并分享会议中重要时刻的链接

    • 参数:botId,可选meetingTitle,可选要查找的topics列表,以及可选maxMoments
    • 返回:基于记录自动检测的关键时刻的Markdown格式列表,带有链接
    • 使用AI驱动分析找到重要的时刻,无需手动选择时间戳

QR码工具

  • generateQRCode:生成一个可以用作机器人头像的人工智能生成的二维码图像
    • 参数:
      • type:二维码类型(url,email,phone,sms,text)
      • to:二维码的目的地(URL,电子邮件,电话号码或文本)
      • prompt:自定义二维码的AI提示(最多1000个字符)。您可以在提示文本中直接输入您的API密钥,例如“API密钥:qrc_your_key”或类似的短语。
      • style:二维码样式(style_default,style_dots,style_rounded,style_crystal)
      • useAsBotImage:是否将生成的二维码用作机器人头像(默认:true)
      • template:二维码模板ID(可选)
      • apiKey:您的二维码AI API密钥(可选,如果没有提供则使用默认值)
    • 返回:可以直接用于joinMeeting工具的生成二维码图像的URL
    • 示例用法:
      "生成一个带有我的电子邮件lazare@spoke.app的二维码,看起来像水晶风格的老虎"
      
    • 带有API密钥的提示示例:
      "生成一个带有我的网站https://example.com的二维码,看起来像山景。使用API密钥:qrc_my-personal-api-key-123456"
      
    • 带有正式参数的示例:
      "生成一个带有以下参数的二维码:
      - 类型:email
      - 目的地:john.doe@example.com
      - 提示:创建一个看起来像山景的二维码
      - 样式:style_rounded
      - API密钥:qrc_my-personal-api-key-123456"
      

链接分享工具

  • shareableMeetingLink:生成一个漂亮的、可分享的会议录音链接

    • 参数:botId,加上可选timestamptitlespeakerNamedescription
    • 返回:带有元数据的Markdown格式链接,可以直接在聊天中分享
    • 示例:
      📽️ **会议录音:每周团队同步**
      ⏱️ 时间戳:00:12:35
      🎤 发言人:Sarah Johnson
      📝 讨论新的产品路线图
      
      🔗 [查看录音](https://meetingbaas.com/viewer/abc123?t=755)
      
  • shareMeetingSegments:创建指向会议中多个重要时刻的链接列表

    • 参数:botId和带有时间戳、发言人和描述的segments数组
    • 返回:带有每个时刻直接链接的Markdown格式片段列表
    • 适用于创建长会议的目录

示例工作流程

录制会议

  1. 为即将举行的会议创建一个机器人:

    "为我即将举行的Zoom会议https://zoom.us/j/123456789创建一个机器人"
    
  2. 机器人会自动加入会议并开始录制。

  3. 检查录音状态:

    "我早些时候开始的Zoom通话的会议录音状态是什么?"
    

日历集成和自动录音

  1. 获取获得OAuth凭证的指导:

    "我想集成我的Google日历。如何获取OAuth凭证?"
    
  2. 在集成前列出可用的日历:

    "列出我可用的Google日历。以下是我的OAuth凭证:
    - 客户端ID:my-client-id-123456789.apps.googleusercontent.com
    - 客户端密钥:my-client-secret-ABCDEF123456
    - 刷新令牌:my-refresh-token-ABCDEF1123456789"
    
  3. 使用特定日历设置日历集成:

    "使用这些凭证集成我的Google日历:
    - 平台:Google
    - 客户端ID:my-client-id-123456789.apps.googleusercontent.com
    - 客户端密钥:my-client-secret-ABCDEF123456
    - 刷新令牌:my-refresh-token-ABCDEF123456789
    - 原始日历ID:primary@gmail.com"
    
  4. 查看即将举行的会议:

    "从日历1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d显示我即将举行的会议"
    
  5. 为即将举行的会议安排录音:

    "为带有事件ID 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d的团队会议安排录音。
    配置机器人如下:
    - 名称:团队会议机器人
    - 录音模式:gallery_view
    - 加入消息:大家好,我是来记录会议的"
    
  6. 查看日历中所有已安排录音的会议:

    "显示我日历中所有已安排录音的会议"
    
  7. 取消之前安排的录音:

    "取消事件7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d的录音"
    
  8. 如果会议丢失,刷新日历数据:

    "强制刷新我所有连接的日历"
    

分析会议内容

  1. 获取会议的完整记录:

    "获取带有机器人ID abc-123的团队会议记录"
    
  2. 查找会议中的关键时刻:

    "从带有机器人ID xyz-456的昨天的产品规划会议中识别关键时刻"
    
  3. 分享会议中的特定时刻:

    "创建一个可分享的链接到会议abc-123的时间戳12:45,约翰正在谈论预算的部分"
    

使用直接凭证工具

您可以在查询中直接提供API凭证:

  1. 使用直接凭证列出事件:

    "使用API密钥tesban从日历5c99f8a4-f498-40d0-88f0-29f698c53c51列出参与人是philipe@spoke.app的事件"
    
  2. 使用直接凭证安排录音:

    "使用API密钥tesban为事件78d06b42-794f-4efe-8195-62db1f0052d5安排录音,机器人名称为'每周会议机器人'"
    
  3. 使用直接凭证取消录音:

    "使用API密钥tesban取消事件97cd62f0-ea9b-42b3-add5-7a607ce6d80f的录音"
    
  4. 使用直接凭证获取会议数据:

    "使用API密钥tesban获取会议47de9462-bea7-406c-b79a-fd6b82c3de76的数据"
    

使用人工智能生成的二维码作为机器人头像

  1. 生成带有联系信息和定制设计的二维码:

    "生成带有以下参数的二维码:
    - 类型:email
    - 目的地:john.doe@company.com
    - 提示:创建一个带有抽象蓝色图案的专业外观二维码,类似于企业标志
    - 样式:style_crystal"
    
  2. 在会议中使用生成的二维码作为机器人的头像: