这是一个提供会议数据管理工具的模型上下文协议(MCP)服务器,包括会议记录、录音、日历事件和搜索功能。
要在Claude Desktop中使用Meeting BaaS:
编辑Claude Desktop配置文件:
vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
添加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"
}
}
对于日历集成,可以在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" // 可选
}
}
保存文件并重启Claude Desktop。
注意: 日历集成是可选的。Meeting BaaS可以不连接日历使用,只需省略
calendarOAuth部分即可。
该项目实现了一个模型上下文协议(MCP)服务器,允许像Claude和Cursor这样的AI助手访问和操作会议数据。它提供了一组工具和资源,可用于:
邀请会议机器人:创建并邀请机器人参加视频会议,自动录制和转录会议
"为我明天的Zoom会议创建一个新的会议机器人"
查询会议数据:通过会议记录搜索特定信息,无需观看整个录音
"在我的最近会议中搜索关于季度预算的讨论"
"查找昨天团队会议中提到的所有关于阿波罗项目的提及"
"显示简在讲话的部分"
管理日历事件:查看和组织日历条目和即将到来的会议
访问录音信息:获取会议录音的元数据及其状态
克隆仓库:
git clone <repository-url>
cd mcp-baas
安装依赖项:
npm install
构建项目:
npm run build
启动服务器:
npm run start
默认情况下,服务器运行在7017端口,并在http://localhost:7017/mcp暴露MCP端点。
服务器通过MCP协议暴露多个工具:
oauthGuidance:获取设置Google或Microsoft日历OAuth的详细分步指南
listRawCalendars:列出Google或Microsoft日历在集成前可用的日历
platform ("Google" 或 "Microsoft"),clientId,clientSecret,refreshTokensetupCalendarOAuth:使用OAuth凭证集成日历
platform ("Google" 或 "Microsoft"),clientId,clientSecret,refreshToken,rawCalendarId(可选)listCalendars:列出所有已集成的日历
getCalendar:获取特定日历集成的详细信息
calendarId(日历的UUID)deleteCalendar:永久删除日历集成
calendarId(日历的UUID)resyncAllCalendars:强制刷新所有连接的日历
listUpcomingMeetings:列出日历中的即将举行的会议
calendarId,status(可选:"upcoming","past","all"),limit(可选)listEvents:列出带有综合过滤选项的日历事件
calendarId,加上可选过滤器如startDateGte,startDateLte,attendeeEmail等listEventsWithCredentials:使用直接提供的凭证列出日历事件
calendarId,apiKey,加上与listEvents相同的可选过滤器listEvents相同的信息,但带有直接认证getEvent:获取特定日历事件的详细信息
eventId(事件的UUID)scheduleRecording:安排机器人记录即将举行的会议
eventId,botName,加上可选设置如botImage,recordingMode等scheduleRecordingWithCredentials:使用直接提供的凭证安排录音
eventId,apiKey,botName,加上与scheduleRecording相同的可选设置cancelRecording:取消之前安排的录音
eventId,allOccurrences(可选,针对重复事件)cancelRecordingWithCredentials:使用直接提供的凭证取消录音
eventId,apiKey,allOccurrences(可选)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(有关会议的附加元数据对象,例如会议类型、自定义摘要提示、搜索关键词)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列表,以及可选maxMomentsgenerateQRCode:生成一个可以用作机器人头像的人工智能生成的二维码图像
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密钥(可选,如果没有提供则使用默认值)"生成一个带有我的电子邮件lazare@spoke.app的二维码,看起来像水晶风格的老虎"
"生成一个带有我的网站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,加上可选timestamp,title,speakerName和description📽️ **会议录音:每周团队同步**
⏱️ 时间戳:00:12:35
🎤 发言人:Sarah Johnson
📝 讨论新的产品路线图
🔗 [查看录音](https://meetingbaas.com/viewer/abc123?t=755)
shareMeetingSegments:创建指向会议中多个重要时刻的链接列表
botId和带有时间戳、发言人和描述的segments数组为即将举行的会议创建一个机器人:
"为我即将举行的Zoom会议https://zoom.us/j/123456789创建一个机器人"
机器人会自动加入会议并开始录制。
检查录音状态:
"我早些时候开始的Zoom通话的会议录音状态是什么?"
获取获得OAuth凭证的指导:
"我想集成我的Google日历。如何获取OAuth凭证?"
在集成前列出可用的日历:
"列出我可用的Google日历。以下是我的OAuth凭证:
- 客户端ID:my-client-id-123456789.apps.googleusercontent.com
- 客户端密钥:my-client-secret-ABCDEF123456
- 刷新令牌:my-refresh-token-ABCDEF1123456789"
使用特定日历设置日历集成:
"使用这些凭证集成我的Google日历:
- 平台:Google
- 客户端ID:my-client-id-123456789.apps.googleusercontent.com
- 客户端密钥:my-client-secret-ABCDEF123456
- 刷新令牌:my-refresh-token-ABCDEF123456789
- 原始日历ID:primary@gmail.com"
查看即将举行的会议:
"从日历1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d显示我即将举行的会议"
为即将举行的会议安排录音:
"为带有事件ID 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d的团队会议安排录音。
配置机器人如下:
- 名称:团队会议机器人
- 录音模式:gallery_view
- 加入消息:大家好,我是来记录会议的"
查看日历中所有已安排录音的会议:
"显示我日历中所有已安排录音的会议"
取消之前安排的录音:
"取消事件7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d的录音"
如果会议丢失,刷新日历数据:
"强制刷新我所有连接的日历"
获取会议的完整记录:
"获取带有机器人ID abc-123的团队会议记录"
查找会议中的关键时刻:
"从带有机器人ID xyz-456的昨天的产品规划会议中识别关键时刻"
分享会议中的特定时刻:
"创建一个可分享的链接到会议abc-123的时间戳12:45,约翰正在谈论预算的部分"
您可以在查询中直接提供API凭证:
使用直接凭证列出事件:
"使用API密钥tesban从日历5c99f8a4-f498-40d0-88f0-29f698c53c51列出参与人是philipe@spoke.app的事件"
使用直接凭证安排录音:
"使用API密钥tesban为事件78d06b42-794f-4efe-8195-62db1f0052d5安排录音,机器人名称为'每周会议机器人'"
使用直接凭证取消录音:
"使用API密钥tesban取消事件97cd62f0-ea9b-42b3-add5-7a607ce6d80f的录音"
使用直接凭证获取会议数据:
"使用API密钥tesban获取会议47de9462-bea7-406c-b79a-fd6b82c3de76的数据"
生成带有联系信息和定制设计的二维码:
"生成带有以下参数的二维码:
- 类型:email
- 目的地:john.doe@company.com
- 提示:创建一个带有抽象蓝色图案的专业外观二维码,类似于企业标志
- 样式:style_crystal"
在会议中使用生成的二维码作为机器人的头像: