返回市场
麦克风网页呼叫

麦克风网页呼叫

作者:lutztalk2 星标更新:2025-11-07

项目介绍

MCP Webex Calling Server

一个用于与Webex Calling API交互的MCP(模型上下文协议)服务器。此服务器使您能够通过与AI助手(如Claude Desktop)进行自然语言对话来查询Webex Calling数据并执行管理功能。

什么是MCP?

MCP(模型上下文协议)是一种标准化协议,允许AI助手安全地连接到外部服务和数据源。无需手动导航API或编写脚本,MCP服务器将功能暴露为工具,这些工具可以被AI助手理解并代表您使用。

为什么使用MCP进行Webex Calling管理?

通过传统方法管理Webex Calling可能会耗费时间:

  • 手动调用API:需要理解复杂的API文档并编写代码
  • Web界面:对于批量操作或重复任务,点选操作可能较慢
  • 脚本:需要为每个用例编写、维护和更新脚本

使用MCP,您可以:

  • 使用自然语言提问:“我们配置了哪些呼叫队列?”
  • 不需编写代码即可获得即时答案
  • 通过对话执行管理任务:“将电话号码X分配给用户Y”
  • 访问您的Webex组织中的实时数据
  • 通过AI助手自动化工作流

这使得Webex Calling管理对任何人都易于访问,无论其技术专长如何。

它能做什么?

MCP Webex Calling服务器提供85+工具,按以下类别组织:

数据检索

  • 查询Webex Calling用户、位置和组织
  • 检索呼叫队列信息、自动应答机、搜索组和中继组
  • 获取设备和电话号码信息
  • 查询呼叫历史和详细呼叫记录
  • 列出许可证和用户分配

用户管理

  • 创建、更新和删除用户
  • 管理用户扩展名和电话号码
  • 分配和取消分配许可证
  • 按姓名、电子邮件或扩展名搜索用户

位置管理

  • 创建、更新和删除位置
  • 管理位置设置和配置
  • 列出组织中的所有位置

呼叫队列管理

  • 创建、更新和删除呼叫队列
  • 管理队列成员和设置
  • 配置队列路由和溢出

自动应答机管理

  • 创建、更新和删除自动应答机
  • 配置菜单选项和问候语
  • 管理营业时间和日程

搜索组管理

  • 创建、更新和删除搜索组
  • 配置搜索组路由策略
  • 管理组成员

设备管理

  • 列出和管理设备
  • 将设备关联到用户
  • 获取设备详情和配置
  • 生成设备注册激活码(无需MAC地址)
  • 根据MAC地址和型号创建/配置设备

报告与分析

  • 获取呼叫详细记录(CDR)
  • 计算呼叫统计(分钟数、秒数、呼叫次数)
  • 检索呼叫分析和指标
  • 为用户、位置或时间段生成报告

语音邮件管理

  • 配置语音邮件设置
  • 管理语音邮件问候语和通知

Webhook及事件管理

  • 列出和管理webhook
  • 配置事件订阅
  • 处理实时通知

使用案例

  • 快速查询:“我们配置了哪些呼叫队列?”或“显示用户john@example.com的所有设备”
  • 管理任务:“将电话号码X分配给用户Y”或“创建一个新的名为Support的呼叫队列”
  • 设备配置:“为用户john@example.com生成一个激活码”或“创建具有MAC地址AABBCCDDEEFF的设备”
  • 分析与报告:“获取上个月的呼叫分析”或“显示队列性能指标”
  • 故障排除:“用户X的呼叫设置是什么?”或“列出位置Y的所有设备”
  • 批量操作:“更新位置X内所有用户的扩展名”或“列出组织内的所有许可证”

设备管理

服务器提供了两种设备配置方法:

激活码方法(推荐)

配置设备最简单的方法是生成一个激活码。此方法仅需用户的人员ID,不需要MAC地址:

  1. 为用户生成一个激活码
  2. 向用户提供该代码——他们在设备设置期间输入该代码
  3. 设备会自动注册并关联到他们的账户

示例:

