会议 BaaS MCP 服务器
模型上下文协议 (MCP) 服务器提供用于管理会议数据的工具,包括记录、录音、日历事件和搜索功能。
概述
该项目实现了一个模型上下文协议 (MCP) 服务器,允许 Claude 和 Cursor 等 AI 助手访问和操作会议数据。它公开了一组工具和资源,可用于:
- 邀请会议机器人:创建并邀请机器人参加您的视频会议,自动记录和转录会议内容
- 查询会议数据:搜索会议记录并查找特定信息,无需观看整个记录
- 管理日历事件:查看和组织日历条目和即将召开的会议
- 访问记录信息:获取有关会议记录及其状态的元数据
先决条件
- Node.js(v16 或更高版本)
- npm
- MeetingBaaS 帐户:您需要使用公司电子邮件地址访问 MeetingBaaS 帐户
- 所有日志、机器人和共享链接均可供具有相同公司域名的同事使用(而不是像 gmail.com 这样的个人电子邮件)
- 这样可以实现无缝协作,所有团队成员都可以访问组织中任何人创建的会议记录和文字记录
安装
- 克隆存储库:
- 安装依赖项:
- 构建项目:
用法
启动服务器:
默认情况下,服务器在端口 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
(录制会议的机器人) - 返回:包含演讲者信息的完整记录,按演讲者分组格式化为段落
- 示例输出:
- 参数:
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 工具一起使用
- 使用示例:
- 提示中包含 API 密钥的示例:
- 带有形式参数的示例:
- 参数:
链接共享工具
shareableMeetingLink
:生成格式良好、可共享的会议记录链接- 参数:
botId
,以及可选的timestamp
、title
、speakerName
和description
- 返回:带有元数据的 Markdown 格式链接,可在聊天中直接共享
- 例子:
- 参数:
shareMeetingSegments
:创建指向会议中多个重要时刻的链接列表- 参数:
botId
以及包含时间戳、发言人和描述的segments
数组 - 返回:Markdown 格式的片段列表,包含每个时刻的直接链接
- 适用于创建长时间会议的目录
- 参数:
示例工作流程
录制会议
- 为即将召开的会议创建一个机器人:
- 机器人会自动加入会议并开始录制。
- 检查录音状态:
日历集成和自动记录
- 获取有关获取 OAuth 凭证的指导:
- 集成之前列出您的可用日历:
- 设置与特定日历的日历集成:
- 查看即将召开的会议:
- 安排即将召开的会议的录制:
- 检查日历中安排的所有录音:
- 取消之前安排的录制:
- 如果缺少会议,则刷新日历数据:
简化日历集成
为了更简单地实现日历集成,您可以直接在 Claude Desktop 配置文件中配置日历 OAuth 凭据:
- 编辑配置文件:
- 将
calendarOAuth
部分添加到您的 botConfig: - 保存文件并重新启动 Claude Desktop - 您的日历将自动集成。
这种方法无需手动调用 OAuth 设置工具,从而使日历集成成为一次性配置任务。
**注意:**日历集成完全可选。您只需在配置中省略
calendarOAuth
部分,即可在不连接日历的情况下使用会议 BaaS。日历集成功能可让您访问即将召开的会议,并自动记录日历事件,从而提升使用体验。
分析会议内容
- 获取会议的完整记录:
- 找到会议中的关键时刻:
- 分享会议中的特定时刻:
使用直接凭证工具
您可以在查询中直接提供 API 凭证:
- 列出具有直接凭证的事件:
- 使用直接凭证安排录音:
- 使用直接凭证取消录音:
- 使用直接凭证获取会议数据:
使用人工智能生成的二维码作为机器人头像
- 生成包含您的联系信息和自定义设计的二维码:
- 使用生成的二维码作为会议中的机器人头像:
- 生成带有会议链接的二维码,以便于分享:
访问会议记录
可以使用机器人 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桌面配置文件:
- 添加会议 BaaS MCP 服务器配置:**注意:**将
/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
示例配置:
- Mac/Linux:
该工具将按上述顺序检查 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 -2Python
- -securityFlicense-qualityA Model Context Protocol server that provides persistent task management capabilities for AI assistants, allowing them to create, update, and track tasks beyond their usual context limitations.Last updated -1TypeScript
- -security-license-qualityA Model Context Protocol server that enables AI assistants like Claude to track events, page views, user signups, set user properties, and track revenue in Amplitude analytics.Last updated -JavaScriptMIT License
- 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 -3TypeScriptMIT License