内容
# 回声 - 探索通话、听证会和观察
> ## ✅ 开发重启(2026年6月)
>
> **回声现在支持Zoom AI Companion 通话笔记。** Zoom 提供了一个用户级别的OAuth范围,用于AI Companion会议摘要(`meeting:read:summary`),因此回声可以检索会议摘要,即使云录音未激活。访问权限按会议所有权划分:您可以检索由您的帐户拥有的会议(您是主持人)的笔记。纯粹的与会者无法获取;共同主持或共享给您的会议未经测试,可能受到Zoom的限制。
>
> 部署正在等待两个用户管理的范围(`meeting:read:summary`,`meeting:read:list_meetings`)被添加到您的组织的Zoom OAuth应用程序中,之后每个用户都运行 `echo-login` 一次。
用于从任何MCP兼容的AI工具搜索您的Zoom会议记录的MCP服务器。 [Alpine Toolkit](https://github.com/Percona-Lab)的一部分。
使用OAuth 2.0 + PKCE,因此从不让任何秘密接触您的机器。您使用自己的Zoom帐户登录,回声只能看到您的录音。
## 安装
```bash
curl -fsSL https://raw.githubusercontent.com/Percona-Lab/ECHO/main/install.sh | bash
```
安装程序将引导您完成:
1. 通过uv克隆回声并安装其Python依赖项
2. 在公共注册表中查找您的组织(对于Percona,不需要进一步的问题 - 只需输入 `percona`)
3. 将回声注册到Claude Desktop、Claude Code或您拥有的任何MCP客户端
4. 一次Zoom OAuth登录
安装完成后,您的AI工具将自动获得这些斜杠命令:
`/echo_status`,`/echo_recent`,`/echo_search <query>`,`/echo_summary <id>`,`/echo_transcript <id>`,`/echo_notes <meeting>`。
安装程序将引导您完成:
1. 克隆仓库并安装依赖项
2. 配置您的Zoom OAuth客户端ID(或使用注册表)
3. 使用您的Zoom帐户进行身份验证
4. 自动检测和配置您的AI客户端
## 先决条件
您需要来自通用应用程序(OAuth 2.0)的 **Zoom OAuth客户端ID**。如果您对您的Zoom帐户具有管理员或所有者访问权限,您可以自己创建。如果不是,请向您的Zoom管理员请求。
### 创建Zoom OAuth应用程序
1. 前往 [marketplace.zoom.us](https://marketplace.zoom.us) > **开发** > **构建应用程序**
2. 选择 **通用应用程序**(OAuth 2.0)
3. 将重定向URL设置为 `http://localhost:8090/callback`
4. 在 **范围**下,选择 **用户管理**并添加:
- `cloud_recording:read:content`
- `cloud_recording:read:list_user_recordings`
- `meeting:read:summary`
- `meeting:read:list_meetings`
- `user:read:user`
5. 激活应用程序
6. 复制 **客户端ID**(您不需要客户端密钥)
PKCE流程意味着客户端密钥保留在Zoom管理员控制台中,永远不需要共享。
### 组织注册表
如果您的组织已经设置了Zoom OAuth应用程序,安装程序将在您输入Zoom子域(例如 `acme`来自 `acme.zoom.us`)时自动找到客户端ID。
要注册您的组织的客户端ID,以便其他人可以跳过此步骤,请提交一个PR,将您的组织添加到 `client_registry.json`:
```json
{
"orgs": {
"yourcompany": {
"name": "您的公司",
"client_id": "YOUR_CLIENT_ID_HERE"
}
}
}
```
客户端ID是公共标识符,可以安全提交。
## 工具
| 工具 | 描述 |
|------|-------------|
| `auth_status` | 检查回声是否连接到您的Zoom帐户 |
| `list_meetings` | 列出您最近的有云录音的会议 |
| `get_transcript` | 获取特定会议的完整记录 |
| `search_transcripts` | 按关键词或短语搜索您的会议记录 |
| `meeting_summary` | 获取参与者和精简的对话流程 |
| `list_past_meetings` | 列出您主持的最近会议,包括无录音的会议 |
| `ai_meeting_notes` | 获取您拥有/主持的会议的AI Companion(记笔记)摘要 |
## CLI命令
| 命令 | 描述 |
|---------|-------------|
| `uv run echo-login` | 使用Zoom帐户授权回声 |
| `uv run echo-logout` | 删除存储的令牌 |
| `uv run echo-mcp` | 运行MCP服务器 |
## 安全模型
回声的设计使得从不让任何组织级别的秘密接触您的机器。
| 什么 | 在哪里 | 谁控制它 |
|------|-------|-----------------|
| 客户端密钥 | Zoom管理员控制台 | Zoom管理员(从不共享) |
| 客户端ID | 您的 `.env` 文件 | 您(公共标识符,可以安全共享) |
| OAuth令牌 | `~/.echo/tokens.json`(模式600) | 您(仅限于您的帐户) |
工作原理:
- 您通过在浏览器中登录Zoom(OAuth + PKCE)进行身份验证
- 回声使用 `/users/me/` 端点,因此它只能看到您的录音
- 令牌自动刷新,以便您无需重新身份验证即可保持登录状态
## 手动设置
如果您不想使用安装程序:
```bash
git clone https://github.com/Percona-Lab/ECHO.git
cd ECHO
uv sync
cp .env.example .env # 添加您的Zoom客户端ID
uv run echo-login # 与Zoom进行身份验证
```
然后将以下内容添加到您的MCP客户端配置中:
```json
{
"mcpServers": {
"echo": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/ECHO", "echo-mcp"]
}
}
}
```
## 开发
```bash
uv sync
uv run echo-mcp # 运行服务器
npx @modelcontextprotocol/inspector uv run echo-mcp # MCP检查器
```
## 使用的技术
- [FastMCP](https://github.com/jlowin/fastmcp) - Python MCP框架
- [CAIRN](https://github.com/Percona-Lab/CAIRN) - Alpine Toolkit构建工具