激活码在设定的时间段后过期(通常几个月),因此用户有足够的时间来设置他们的设备。

MAC地址方法

对于已知MAC地址的设备,可以直接创建设备条目:

  1. 使用MAC地址和型号创建设备
  2. 将设备关联到用户(可选,可以在稍后进行)
  3. 设备准备好进行注册

示例:

  • “创建具有MAC地址AABBCCDDEEFF和型号Cisco 8841的设备”

MAC地址格式:

  • 接受12位十六进制格式(例如,AABBCCDDEEFF
  • 也接受冒号或破折号分隔符(例如,AA:BB:CC:DD:EE:FFAA-BB-CC-DD-EE-FF
  • 自动规范化为大写格式

开始使用

先决条件

  • Python 3.9或更高版本
  • Webex访问令牌(参见下文配置
  • Claude Desktop(可选,用于AI助手集成)

安装

  1. 克隆仓库:

    git clone https://github.com/lutztalk/mcp-webexcalling.git
    cd mcp-webexcalling
    
  2. 创建虚拟环境:

    python3 -m venv venv
    source venv/bin/activate  # 在Windows上:venv\Scripts\activate
    
  3. 安装依赖项:

    pip install -r requirements.txt
    
  4. 安装包:

    pip install -e .
    

配置

获取Webex访问令牌

  1. 转到developer.webex.com
  2. 使用您的Webex帐户登录
  3. 单击您的个人资料 → 个人访问令牌
  4. 单击生成令牌
  5. 复制生成的令牌(它只会显示一次)

注意: 个人访问令牌在12小时后过期。对于生产用途,请参阅下文生产设置

设置环境变量

在项目根目录创建一个.env文件:

WEBEX_ACCESS_TOKEN=your_token_here
WEBEX_BASE_URL=https://webexapis.com/v1

安全提示: 切勿将您的.env文件提交到版本控制。它已经在.gitignore中。

运行服务器

可以直接运行服务器:

python -m mcp_webexcalling.server

或者与Claude Desktop一起使用(参见下文[连接到Claude Desktop](#连接到Claude Desktop))。

连接到Claude Desktop

按照以下步骤将MCP Webex Calling服务器连接到Claude Desktop。

先决条件

  • 已安装Python 3.9+
  • 已安装Claude Desktop
  • Webex访问令牌(参见上文配置

第一步:找到您的Python路径

macOS/Linux:

which python3
# 或
which python

Windows(PowerShell):

where python

记下路径(例如,/opt/homebrew/bin/python3.12C:\Python312\python.exe)。

第二步:定位Claude Desktop配置

macOS:

~/Library/Application Support/Claude/claude_desktop_config.json

Linux:

~/.config/Claude/claude_desktop_config.json

Windows:

%APPDATA%\Claude\claude_desktop_config.json

第三步:配置Claude Desktop

编辑配置文件并添加MCP服务器配置:

{
  "mcpServers": {
    "webex-calling": {
      "command": "/path/to/your/venv/bin/python",
      "args": ["-m", "mcp_webexcalling.server"],
      "cwd": "/path/to/mcp-webexcalling",
      "env": {
        "WEBEX_ACCESS_TOKEN": "your_token_here",
        "WEBEX_BASE_URL": "https://webexapis.com/v1"
      }
    }
  }
}

重要:

  • /path/to/your/venv/bin/python替换为您从第一步得到的实际Python路径
  • /path/to/mcp-webexcalling替换为此项目的实际路径
  • your_token_here替换为您的Webex访问令牌

第四步:重启Claude Desktop

关闭并重新打开Claude Desktop以加载新配置。

第五步:验证连接

打开Claude Desktop并检查服务器是否已连接。您应该看到MCP服务器列表中的“webex-calling”。

故障排除

服务器断开连接:

  • 验证Python路径正确且指向您的虚拟环境
  • 检查cwd路径是否正确
  • 确保.env文件中的令牌正确(或使用配置中的env部分)
  • 查看Claude Desktop的日志以获取错误消息

导入错误:

  • 确保已安装包:pip install -e .
  • 验证所有依赖项均已安装:pip install -r requirements.txt

权限错误:

  • 确保Python可执行文件具有执行权限
  • 检查项目目录是否有读取权限

生产设置

个人访问令牌在12小时后过期,不适合生产用途。本节解释如何设置永久的Webex Bot或集成,以实现长期、生产就绪的身份验证。

选项1:Webex Bot(推荐)

  1. 转到developer.webex.com
  2. 导航至我的应用机器人
  3. 单击创建机器人
  4. 填写机器人详情:
    • 名称:您的机器人名称
    • 用户名:唯一的机器人用户名(例如,mcp-webex-calling-bot
    • 图标:可选的机器人图标
  5. 单击添加机器人
  6. 复制机器人访问令牌(确保安全!)
  7. 将机器人添加到它将操作的Webex空间
  8. 在您的.env文件中使用机器人令牌:
    WEBEX_ACCESS_TOKEN=your_bot_token_here
    

优点:

  • 令牌永不过期
  • 可分配到特定的空间
  • 易于管理和撤销

选项2:Webex集成

  1. 转到developer.webex.com
  2. 导航至我的应用集成
  3. 单击创建集成
  4. 选择Webex Calling集成类型
  5. 填写所需的OAuth范围:
    • spark-admin:people_read
    • spark-admin:people_write
    • spark-admin:devices_read
    • spark-admin:devices_write
    • spark-admin:telephony_config_read
    • spark-admin:telephony_config_write
  6. 完成OAuth流程以获取刷新令牌
  7. 在您的应用程序中使用集成凭证

优点:

  • 更细粒度的权限
  • 更适合企业部署
  • 支持OAuth刷新令牌

GitHub Actions集成:Webex通知

设置自动化通知,每当代码推送到主分支时,使用GitHub Actions向Webex空间发送通知。

设置

  1. 创建一个Webex Bot(参见上文生产设置
  2. 获取Bot Token和Room ID:
    • Bot Token:来自机器人创建页面
    • Room ID:右键点击Webex空间 → 复制链接 → 从URL中提取房间ID
  3. 添加GitHub Secrets:
    • 转到您的存储库 → 设置Secrets and variablesActions
    • 添加密钥:WEBEX_BOT_TOKEN(您的机器人令牌)
    • 添加密钥:WEBEX_ROOM_ID(您的房间ID)
  4. 工作流已在.github/workflows/webex-notifications.yml中配置

当代码推送到main时,工作流将自动发送通知。

可用工具

服务器提供85+ MCP工具,按类别组织。请参见上文它能做什么?部分中的完整列表。

示例用法

通过Claude Desktop

一旦连接,您可以提出如下问题:

  • “显示组织中的所有呼叫队列”
  • “获取过去24小时的呼叫统计”
  • “列出位置X的所有用户”
  • “创建一个名为Support的新呼叫队列”
  • “将电话号码+1234567890分配给用户john@example.com
  • “为用户john@example.com生成一个激活码”
  • “创建具有MAC地址AABBCCDDEEFF和型号Cisco 8841的设备”

直接API使用

您也可以直接在Python中使用客户端:

from mcp_webexcalling.webex_client import WebexClient

client = WebexClient(access_token="your_token")

# 获取组织信息
org_info = await client.get_organization_info()

# 获取呼叫队列
queues = await client.list_call_queues()

# 获取呼叫统计
stats = await client.get_call_statistics_from_cdr(
    start_time="2024-01-01T00:00:00Z",
    end_time="2024-01-31T23:59:59Z"
)

# 为用户生成激活码
activation_code = await client.generate_activation_code(person_id="user_id_here")
print(f"激活码:{activation_code['code']}")
print(f"过期时间:{activation_code['expiryTime']}")

# 根据MAC地址创建设备
device = await client.create_device_by_mac(
    mac_address="AABBCCDDEEFF",
    model="Cisco 8841"
)

贡献

欢迎贡献!请随时提交Pull Request。

许可证

本项目根据MIT许可证授权。