智能问答与工单管理服务器

一个基于RAG的智能问答和工单管理服务器,为LLM提供上下文感知的问答能力和可操作的工单功能。

  • by Faheem-T
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Faheem-T/qna-action-mcp-server

使用说明

QnA动作MCP服务器

智能MCP(模型上下文协议)服务器,旨在为LLM提供基于RAG的问答功能和可操作的票务功能。

概述

该项目为LLM提供了一个强大的后端,使其能够充当智能代理。它的特点是:

  • 配置驱动架构:只需更改配置文件,即可适应任何行业或领域。
  • RAG(检索增强生成):嵌入您的自定义知识库,以获得准确、上下文感知的答案。
  • 可操作能力:配备有工具,可以直接从用户交互中创建工单等操作。

先决条件

  • 包子 (或Node.js)
  • PostgreSQL数据库

环境变量

创建 .env 根目录中的文件,包含以下变量:

GEMINI_API_KEY=your_gemini_api_key_here
DATABASE_URL=postgresql://user:password@localhost:5432/dbname

用法

1.配置(src/configs)

此服务器完全由配置驱动。您必须在中定义应用程序行为 src/configs.

第一步:创建 config.yaml 这是指向其他特定配置文件的入口点。

files:
  intents: "intents.yaml"
  persona: "persona.yaml"
  knowledge_base_index: "kb_index.yaml"
  ticketing: "ticketing.yaml"

步骤2:创建引用的配置文件

  • intents.yaml:定义用户意图和允许的工具。

    intents:
      support_query:
        description: "User asks a support question"
        allowed_tools: ["search_knowledge_base"]
        risk_level: "low"
    
  • persona.yaml:定义AI的个性和系统提示。

    default: "support_agent"
    personas:
      support_agent:
        system_prompt: "You are a helpful support agent..."
        max_length: 1000
    
  • kb_index.yaml:配置知识库后端。

    knowledge_base:
      backend: "local"   # or 'api'
      documents_path: "src/kb"
    
  • ticketing.yaml:配置票务系统集成。

    schema: "ticket_schema.json"
    endpoint: "https://api.example.com/tickets"
    method: "POST"
    

2.知识库(src/kb)

将所有知识库文档(Markdown、Text等)放在 src/kb 文件夹(或中配置的路径 kb_index.yaml).

3.脚本

使用Bun运行以下命令:

  • 嵌入知识库: 将文档转换为 src/kb 用于RAG的向量嵌入。

    bun run vectorize_kb
    
  • 启动服务器: 启动MCP服务器。

    bun start
    

工具和资源

此MCP服务器向连接的客户端公开以下功能:

工具

  • search_knowledge_base:对矢量化知识库执行语义搜索,以回答用户查询。
    • 输入: query (字符串), k (结果数量)
  • create_ticket:根据对话上下文创建支持票。
    • 输入: ticket (与您的票证架构匹配的对象)

资源

  • intents: (file:///intents.json)返回已配置的用户意图。
  • persona: (file:///persona.json)返回活动AI角色配置。
  • knowledge: (file://{filename})直接访问读取特定知识库文件。
  • ticket_schema: (file:///ticket_schema.json)返回用于创建票证的架构定义。