对话管理服务器

用于通过模型上下文协议管理Cuti-E对话、消息、标签、分析和预设回复的服务器。

  • by cuti-e
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 cuti-e/admin-mcp

使用说明

管理员mcp

用于管理的MCP服务器 Cuti-E 通过 模型上下文协议.

专为人工智能助手(Claude Code等)设计,以编程方式管理客户反馈对话。

特性

  • 对话管理 -列表、查看、更新状态/优先级、分配给管理员
  • 消息 -发送回复、内部笔记、列出消息历史记录
  • 标签 -列出、添加和删除对话中的标签
  • 分析 -对话统计数据、响应时间指标
  • 罐装回复 -创建、列出和使用带有变量替换的模板响应
  • OAuth2身份验证 -通过自动令牌刷新保护客户端凭据流

快速开始

1.安装

git clone https://github.com/cuti-e/admin-mcp.git
cd admin-mcp
npm install

2.创建API凭据

从Cuti-E管理面板或API生成OAuth2凭据:

curl -X POST https://api.cuti-e.com/v1/admin/api-credentials \
  -H "Authorization: Bearer YOUR_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MCP Server",
    "scopes": [
      "conversations:read", "conversations:write",
      "messages:read", "messages:write",
      "tags:read", "tags:write",
      "analytics:read",
      "canned_responses:read"
    ]
  }'

保存返回的 client_id 和 client_secret -秘密只显示一次。

3.配置

设置环境变量:

变量 必填 描述
CUTIE_API_URL 是 基本URL(例如。, https://api.cuti-e.com)
CUTIE_CLIENT_ID 是 OAuth2客户端ID(cutie_ci_...)
CUTIE_CLIENT_SECRET 是 OAuth2客户端机密(cutie_cs_...)

4.添加到克劳德代码

添加到您的 .mcp.json:

{
  "mcpServers": {
    "cutie-admin": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/admin-mcp/src/index.js"],
      "env": {
        "CUTIE_API_URL": "https://api.cuti-e.com",
        "CUTIE_CLIENT_ID": "cutie_ci_...",
        "CUTIE_CLIENT_SECRET": "cutie_cs_..."
      }
    }
  }
}

工具参考

对话

工具 描述 必填参数
list_conversations 列出带有可选筛选器的对话 -
get_conversation 通过ID获取包含消息的对话 conversation_id
update_conversation 更新状态、优先级或类别 conversation_id
assign_conversation 分配/取消分配给管理员 conversation_id

可选参数 list_conversations: status (打开、in_progress、waiting_user、waiting_admin、已解决、已关闭), category (错误、功能、问题、反馈、其他), limit, offset

可选参数 update_conversation: status, priority (低、正常、高、紧急), category

可选参数 assign_conversation: admin_id (省略取消分配)

消息

工具 描述 必填参数
send_message 发送消息或内部便条 conversation_id, message
list_messages 列出对话中的消息 conversation_id

可选参数 send_message: internal_note (布尔值,默认值:false)

可选参数 list_messages: limit (默认值:50)

标签

工具 描述 必填参数
list_tags 列出所有可用标签 -
add_tag 在对话中添加标签 conversation_id, tag
remove_tag 从对话中删除标签 conversation_id, tag

分析

工具 描述 必填参数
get_conversation_stats 按状态、类别、优先级列出的对话统计信息 -
get_response_times 平均响应时间指标 -

可选参数: days (默认值:30)

罐装回复

工具 描述 必填参数
list_canned_responses 列出已保存的响应模板 -
create_canned_response 创建新模板 title, content
use_canned_response 在对话中发送模板 conversation_id, canned_response_id

可选参数 create_canned_response: category

可选参数 use_canned_response: variables (对象为 {{placeholder}} 替代)

认证

MCP服务器使用OAuth2客户端凭据流:

  1. 在第一次API调用时,交换 client_id + client_secret 获取访问令牌(1小时TTL)
  2. 缓存令牌并在后续请求中重用它
  3. 当访问令牌接近到期时,通过刷新令牌(30d TTL)自动刷新
  4. 如果刷新失败,则回退到完整的客户端凭据交换
  5. 使用新令牌在401上重试一次

范围

凭据的范围可以限制访问:

范围 资助
conversations:read 列出并获取对话
conversations:write 更新状态、优先级、分配
messages:read 列出消息
messages:write 发送消息
tags:read 列表标签
tags:write 添加/删除标签
analytics:read 查看统计数据和响应时间
canned_responses:read 列出并使用预设回复

发展

npm install         # Install dependencies
npm run lint        # ESLint
npm test            # Unit tests (78 tests)
npm run test:e2e    # E2E tests (requires API credentials)
npm run test:all    # All tests
npm start           # Start the MCP server

E2E测试

E2E测试针对真实的Cuti-E API运行,需要证书:

export CUTIE_API_URL=https://api.cuti-e.com
export CUTIE_CLIENT_ID=cutie_ci_...
export CUTIE_CLIENT_SECRET=cutie_cs_...
npm run test:e2e

当未设置凭据时,E2E测试会自动跳过(对CI安全)。

项目结构

src/
├── index.js              # MCP server entry point
├── auth/
│   └── token-manager.js  # OAuth2 token lifecycle
├── api/
│   └── client.js         # Authenticated HTTP client
├── tools/                # Tool definitions + handlers
│   ├── conversations.js  # 4 tools
│   ├── messages.js       # 2 tools
│   ├── tags.js           # 3 tools
│   ├── analytics.js      # 2 tools
│   └── canned-responses.js # 3 tools
└── utils/
    └── errors.js         # Error types + MCP formatters

test/
├── *.test.js             # Unit tests (mocked client)
└── e2e/                  # E2E tests (real API)

许可证

麻省理工学院