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: 1000kb_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)返回用于创建票证的架构定义。
