联络中心配置服务器

一个全面的模型上下文协议(MCP)服务器,用于管理和配置Cisco Webex联络中心资源,提供178+配置API的LLM友好接口。

  • by cduzpalau
  • TypeScript
  • 混合部署
  • 1 星标
  • 更新于
在 GitHub 查看 cduzpalau/webexccconfig-mcp

使用说明

Webex呼叫中心配置MCP服务器

用于管理和配置Cisco Webex呼叫中心资源的综合模型上下文协议(MCP)服务器。此服务器为178多个配置API提供了LLM友好的界面,包括团队、用户、技能、队列等。

🚀 快速开始

地方发展(标准模式)

要使用MCP Inspector或Gemini CLI在本地运行服务器进行测试,请执行以下操作:

  1. 克隆和安装:

    git clone <your-repo-url>
    cd webexccconfig-mcp
    npm install
    
  2. 配置环境: 创建一个 .env 文件或导出以下变量:

    export WEBEX_TOKEN="your_access_token"
    export WEBEX_ORG_ID="your_organization_id"
    export WEBEX_BASE_URL="https://api.wxcc-us1.cisco.com/v1"
    
  3. 在开发模式下运行:

    npm run dev
    

使用MCP检查员进行测试

如果你想运行编译后的Javascript(如果你已经运行过npm run build,建议使用): 命令:节点 参数:/Users/cpalau/wodev/work/webexconfig mcp/dist/index.js(注意:从命令字段中完全删除webexconfig mcp) 如果你想直接运行TypeScript而不构建: 命令:npx 参数:添加这三个单独的参数(大多数检查器UI允许您添加多个参数或根据UI通过空格分隔它们): TSX /用户/cpalau/wodev/work/webexconfig mcp/src/index.ts -- 标准版

与Claude Code或Gemini CLI一起使用

对于基于终端的AI助手,如 克劳德代码 或 Gemini CLI,使用stdio模式配置服务器。

克劳德代码: 直接通过CLI添加MCP服务器:

claude mcp add webexcc node /absolute/path/to/webexccconfig-mcp/dist/index.js

注意:确保您的 WEBEX_TOKEN, WEBEX_ORG_ID,以及 WEBEX_BASE_URL 在运行Claude Code之前,将它们导出到您的环境中,或传入。

标准MCP配置JSON(Gemini/Claude桌面): 如果您的客户端使用配置文件(如 mcp.json 或 claude_desktop_config.json),添加以下条目:

{
  "mcpServers": {
    "webexccconfig-mcp": {
      "command": "node",
      "args": [
        "/absolute/path/to/webexccconfig-mcp/dist/index.js"
      ],
      "env": {
        "WEBEX_TOKEN": "your_access_token",
        "WEBEX_ORG_ID": "your_organization_id",
        "WEBEX_BASE_URL": "https://api.wxcc-us1.cisco.com/v1"
      }
    }
  }
}

(如果直接运行TypeScript而不构建,请使用 npx 作为命令,与 ["tsx", "/absolute/path/to/webexccconfig-mcp/src/index.ts"] 作为论据)。

部署到Google Cloud Run(SSE/HTTP模式)

服务器已针对Cloud Run进行了优化,使用 Streamable HTTP 运输。

  1. 安装部署脚本:

    cp deploy.sh.example deploy.sh
    chmod +x deploy.sh
    # Edit deploy.sh with your GCP Project ID and Region
    
  2. 部署:

    ./deploy.sh dev
    
  3. 使用IAM确保安全: 通过禁用公共访问和授予权限来确保您的服务受到保护 roles/run.invoker 授权用户/服务帐户。

其他云提供商

该项目包括一个多阶段 Dockerfile。您可以将容器部署到任何提供商(AWS Fargate、Azure容器应用程序等):

  • 端口: 监听由定义的端口 PORT 环境变量(默认8080)。
  • 运输: 用途 SSE 和 Streamable HTTP 自动当 PORT 存在。

🏗 架构文档

核心组件

  • TypeScript和ESM: 采用现代ES模块构建,具有高性能和兼容性。
  • McpServer SDK: 利用官方 @modelcontextprotocol/sdk.
  • Express框架: 用于HTTP/SSE传输层。
  • 佐德: 为所有工具提供强大的运行时类型安全和自动生成的JSON模式。

传输机制

  1. 标准运输(当地): 基于CLI的交互的默认模式。
  2. SSEServerTransport(标准): 通过以下方式提供传统SSE支持 /sse 和 /messages.
  3. StreamableHTTPServerTransport(统一): 通过以下方式实现高级、统一的端点 /mcp 它处理流启动和消息发布。

会话管理

服务器使用 单例模式 为了 StreamableHTTPServerTransport 以高效地处理HTTP上的多个多路复用会话。对于标准SSE,它创建了隔离 McpServer 每个会话都有实例,以确保状态完整性。


🤖 AI编码与改进指南

该项目旨在通过人工智能编码工具(如Gemini、Cursor或Windsurf)轻松扩展。

如何添加新的API工具

  1. 定义DTO: 将接口添加到 src/types.ts.跟随 IDTO 命名约定。
  2. 注册工具: 在 src/index.ts,添加新 server.tool 呼叫内 registerTools 功能。
  3. 图案:
    server.tool(
      "Tool_Name",
      "Human-readable description",
      { /* Zod Schema */ },
      async (params) => {
        const url = `${config.baseUrl}/organization/${config.orgId}/path`;
        // Perform fetch and handle IApiErrorResponse
      }
    );
    

AI改进技巧

  • 保持手术状态: 编辑到 src/index.ts 应该有针对性。使用独特的锚点,如工具注释 replace 操作。
  • 干燥逻辑: 考虑重构 fetch 如果您要添加许多类似的GET/POST工具,请将逻辑添加到辅助函数中。
  • 首先验证: 总是使用 z.number().int() 对于ID或计数,以及 z.enum() 对于固定的API值。

📋 可用API和实现状态

API名称 描述 资源路径 实现
通讯录 管理通讯簿和条目。 /v1/address-book ✅ 完成(13个工具)
用户 管理代理、主管和个人资料。 /v2/user ✅ 完成(12个工具)
团队 管理组和容量。 /v2/team ✅ 完成(9个工具)
技能 基于专业知识的路由配置。 /v1/skill ✅ 完成(11个工具)
联系服务队列 入境持有和分销。 /v3/contact-service-queue ✅ 完成(14个工具)
桌面布局/配置文件 代理桌面配置。 /v2/desktop-layout ✅ 完成(18个工具)
拨号计划/号码 路由和号码映射。 /v3/dial-number ✅ 完成(18个工具)
多媒体配置文件 多渠道代理限制。 /v2/multimedia-profile ✅ 完成(9个工具)
外线ANI 出站活动设置。 /v1/outdial-ani ✅ 完成(14个工具)
全局变量 交叉流变量管理。 /v2/cad-variable ✅ 完成(10个工具)
营业时间 时间表和覆盖。 /v1/business-hours ✅ 完成(22个工具)

📚 API 参考

每个已实施工具的详细文档都可以在 docs/ 和 apireference/ 文件夹。这些文件来源于 官方Webex联系中心API文档.