一个全面的MCP(模型上下文协议)服务器,提供与LightRAG API的100%功能集成,提供涵盖文档管理、查询操作、知识图谱操作和系统管理四个类别的22个完全工作的工具。
经过全面测试和优化后,所有22个工具均工作正常:
安装服务器:
pip install -e .
启动LightRAG服务器(确保其在http://localhost:9621上运行)
配置您的MCP客户端(例如,Claude Desktop):
{
"mcpServers": {
"daniel-lightrag": {
"command": "python",
"args": ["-m", "daniel_lightrag_mcp"]
}
}
}
测试连接:
使用get_health工具验证一切是否正常工作。
# 基本安装
pip install -e .
# 包含开发依赖项
pip install -e ".[dev]"
启动MCP服务器:
daniel-lightrag-mcp
使用环境变量配置服务器:
export LIGHTRAG_BASE_URL="http://localhost:9621"
export LIGHTRAG_API_KEY="your-api-key" # 可选
export LIGHTRAG_TIMEOUT="30" # 可选
export LOG_LEVEL="INFO" # 可选
daniel-lightrag-mcp
默认情况下,该服务器期望LightRAG在http://localhost:9621上运行。确保在运行此MCP服务器之前已启动LightRAG服务器。
添加到您的MCP客户端(例如,Claude Desktop):
{
"mcpServers": {
"daniel-lightrag": {
"command": "python",
"args": ["-m", "daniel_lightrag_mcp"],
"env": {
"LIGHTRAG_BASE_URL": "http://localhost:9621",
"LIGHTRAG_API_KEY": "lightragsecretkey"
}
}
}
}
有关详细配置选项,请参阅MCP_CONFIGURATION_GUIDE.md。
此服务器经过全面测试和优化以实现100%功能。关键改进包括:
有关完整的技术细节,请参阅IMPLEMENTATION_GUIDE.md。
insert_text将文本内容插入LightRAG。
参数:
text(必需):要插入的文本内容示例:
{
"text": "这是关于机器学习算法及其在现代AI系统中的应用的重要信息。"
}
insert_texts将多个文本文档插入LightRAG。
参数:
texts(必需):带有可选标题和元数据的文本文档数组示例:
{
"texts": [
{
"title": "AI概述",
"content": "人工智能正在改变行业...",
"metadata": {"category": "technology", "author": "researcher"}
},
{
"content": "机器学习算法需要大量的数据集..."
}
]
}
upload_document将文档文件上传到LightRAG。
参数:
file_path(必需):要上传的文件路径示例:
{
"file_path": "/path/to/document.pdf"
}
scan_documents扫描LightRAG中的新文档。
**参数:**无
示例:
{}
get_documents从LightRAG检索所有文档。
**参数:**无
示例:
{}
get_documents_paginated分页检索文档。
参数:
page(必需):页码(从1开始)page_size(必需):每页的文档数量(1-100)示例:
{
"page": 1,
"page_size": 20
}
delete_document通过ID删除特定文档。
参数:
document_id(必需):要删除的文档ID示例:
{
"document_id": "doc_12345"
}
clear_documents清除LightRAG中的所有文档。
**参数:**无
示例:
{}
query_text使用文本查询LightRAG。
参数:
query(必需):查询文本mode(可选):查询模式 - "naive","local","global" 或 "hybrid"(默认:"hybrid")only_need_context(可选):是否仅返回上下文而不生成(默认:false)示例:
{
"query": "机器学习的主要概念是什么?",
"mode": "hybrid",
"only_need_context": false
}
query_text_stream从LightRAG流式传输查询结果。
参数:
query(必需):查询文本mode(可选):查询模式 - "naive","local","global" 或 "hybrid"(默认:"hybrid")only_need_context(可选):是否仅返回上下文而不生成(默认:false)示例:
{
"query": "解释人工智能的发展历程",
"mode": "global"
}
get_knowledge_graph从LightRAG检索知识图谱。
**参数:**无
示例:
{}
get_graph_labels获取知识图谱中的标签。
**参数:**无
示例:
{}
check_entity_exists检查实体是否存在于知识图谱中。
参数:
entity_name(必需):要检查的实体名称示例:
{
"entity_name": "机器学习"
}
update_entity更新知识图谱中的实体。
参数:
entity_id(必需):要更新的实体IDproperties(必需):要更新的属性示例:
{
"entity_id": "entity_123",
"properties": {
"description": "更新的机器学习描述",
"category": "AI Technology"
}
}
update_relation更新知识图谱中的关系。
参数:
relation_id(必需):要更新的关系IDproperties(必需):要更新的属性示例:
{
"relation_id": "rel_456",
"properties": {
"strength": 0.9,
"type": "implements"
}
}
delete_entity从知识图谱中删除实体。
参数:
entity_id(必需):要删除的实体ID示例:
{
"entity_id": "entity_789"
}
delete_relation从知识图谱中删除关系。
参数:
relation_id(必需):要删除的关系ID示例:
{
"relation_id": "rel_101"
}
get_pipeline_status从LightRAG获取管道状态。
**参数:**无
示例:
{}
get_track_status通过ID获取跟踪状态。
参数:
track_id(必需):要获取状态的跟踪ID示例:
{
"track_id": "track_abc123"
}
get_document_status_counts获取文档状态计数。
**参数:**无
示例:
{}
clear_cache清除LightRAG缓存。
**参数:**无
示例:
{}
get_health检查LightRAG服务器健康状况。
**参数:**无
示例:
{}
检查服务器健康状况:
{"tool": "get_health", "arguments": {}}
插入文档:
{
"tool": "insert_texts",
"arguments": {
"texts": [
{
"title": "AI研究论文",
"content": "最近在Transformer架构方面的进展已经在自然语言理解任务中显示出显著的改进...",
"metadata": {"category": "research", "year": 2024}
}
]
}
}
查询知识库:
{
"tool": "query_text",
"arguments": {
"query": "Transformer架构的最新进展是什么?",
"mode": "hybrid"
}
}
探索知识图谱:
{"tool": "get_knowledge_graph", "arguments": {}}
检查实体存在情况:
{
"tool": "check_entity_exists",
"arguments": {"entity_name": "Transformer架构"}
}
获取当前图结构:
{"tool": "get_knowledge_graph", "arguments": {}}
获取可用标签:
{"tool": "get_graph_labels", "arguments": {}}
更新实体属性:
{
"tool": "update_entity",
"arguments": {
"entity_id": "transformer_arch_001",
"properties": {
"description": "用于序列处理的高级神经网络架构",
"applications": ["NLP", "计算机视觉", "语音识别"],
"year_introduced": 2017
}
}
}
更新关系属性:
{
"tool": "update_relation",
"arguments": {
"relation_id": "rel_improves_002",
"properties": {
"improvement_factor": 2.5,
"confidence": 0.92,
"evidence": "多项基准研究"
}
}
}
检查整体健康状况:
{"tool": "get_health", "arguments": {}}
监控管道状态:
{"tool": "get_pipeline_status", "arguments": {}}
检查文档处理状态:
{"tool": "get_document_status_counts", "arguments": {}}
跟踪特定操作:
{
"tool": "get_track_status",
"arguments": {"track_id": "upload_batch_001"}
}
需要时清除缓存:
{"tool": "clear_cache", "arguments": {}}
服务器提供了带有详细错误消息的全面错误处理:
所有错误都包含:
{
"tool": "insert_text",
"error_type": "LightRAGConnectionError",
"message": "无法连接到http://localhost:9621上的LightRAG服务器",
"timestamp": 1703123456.789,
"status_code": null,
"response_data": {}
}
{
"error_type": "LightRAGConnectionError",
"message": "连接被拒绝到http://localhost:9621",
"status_code": null
}
{
"error_type": "LightRAGValidationError",
"message": "缺少查询文本所需的参数:['query']",
"validation_errors": [
{
"loc": ["query"],
"msg": "字段必填",
"type": "value_error.missing"
}
]
}
{
"error_type": "LightRAGAPIError",
"message": "未找到文档",
"status_code": 404,
"response_data": {
"detail": "ID为'doc_123'的文档不存在"
}
}
检查LightRAG服务器状态:
curl http://localhost:9621/health
测试MCP服务器:
python -m daniel_lightrag_mcp &
sleep 2
pkill -f daniel_lightrag_mcp
验证安装:
python -c "import daniel_lightrag_mcp; print('OK')"
pip install -e .LIGHTRAG_BASE_URL环境变量LIGHTRAG_API_KEY环境变量LIGHTRAG_TIMEOUT=60环境变量启用详细日志记录:
export LOG_LEVEL=DEBUG
python -m daniel_lightrag_mcp
安装开发依赖项:
pip install -e ".[dev]"
运行测试:
pytest
运行带覆盖率的测试:
pytest --cov=src/daniel_lightrag_mcp --cov-report=html
格式化代码:
black src/ tests/
isort src/ tests/
MIT许可证