使用说明
查询助手MCP服务器
一种模型上下文协议(MCP)服务器,它使用语义搜索训练示例来帮助生成查询。该服务器通过查找类似的问题及其相应的查询来指导各种查询语言(Cypher、SPARQL、SQL等)的查询生成,从而提供很少的镜头学习功能。
特性
- 语义搜索:使用OpenAI嵌入在训练数据集中查找类似问题
- 小样本学习:返回相关示例以帮助生成准确的查询
- 培训数据管理:添加、列出和管理具有重复检测功能的问题查询对
- 矢量存储器:使用HNSW(分层导航小世界)算法进行高效的相似性搜索
- 元数据支持:按领域、复杂性和标签组织示例
- 多语言支持:适用于各种查询语言(Cypher、SPARQL、SQL等)
安装
-
先决条件:Node.js 18+和npm
-
构建服务器:
cd /Users/alkhalili/Documents/Cline/MCP/mcp-query-assistant npm install npm run build -
配置OpenAI API密钥:
- 从获取API密钥 OpenAI平台
- 在以下位置更新MCP设置文件:
/Users/alkhalili/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json - 替换
your_openai_api_key_here使用您的实际API密钥
-
配置数据目录(可选):
- 默认情况下,数据存储在
data/与项目相关的文件夹 - 要使用自定义数据目录,您可以:
- 设置
DATA_DIR环境变量,或 - 使用
--data-dir命令行参数
- 设置
- 默认情况下,数据存储在
-
服务器配置:服务器已在MCP设置中配置为:
"query-assistant": { "command": "npx", "args": ["mcp-query-assistant"], "env": { "OPENAI_API_KEY": "your_openai_api_key_here", "DATA_DIR": "/optional/custom/data/path" }, "disabled": false, "autoApprove": [] }带有命令行参数的替代方案:
"query-assistant": { "command": "npx", "args": ["mcp-query-assistant", "--openai-key", "your_openai_api_key_here", "--data-dir", "/custom/data/path"], "disabled": false, "autoApprove": [] }
可用工具
1. find_similar_queries
基于自然语言问题查找类似的查询示例。
参数:
question(必填):自然语言问题,寻找类似的例子limit(可选):要返回的最大相似示例数(默认值:3,最大值:10)threshold(可选):最小相似性阈值0-1(默认值:0.7)
示例用法:
Use the find_similar_queries tool to find examples for: "Give me the list of CDEs in the lineage"
2. add_training_example
将新的问题查询对添加到训练数据集中。
参数:
question(必填):自然语言问题query(必填):对应的查询(Cypher、SPARQL、SQL等)metadata(可选):附加元数据(域、复杂性、标签)
示例用法:
Add a training example:
Question: "Find users who bought expensive products"
Query: "MATCH (u:User)-[:PURCHASED]->(p:Product) WHERE p.price > 1000 RETURN u"
Metadata: {"domain": "user_analytics", "complexity": "medium"}
3. list_training_examples
列出数据集中的所有训练示例。
参数:
limit(可选):返回的最大示例数(默认值:10,最大值:100)domain(可选):按域筛选
4. find_duplicates
根据问题和查询查找重复的训练示例。
参数: 无
示例用法:
Use find_duplicates to identify duplicate training examples in your dataset.
5. remove_duplicates
删除重复的训练示例,只保留每个唯一问题查询对的第一个出现。
参数:
confirm(可选):设置为true以确认删除重复项(默认值:false)
示例用法:
Use remove_duplicates with confirm=true to clean up duplicate examples.
默认训练示例
服务器附带了一个涵盖数据沿袭模式的默认示例:
- 数据沿袭:“给我谱系中的CDE列表”
- 查询:
MATCH (cde:CDE) RETURN cde.name, cde.description, cde.layer, cde.fqn ORDER BY cde.name - 域:数据谱系
- 复杂性:简单
- 查询:
使用工作流程
- 询问类似问题:当您需要编写查询时,请使用
find_similar_queries用你的自然语言提问 - 获取几个射击示例:服务器返回具有相似性得分的类似问题及其查询
- 生成您的查询:以示例为指导,撰写您的具体查询
- 添加新示例:使用
add_training_example使用新模式扩展训练数据集 - 管理重复项:使用
find_duplicates和remove_duplicates保持数据集干净
数据存储
- 培训数据:存储在
{DATA_DIR}/training_data.json(默认值:data/training_data.json) - 向量索引:存储在
{DATA_DIR}/vector_index.bin(默认值:data/vector_index.bin) - 嵌入:使用OpenAI生成
text-embedding-3-small模型(1536个维度) - 数据目录:可通过配置
DATA_DIR环境变量或--data-dir命令行参数
交互示例
User: "Show me all data elements with their descriptions"
Agent: Let me find similar examples for you.
[Uses find_similar_queries tool]
Server Response:
Found 1 similar examples for: "Show me all data elements with their descriptions"
Example 1 (similarity: 0.823):
Question: Give me the list of CDEs in the lineage
Query: MATCH (cde:CDE) RETURN cde.name, cde.description, cde.layer, cde.fqn ORDER BY cde.name
Domain: Data Lineage
Complexity: simple
Agent: Based on this example, here's a query for showing data elements with descriptions:
MATCH (cde:CDE)
RETURN cde.name, cde.description
ORDER BY cde.name
故障排除
- “未配置OpenAI API密钥”:确保您已在MCP设置中设置了API密钥
- “未找到类似示例”:尝试降低相似性阈值或添加更多训练数据
- 服务器未连接:检查生成路径是否正确以及服务器是否已成功编译
贡献
要添加更多培训示例或改进服务器:
- 使用
add_training_example添加新问题查询对的工具 - 使用适当的元数据(域、复杂性、标签)组织示例
- 使用各种问题短语测试相似性搜索
- 考虑为您的用例添加特定领域的示例
技术细节
- 矢量数据库:HNSW(分层导航小世界)用于高效的相似性搜索
- 嵌入模型:OpenAI文本嵌入3-small(1536个维度)
- 相似性度量:余弦相似性
- 存储格式:JSON用于训练数据,二进制用于向量索引
- 最大容量:10000个训练示例(可配置)
