使用说明
管理员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客户端凭据流:
- 在第一次API调用时,交换
client_id+client_secret获取访问令牌(1小时TTL) - 缓存令牌并在后续请求中重用它
- 当访问令牌接近到期时,通过刷新令牌(30d TTL)自动刷新
- 如果刷新失败,则回退到完整的客户端凭据交换
- 使用新令牌在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)
许可证
麻省理工学院
