会议 BaaS MCP 服务器
模型上下文协议 (MCP) 服务器提供用于管理会议数据的工具,包括记录、录音、日历事件和搜索功能。
概述
该项目实现了一个模型上下文协议 (MCP) 服务器,允许 Claude 和 Cursor 等 AI 助手访问和操作会议数据。它公开了一组工具和资源,可用于:
邀请会议机器人:创建并邀请机器人参加您的视频会议,自动记录和转录会议内容
"Create a new meeting bot for my Zoom call tomorrow"查询会议数据:搜索会议记录并查找特定信息,无需观看整个记录
"Search my recent meetings for discussions about the quarterly budget" "Find all mentions of Project Apollo in yesterday's team meeting" "Show me parts of the meeting where Jane was speaking"管理日历事件:查看和组织日历条目和即将召开的会议
访问记录信息:获取有关会议记录及其状态的元数据
先决条件
Node.js(v16 或更高版本)
npm
MeetingBaaS 帐户:您需要使用公司电子邮件地址访问 MeetingBaaS 帐户
所有日志、机器人和共享链接均可供具有相同公司域名的同事使用(而不是像 gmail.com 这样的个人电子邮件)
这样可以实现无缝协作,所有团队成员都可以访问组织中任何人创建的会议记录和文字记录
安装
克隆存储库:
git clone <repository-url> cd mcp-baas安装依赖项:
npm install构建项目:
npm run build
用法
启动服务器:
默认情况下,服务器在端口 7017 上运行,并在http://localhost:7017/mcp
公开 MCP 端点。
可用工具
服务器通过 MCP 协议公开了几个工具:
日历工具
oauthGuidance
:获取有关为 Google 或 Microsoft 日历设置 OAuth 的详细分步说明无需参数
返回获取 OAuth 凭证和设置日历集成的全面说明
listRawCalendars
:在集成之前列出 Google 或 Microsoft 提供的日历参数:
platform
(“Google”或“Microsoft”)、clientId
、clientSecret
、refreshToken
返回可用日历及其 ID 和主要状态的列表
setupCalendarOAuth
:使用 OAuth 凭证集成日历参数:
platform
(“Google”或“Microsoft”),clientId
,clientSecret
,refreshToken
,rawCalendarId
(可选)返回与日历详细信息成功集成的确认
listCalendars
:列出所有集成日历无需参数
返回所有日历及其名称、电子邮件地址和 UUID 的列表
getCalendar
:获取有关特定日历集成的详细信息参数:
calendarId
(日历的UUID)返回全面的日历详细信息
deleteCalendar
:永久删除日历集成参数:
calendarId
(日历的UUID)返回删除成功的确认
resyncAllCalendars
:强制刷新所有连接的日历无需参数
返回同步操作的状态
listUpcomingMeetings
:列出日历中即将举行的会议参数:
calendarId
、status
(可选:“即将到来”、“过去”、“全部”)、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
(可选对象,包含有关会议的附加元数据,例如会议类型、自定义摘要提示、搜索关键字)
返回:机器人详细信息,包括 ID 和加入状态
getBots
:列出所有机器人及其相关会议getBotsByMeeting
:获取特定会议 URL 的机器人getRecording
:检索特定机器人/会议的记录信息getRecordingStatus
:检查正在进行的录音的状态getMeetingData
:获取特定会议的记录和录音数据参数:
meetingId
(要获取数据的会议的ID)返回:有关会议记录的信息,包括持续时间和记录片段数
getMeetingDataWithCredentials
:使用直接 API 凭证获取记录和录音数据参数:
meetingId
(会议ID)、apiKey
(用于身份验证的API密钥)返回:与
getMeetingData
相同的信息,但具有直接身份验证
成绩单工具
getMeetingTranscript
:获取会议记录,其中包含发言人姓名和按发言人分组的内容参数:
botId
(录制会议的机器人)返回:包含演讲者信息的完整记录,按演讲者分组格式化为段落
示例输出:
Meeting: "Weekly Team Meeting" Duration: 45m 30s Transcript: John Smith: Hello everyone, thanks for joining today's call. We have a lot to cover regarding the Q3 roadmap and our current progress on the platform redesign. Sarah Johnson: Thanks John. I've prepared some slides about the user testing results we got back yesterday. The feedback was generally positive but there are a few areas we need to address.
findKeyMoments
:自动识别并分享会议中重要时刻的链接参数:
botId
、可选的meetingTitle
、可选的要查找的topics
列表以及可选的maxMoments
返回:带有链接的关键时刻的 Markdown 格式列表,根据成绩单自动检测
使用人工智能分析来查找重要时刻,无需手动选择时间戳
二维码工具
generateQRCode
:创建可用作机器人头像的 AI 生成的二维码图像参数:
type
:二维码类型(url、电子邮件、电话、短信、文本)to
:二维码的目的地(URL、电子邮件、电话号码或文本)prompt
:AI 提示自定义二维码(最多 1000 个字符)。您可以直接在提示文本中输入“API key: qrc_your_key”或类似短语,包含您的 API 密钥。style
:二维码样式(style_default、style_dots、style_rounded、style_crystal)useAsBotImage
:是否使用生成的二维码作为机器人头像(默认值:true)template
:二维码的模板 ID(可选)apiKey
:您的 QR Code AI API 密钥(可选,如果未提供则使用默认密钥)
返回:生成的二维码图像的 URL,可直接与 joinMeeting 工具一起使用
使用示例:
"Generate a QR code with my email lazare@spoke.app that looks like a Tiger in crystal style"提示中包含 API 密钥的示例:
"Generate a QR code for my website https://example.com that looks like a mountain landscape. Use API key: qrc_my-personal-api-key-123456"带有形式参数的示例:
"Generate a QR code with the following parameters: - Type: email - To: john.doe@example.com - Prompt: Create a QR code that looks like a mountain landscape - Style: style_rounded - API Key: qrc_my-personal-api-key-123456"
链接共享工具
shareableMeetingLink
:生成格式良好、可共享的会议记录链接参数:
botId
,以及可选的timestamp
、title
、speakerName
和description
返回:带有元数据的 Markdown 格式链接,可在聊天中直接共享
例子:
📽️ **Meeting Recording: Weekly Team Sync** ⏱️ Timestamp: 00:12:35 🎤 Speaker: Sarah Johnson 📝 Discussing the new product roadmap 🔗 [View Recording](https://meetingbaas.com/viewer/abc123?t=755)
shareMeetingSegments
:创建指向会议中多个重要时刻的链接列表参数:
botId
以及包含时间戳、发言人和描述的segments
数组返回:Markdown 格式的片段列表,包含每个时刻的直接链接
适用于创建长时间会议的目录
示例工作流程
录制会议
为即将召开的会议创建一个机器人:
"Create a bot for my Zoom meeting at https://zoom.us/j/123456789"机器人会自动加入会议并开始录制。
检查录音状态:
"What's the status of my meeting recording for the Zoom call I started earlier?"
日历集成和自动记录
获取有关获取 OAuth 凭证的指导:
"I want to integrate my Google Calendar. How do I get OAuth credentials?"集成之前列出您的可用日历:
"List my available Google calendars. Here are my OAuth credentials: - Client ID: my-client-id-123456789.apps.googleusercontent.com - Client Secret: my-client-secret-ABCDEF123456 - Refresh Token: my-refresh-token-ABCDEF123456789"设置与特定日历的日历集成:
"Integrate my Google Calendar using these credentials: - Platform: Google - Client ID: my-client-id-123456789.apps.googleusercontent.com - Client Secret: my-client-secret-ABCDEF123456 - Refresh Token: my-refresh-token-ABCDEF123456789 - Raw Calendar ID: primary@gmail.com"查看即将召开的会议:
"Show me my upcoming meetings from calendar 1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"安排即将召开的会议的录制:
"Schedule a recording for my team meeting with event ID 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d. Configure the bot with: - Name: Team Meeting Bot - Recording Mode: gallery_view - Entry Message: Hello everyone, I'm here to record the meeting"检查日历中安排的所有录音:
"Show me all meetings in my calendar that have recordings scheduled"取消之前安排的录制:
"Cancel the recording for event 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d"如果缺少会议,则刷新日历数据:
"Force a resync of all my connected calendars"
简化日历集成
为了更简单地实现日历集成,您可以直接在 Claude Desktop 配置文件中配置日历 OAuth 凭据:
编辑配置文件:
vim ~/Library/Application\ Support/Claude/claude_desktop_config.json将
calendarOAuth
部分添加到您的 botConfig:"botConfig": { // other bot configuration... "calendarOAuth": { "platform": "Google", // or "Microsoft" "clientId": "YOUR_OAUTH_CLIENT_ID", "clientSecret": "YOUR_OAUTH_CLIENT_SECRET", "refreshToken": "YOUR_REFRESH_TOKEN", "rawCalendarId": "primary@gmail.com" // Optional } }保存文件并重新启动 Claude Desktop - 您的日历将自动集成。
这种方法无需手动调用 OAuth 设置工具,从而使日历集成成为一次性配置任务。
**注意:**日历集成完全可选。您只需在配置中省略
calendarOAuth
部分,即可在不连接日历的情况下使用会议 BaaS。日历集成功能可让您访问即将召开的会议,并自动记录日历事件,从而提升使用体验。
分析会议内容
获取会议的完整记录:
"Get the transcript from my team meeting with bot ID abc-123"找到会议中的关键时刻:
"Identify key moments from yesterday's product planning meeting with bot ID xyz-456"分享会议中的特定时刻:
"Create a shareable link to the part of meeting abc-123 at timestamp 12:45 where John was talking about the budget"
使用直接凭证工具
您可以在查询中直接提供 API 凭证:
列出具有直接凭证的事件:
"List events from calendar 5c99f8a4-f498-40d0-88f0-29f698c53c51 using API key tesban where attendee is philipe@spoke.app"使用直接凭证安排录音:
"Schedule a recording for event 78d06b42-794f-4efe-8195-62db1f0052d5 using API key tesban with bot name 'Weekly Meeting Bot'"使用直接凭证取消录音:
"Cancel the recording for event 97cd62f0-ea9b-42b3-add5-7a607ce6d80f using API key tesban"使用直接凭证获取会议数据:
"Get meeting data for meeting 47de9462-bea7-406c-b79a-fd6b82c3de76 using API key tesban"
使用人工智能生成的二维码作为机器人头像
生成包含您的联系信息和自定义设计的二维码:
"Generate a QR code with the following parameters: - Type: email - To: john.doe@company.com - Prompt: Create a professional-looking QR code with abstract blue patterns that resemble a corporate logo - Style: style_crystal"使用生成的二维码作为会议中的机器人头像:
"Join my Zoom meeting at https://zoom.us/j/123456789 with the following parameters: - Bot name: QR Code Assistant - Bot image: [URL from the generated QR code] - Entry message: Hello everyone, I'm here to record the meeting. You can scan my avatar to get my contact information."生成带有会议链接的二维码,以便于分享:
"Generate a QR code with the following parameters: - Type: url - To: https://zoom.us/j/123456789 - Prompt: Create a colorful QR code with a calendar icon in the center - Style: style_rounded"
访问会议记录
可以使用机器人 ID 直接通过会议 BaaS 查看器访问会议记录:
例如:
该查看器提供:
会议录像
同步文字记录,可识别说话人
按演讲者或主题导航
与队友直接共享链接
当使用createBot
、 getBots
或搜索工具时,您将收到可用于构建这些查看器 URL 的机器人 ID,以便轻松访问录音。
重要提示:所有会议录音和链接都会自动与使用相同公司邮箱域名(例如 @yourcompany.com)的同事共享。这样,您的整个团队无需单独授权即可访问录音,从而营造一个协作环境,让组织中的每个人都能访问会议内容。
配置
可以通过环境变量或编辑src/config.ts
文件来配置服务器。
关键配置选项:
PORT
:服务器监听的端口(默认值:7017)API_BASE_URL
:会议 BaaS API 的基本 URLDEFAULT_API_KEY
:用于测试的默认 API 密钥
与 Claude Desktop 集成
与 Claude Desktop 集成:
编辑Claude桌面配置文件:
vim ~/Library/Application\ Support/Claude/claude_desktop_config.json添加会议 BaaS MCP 服务器配置:
{ "mcpServers": { "meetingbaas": { "command": "/bin/bash", "args": [ "-c", "cd /path/to/meeting-mcp && (npm run build 1>&2) && MCP_FROM_CLAUDE=true node dist/index.js" ], "headers": { "x-api-key": "YOUR_API_KEY_FOR_MEETING_BAAS" }, "botConfig": { "name": "Meeting Assistant", "image": "https://meetingbaas.com/static/972043b7d604bca0d4b0048c7dd67ad2/fc752/previewFeatures.avif", "entryMessage": "Hello, I'm a bot from Meeting Baas. I'll be taking notes for this meeting.", "deduplicationKey": "unique_key_to_override_restriction", "nooneJoinedTimeout": 600, "waitingRoomTimeout": 600, "speechToTextProvider": "Gladia", "speechToTextApiKey": "YOUR_SPEECH_TO_TEXT_API_KEY", "extra": { "meetingType": "sales", "summaryPrompt": "Focus on action items and decision points", "searchKeywords": ["budget", "timeline", "deliverables"], "timeStampHighlights": [ {"time": "00:05:23", "note": "Discussion about Q2 sales numbers"}, {"time": "00:12:47", "note": "Team disagreement on marketing strategy"} ], "participants": ["John Smith", "Jane Doe", "Bob Johnson"], "project": "Project Phoenix", "department": "Engineering", "priority": "High", "followupDate": "2023-12-15", "tags": ["technical", "planning", "retrospective"] }, // Optional: Direct calendar OAuth integration // Add this section only if you want to enable calendar integration "calendarOAuth": { "platform": "Google", // or "Microsoft" "clientId": "YOUR_OAUTH_CLIENT_ID", "clientSecret": "YOUR_OAUTH_CLIENT_SECRET", "refreshToken": "YOUR_REFRESH_TOKEN", "rawCalendarId": "primary@gmail.com" // Optional - specific calendar ID } } } } }**注意:**将
/path/to/meeting-mcp
替换为您本地存储库的路径,并将YOUR_API_KEY
替换为您实际的 API 密钥。**重要提示:**请确保您使用的 API 密钥与您的公司邮箱账户关联。所有录音、机器人日志和共享链接将自动提供给使用相同邮箱域名的同事,从而实现无缝的团队协作。
**关于二维码 API 的注意事项:**二维码 API 使用与会议 BaaS API 相同的标头名称 (
x-api-key
),但必须单独配置。要使用二维码生成功能,您应该使用下面“二维码 API 密钥配置”部分中描述的方法之一,例如设置环境变量或直接在提示符中包含密钥。重新启动 Claude Desktop。
配置说明:
command
指定要使用的 shellargs
包含命令行参数:cd
到你的项目目录构建项目并将错误输出重定向到 stderr
使用
MCP_FROM_CLAUDE=true
环境变量运行服务器,以指示它从 Claude Desktop 运行
headers
包含用于身份验证的 API 密钥:x-api-key
:用于访问会议服务的会议 BaaS API 密钥
botConfig
允许您自定义机器人的外观和行为:name
:会议中显示的机器人名称(默认值:“Claude Assistant”)image
:可公开访问的图像的 URL,用作机器人的头像(可选)entryMessage
:机器人加入会议时发送的消息(可选)deduplicationKey
:用于覆盖加入同一场会议的 5 分钟限制的唯一密钥(可选)nooneJoinedTimeout
:如果没有参与者加入,机器人离开的超时时间(秒)(可选)waitingRoomTimeout
:如果机器人被困在等候室,则以秒为单位离开(可选)speechToTextProvider
:用于转录的提供者(“Gladia”,“Runpod”,“Default”)(可选)speechToTextApiKey
:语音转文本提供商的 API 密钥(如果需要)(可选)calendarOAuth
:使用 OAuth 凭证直接集成日历(可选)platform
:“Google”或“Microsoft”clientId
:您的 OAuth 客户端 IDclientSecret
:您的 OAuth 客户端密钥refreshToken
:您的 OAuth 刷新令牌rawCalendarId
:需要集成的特定日历的可选 ID
extra
:有关会议的附加元数据,用于增强 AI 能力(可选)例如:GXP38
extra
字段非常灵活 - 您可以添加任何适合您的组织和用例的结构化元数据。
与 Cursor 集成
与 Cursor 集成:
打开游标
前往“设置”
导航至“模型上下文协议”
添加新服务器:
名称:“会议 BaaS MCP”
类型:“sse”
服务器 URL:“ http://localhost:7017/mcp ”
如果需要身份验证,可以选择添加标头
发展
建造
使用 MCP Inspector 进行测试
开发模式(自动重新加载)
日志管理
该服务器包括优化的日志记录:
此命令:
清理不必要的日志文件和缓存数据
从日志中过滤掉重复的 ping 消息
减少磁盘使用量,同时保留重要的日志信息
为长期运行的服务器维护较小的日志占用空间
项目结构
src/index.ts
:主入口点src/tools/
:工具实现src/resources/
:资源定义src/api/
:会议 BaaS 后端的 API 客户端src/types/
:TypeScript 类型定义src/config.ts
:服务器配置src/utils/
:实用程序函数logging.ts
:日志过滤和管理tinyDb.ts
:持久机器人跟踪数据库
验证
服务器需要x-api-key
标头中的 API 密钥进行身份验证。您可以在配置中配置默认 API 密钥。
许多工具(以“WithCredentials”命名)也支持直接身份验证,您可以直接将 API 密钥作为参数提供,而不是在标题中提供。
执照
二维码 API 密钥配置
二维码生成器工具需要 QR Code AI API 的 API 密钥。您可以通过以下几种方式获取密钥:
直接在提示中:使用
generateQRCode
工具时,直接在提示文本中包含您的 API 密钥,例如“使用 API 密钥为我的网站https://example.com生成二维码:qrc_your_key”作为参数:使用
generateQRCode
工具时,提供您的 API 密钥作为apiKey
参数环境变量:设置
QRCODE_API_KEY
环境变量Claude Desktop 配置:将 API 密钥添加到位于以下位置的 Claude Desktop 配置文件中:
Mac/Linux:
~/Library/Application Support/Claude/claude_desktop_config.json
Windows:
%APPDATA%\Claude\claude_desktop_config.json
示例配置:
{ "headers": { "x-api-key": "qrc_your_key_here" } }
该工具将按上述顺序检查 API 密钥。如果未提供 API 密钥,则会使用默认 API 密钥(如果可用)。
您可以通过在QR Code AI API注册来获取 API 密钥。
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
模型上下文协议服务器使 AI 助手能够管理会议数据,包括创建会议机器人、搜索记录和组织日历事件。
Related MCP Servers
- -securityFlicense-qualityA versatile Model Context Protocol server that enables AI assistants to manage calendars, track tasks, handle emails, search the web, and control smart home devices.Last updated -19
- -securityFlicense-qualityA comprehensive Model Context Protocol server implementation that enables AI assistants to interact with file systems, databases, GitHub repositories, web resources, and system tools while maintaining security and control.Last updated -361
- AsecurityAlicenseAqualityA Model Context Protocol server that enables AI agents to join and interact with online meetings (Zoom and Google Meet), capturing transcripts and recordings to generate meeting summaries.Last updated -37MIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that allows users to create and manage meeting bots capable of joining video calls, speaking, sending chat messages, and retrieving meeting transcripts.Last updated -1113MIT License