工单管理系统

一个集成了MCP服务器的工单管理平台,支持AI助手通过自然语言创建、更新和处理支持工单。

  • by beauchompers
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 beauchompers/accio-servicemeow

使用说明

Accio ServiceMeow

一个嵌入式案例/票务管理平台 主控程序 服务器,使克劳德等人工智能助手能够通过自然语言创建、更新和分类支持票。

特性

  • MCP集成 --16个工具通过Streamable HTTP公开,用于代理AI工作流
  • 富文本编辑 --带有代码块、链接和图像的TipTap编辑器
  • SLA跟踪 --使用MTTA/MTTR指标按优先级配置目标
  • 审计跟踪 --每个票突变都记录有参与者、字段、旧/新值
  • 全文检索 --PostgreSQL支持票和笔记的搜索
  • 批量操作 --跨多个票证更新状态、分配或优先级
  • 基于角色的访问 -具有JWT+neneneba API密钥身份验证的管理员和代理角色
  • 自签名TLS --自动生成的证书,支持自定义证书

快速开始

先决条件: 码头工人 和 Docker Compose

./setup.sh

这将:

  • 创建 .env 从 .env.example (如果不存在)
  • 为生成随机秘密 JWT_SECRET, POSTGRES_PASSWORD,以及 DEFAULT_ADMIN_PASSWORD
  • 复制 seed.json.example 到 seed.json 用于示例数据
  • 构建并启动所有容器
  • 等待健康检查并打印您的登录凭据

运行后,打开输出中显示的URL并接受自签名证书警告。

Manual setup
cp .env.example .env
# Edit .env to set your own secrets
docker compose up --build -d

默认凭据: admin / change-me-in-production (从 .env.example)

建筑

Browser ──► nginx (TLS) ──┬──► FastAPI backend ──► PostgreSQL
                          │       ├─ REST API (/api/v1/)
                          │       └─ MCP server (/mcp/)
                          └──► Static frontend (React SPA)
图层 技术
前端 React 18、TypeScript、Vite、顺风CSS、TanStack查询、TipTap
后端 FastAPI、SQLAlchemy 2(异步)、Alembic、Pydantic v2
数据库 PostgreSQL 16
代理 带有自动生成或自定义TLS的nginx
Auth JWT(承载)+API密钥(api_key 头球

连接克劳德桌面

Claude Desktop仅支持基于stdio的MCP服务器,因此您需要 mcp-proxy 以桥接到HTTP端点。

  1. 安装mcp代理:

    pipx install mcp-proxy
    
  2. 创建API密钥 在ServiceMeow UI下 管理>API密钥.

  3. 增添 claude_desktop_config.json:

    {
      "mcpServers": {
        "servicemeow": {
          "command": "mcp-proxy",
          "args": [
            "--transport=streamablehttp",
            "--no-verify-ssl",
            "--headers", "api_key", "YOUR_API_KEY",
            "https://localhost:8889/mcp/"
          ]
        }
      }
    }
    
  4. 重新启动克劳德桌面 拿起新服务器。

注: --no-verify-ssl 是自签名证书所必需的。如果使用受信任的TLS证书,请将其删除。

连接克劳德代码

Claude Code通过以下方式连接 mcp-proxy 使用一个 .mcp.json 项目根目录中的文件。

增添 .mcp.json:

{
  "mcpServers": {
    "servicemeow": {
      "command": "mcp-proxy",
      "args": [
        "--transport=streamablehttp",
        "--no-verify-ssl",
        "--headers", "api_key", "YOUR_API_KEY",
        "https://localhost:8889/mcp/"
      ]
    }
  }
}

注: --no-verify-ssl 是自签名证书所必需的。如果使用受信任的TLS证书,请将其删除。

可用的MCP工具

工具 说明
create_ticket 创建一个新的支持票,包括标题、描述、优先级和组
get_ticket 通过UUID或票证编号(ASM-XXXX)获取票证详细信息
update_ticket 更新票证标题、描述、状态或优先级
assign_ticket 将工单分配或重新分配给组和/或用户
list_tickets 使用分页搜索和过滤门票
add_ticket_note 为工单添加注释(仅支持内部注释)
get_ticket_notes 通过UUID或票证编号获取票证的所有注释
resolve_ticket 解决问题,可选择添加解决说明
bulk_update_tickets 跨多个工单批量更新状态或分配
get_dashboard_summary 按状态、优先级和组获取票计数
get_sla_metrics 使用可选的组/优先级/日期过滤器获取MTTA/MTTR指标
list_groups 列出所有包含成员数量的支持组
list_users 列出用户,可选择按组筛选
get_ticket_audit_log 获取工单的完整审计跟踪
get_my_tickets 列出分配给已验证用户的票证
get_system_info 获取可用状态、优先级、角色和系统配置

MCP对话示例

创建工单:

“创建一个名为“登录页面超时”的高优先级票证,分配给平台团队,描述用户在登录页面上看到30秒的加载时间。”

分诊入场券:

“显示所有打开的工单。对于未分配给用户的任何关键工单,请将其分配给管理员,并添加一条注释,说明我们正在调查。”

搜索和调查:

“搜索提到‘超时’的工单。显示最新工单的备注和审核日志。”

解决问题:

“解决ASM-0001问题,并附上说明,说明根本原因是缺少数据库索引,该索引已部署到生产环境中。”

环境变量

看 .env.example 对于所有可用配置。

变量 默认值 描述
ASM_PORT 8889 端口nginx正在监听
POSTGRES_USER servicemeow 数据库用户
POSTGRES_PASSWORD change-me-in-production 数据库密码
POSTGRES_DB servicemeow 数据库名称
JWT_SECRET change-me-in-production JWT签名密钥
DEFAULT_ADMIN_USERNAME admin 初始管理员用户名
DEFAULT_ADMIN_PASSWORD change-me-in-production 初始管理员密码
DEFAULT_ADMIN_EMAIL admin@servicemeow.local 初始管理员电子邮件
ALLOWED_ORIGINS ["https://localhost:8889"] CORS允许的来源
MCP_PATH /mcp MCP端点安装路径
MAX_UPLOAD_SIZE_MB 25 最大文件上传大小(MB)

自定义TLS证书

首次启动时会自动生成自签名证书。要使用您自己的:

  1. 地方 cert.pem 和 key.pem 在 nginx/certs/
  2. 重新启动堆栈: docker compose restart nginx

项目结构

accio-servicemeow/
├── backend/
│   ├── app/
│   │   ├── api/routes/       # FastAPI route handlers
│   │   ├── models/           # SQLAlchemy models
│   │   ├── schemas/          # Pydantic schemas
│   │   ├── services/         # Business logic layer
│   │   ├── mcp/              # MCP server and tool definitions
│   │   └── main.py           # App entrypoint
│   ├── alembic/              # Database migrations
│   ├── tests/                # Pytest test suite
│   └── Dockerfile
├── frontend/
│   ├── src/
│   │   ├── api/              # API client with JWT refresh
│   │   ├── components/       # Shared UI components
│   │   ├── context/          # Auth and Theme providers
│   │   ├── hooks/            # TanStack Query hooks
│   │   ├── pages/            # Route page components
│   │   └── utils/            # Formatting and SLA utilities
│   ├── index.html
│   └── package.json
├── nginx/
│   ├── nginx.conf.template   # Nginx config (envsubst template)
│   ├── Dockerfile
│   └── entrypoint.sh         # TLS cert generation
├── docker-compose.yml
├── seed.json.example          # Sample data for seeding
└── .env.example

运行测试

docker compose exec backend pytest tests/ -v

构建于