@g99/lightrag-mcp-server 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +109 -24
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* LightRAG MCP Server - Complete Node.js Implementation
|
|
5
5
|
*
|
|
6
|
-
* Model Context Protocol server for LightRAG with
|
|
6
|
+
* Model Context Protocol server for LightRAG with 31 tools
|
|
7
7
|
*
|
|
8
8
|
* Author: Lalit Suryan
|
|
9
9
|
* License: MIT
|
|
@@ -37,7 +37,7 @@ const httpClient = axios.create({
|
|
|
37
37
|
const server = new Server(
|
|
38
38
|
{
|
|
39
39
|
name: '@g99/lightrag-mcp-server',
|
|
40
|
-
version: '1.0.
|
|
40
|
+
version: '1.0.6',
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
capabilities: {
|
|
@@ -46,7 +46,7 @@ const server = new Server(
|
|
|
46
46
|
}
|
|
47
47
|
);
|
|
48
48
|
|
|
49
|
-
// All
|
|
49
|
+
// All 31 Tool definitions (10 Document + 3 Query + 10 Knowledge Graph + 8 System)
|
|
50
50
|
const tools = [
|
|
51
51
|
// ===== DOCUMENT MANAGEMENT TOOLS (10) =====
|
|
52
52
|
{
|
|
@@ -223,7 +223,7 @@ const tools = [
|
|
|
223
223
|
}
|
|
224
224
|
},
|
|
225
225
|
|
|
226
|
-
// ===== KNOWLEDGE GRAPH TOOLS (
|
|
226
|
+
// ===== KNOWLEDGE GRAPH TOOLS (10) =====
|
|
227
227
|
{
|
|
228
228
|
name: 'get_knowledge_graph',
|
|
229
229
|
description: 'Retrieve the complete knowledge graph',
|
|
@@ -305,8 +305,55 @@ const tools = [
|
|
|
305
305
|
required: ['relation_id']
|
|
306
306
|
}
|
|
307
307
|
},
|
|
308
|
+
{
|
|
309
|
+
name: 'get_graph_labels',
|
|
310
|
+
description: 'Get labels from the knowledge graph',
|
|
311
|
+
inputSchema: {
|
|
312
|
+
type: 'object',
|
|
313
|
+
properties: {}
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
name: 'update_relation',
|
|
318
|
+
description: 'Update properties of a relationship in the knowledge graph',
|
|
319
|
+
inputSchema: {
|
|
320
|
+
type: 'object',
|
|
321
|
+
properties: {
|
|
322
|
+
relation_id: { type: 'string', description: 'Relation ID' },
|
|
323
|
+
properties: { type: 'object', description: 'Properties to update' }
|
|
324
|
+
},
|
|
325
|
+
required: ['relation_id', 'properties']
|
|
326
|
+
}
|
|
327
|
+
},
|
|
308
328
|
|
|
309
|
-
// ===== SYSTEM MANAGEMENT TOOLS (
|
|
329
|
+
// ===== SYSTEM MANAGEMENT TOOLS (8) =====
|
|
330
|
+
{
|
|
331
|
+
name: 'get_pipeline_status',
|
|
332
|
+
description: 'Get the processing pipeline status from LightRAG',
|
|
333
|
+
inputSchema: {
|
|
334
|
+
type: 'object',
|
|
335
|
+
properties: {}
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
name: 'get_track_status',
|
|
340
|
+
description: 'Get track status by ID',
|
|
341
|
+
inputSchema: {
|
|
342
|
+
type: 'object',
|
|
343
|
+
properties: {
|
|
344
|
+
track_id: { type: 'string', description: 'ID of the track' }
|
|
345
|
+
},
|
|
346
|
+
required: ['track_id']
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
name: 'get_document_status_counts',
|
|
351
|
+
description: 'Get document status counts',
|
|
352
|
+
inputSchema: {
|
|
353
|
+
type: 'object',
|
|
354
|
+
properties: {}
|
|
355
|
+
}
|
|
356
|
+
},
|
|
310
357
|
{
|
|
311
358
|
name: 'get_health',
|
|
312
359
|
description: 'Check LightRAG server health status',
|
|
@@ -366,20 +413,20 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
366
413
|
switch (name) {
|
|
367
414
|
// DOCUMENT MANAGEMENT
|
|
368
415
|
case 'insert_text':
|
|
369
|
-
response = await httpClient.post('/
|
|
416
|
+
response = await httpClient.post('/documents/text', {
|
|
370
417
|
text: args.text,
|
|
371
418
|
description: args.description
|
|
372
419
|
});
|
|
373
420
|
break;
|
|
374
421
|
|
|
375
422
|
case 'insert_texts':
|
|
376
|
-
response = await httpClient.post('/
|
|
423
|
+
response = await httpClient.post('/documents/texts', {
|
|
377
424
|
texts: args.texts
|
|
378
425
|
});
|
|
379
426
|
break;
|
|
380
427
|
|
|
381
428
|
case 'upload_document':
|
|
382
|
-
response = await httpClient.post('/upload', {
|
|
429
|
+
response = await httpClient.post('/documents/upload', {
|
|
383
430
|
file_path: args.file_path,
|
|
384
431
|
chunk_size: args.chunk_size,
|
|
385
432
|
chunk_overlap: args.chunk_overlap
|
|
@@ -387,13 +434,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
387
434
|
break;
|
|
388
435
|
|
|
389
436
|
case 'upload_documents':
|
|
390
|
-
response = await httpClient.post('/
|
|
437
|
+
response = await httpClient.post('/documents/upload/batch', {
|
|
391
438
|
file_paths: args.file_paths
|
|
392
439
|
});
|
|
393
440
|
break;
|
|
394
441
|
|
|
395
442
|
case 'scan_documents':
|
|
396
|
-
response = await httpClient.post('/scan');
|
|
443
|
+
response = await httpClient.post('/documents/scan');
|
|
397
444
|
break;
|
|
398
445
|
|
|
399
446
|
case 'get_documents':
|
|
@@ -401,7 +448,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
401
448
|
break;
|
|
402
449
|
|
|
403
450
|
case 'get_documents_paginated':
|
|
404
|
-
response = await httpClient.get(
|
|
451
|
+
response = await httpClient.get('/documents/paginated', {
|
|
452
|
+
params: { page: args.page, page_size: args.page_size }
|
|
453
|
+
});
|
|
405
454
|
break;
|
|
406
455
|
|
|
407
456
|
case 'delete_document':
|
|
@@ -413,7 +462,11 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
413
462
|
break;
|
|
414
463
|
|
|
415
464
|
case 'document_status':
|
|
416
|
-
|
|
465
|
+
if (args.document_id) {
|
|
466
|
+
response = await httpClient.get(`/documents/${args.document_id}/status`);
|
|
467
|
+
} else {
|
|
468
|
+
response = await httpClient.get('/documents/status');
|
|
469
|
+
}
|
|
417
470
|
break;
|
|
418
471
|
|
|
419
472
|
// QUERY OPERATIONS
|
|
@@ -421,22 +474,24 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
421
474
|
response = await httpClient.post('/query', {
|
|
422
475
|
query: args.query,
|
|
423
476
|
mode: args.mode || 'hybrid',
|
|
424
|
-
only_need_context: args.only_need_context,
|
|
425
|
-
top_k: args.top_k
|
|
477
|
+
only_need_context: args.only_need_context || false,
|
|
478
|
+
top_k: args.top_k || 60
|
|
426
479
|
});
|
|
427
480
|
break;
|
|
428
481
|
|
|
429
482
|
case 'query_text_stream':
|
|
430
|
-
response = await httpClient.post('/query
|
|
483
|
+
response = await httpClient.post('/query', {
|
|
431
484
|
query: args.query,
|
|
432
|
-
mode: args.mode || 'hybrid'
|
|
485
|
+
mode: args.mode || 'hybrid',
|
|
486
|
+
stream: true
|
|
433
487
|
});
|
|
434
488
|
break;
|
|
435
489
|
|
|
436
490
|
case 'query_with_citation':
|
|
437
|
-
response = await httpClient.post('/query
|
|
491
|
+
response = await httpClient.post('/query', {
|
|
438
492
|
query: args.query,
|
|
439
|
-
mode: args.mode || 'hybrid'
|
|
493
|
+
mode: args.mode || 'hybrid',
|
|
494
|
+
with_citation: true
|
|
440
495
|
});
|
|
441
496
|
break;
|
|
442
497
|
|
|
@@ -450,19 +505,27 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
450
505
|
break;
|
|
451
506
|
|
|
452
507
|
case 'get_entities':
|
|
453
|
-
response = await httpClient.get(
|
|
508
|
+
response = await httpClient.get('/graph/entities', {
|
|
509
|
+
params: args.limit ? { limit: args.limit } : {}
|
|
510
|
+
});
|
|
454
511
|
break;
|
|
455
512
|
|
|
456
513
|
case 'get_relations':
|
|
457
|
-
response = await httpClient.get(
|
|
514
|
+
response = await httpClient.get('/graph/relations', {
|
|
515
|
+
params: args.limit ? { limit: args.limit } : {}
|
|
516
|
+
});
|
|
458
517
|
break;
|
|
459
518
|
|
|
460
519
|
case 'check_entity_exists':
|
|
461
|
-
response = await httpClient.get(
|
|
520
|
+
response = await httpClient.get('/graph/entity/exists', {
|
|
521
|
+
params: { name: args.entity_name }
|
|
522
|
+
});
|
|
462
523
|
break;
|
|
463
524
|
|
|
464
525
|
case 'update_entity':
|
|
465
|
-
response = await httpClient.put(`/graph/entity/${args.entity_id}`,
|
|
526
|
+
response = await httpClient.put(`/graph/entity/${args.entity_id}`, {
|
|
527
|
+
properties: args.properties
|
|
528
|
+
});
|
|
466
529
|
break;
|
|
467
530
|
|
|
468
531
|
case 'delete_entity':
|
|
@@ -473,7 +536,29 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
473
536
|
response = await httpClient.delete(`/graph/relation/${args.relation_id}`);
|
|
474
537
|
break;
|
|
475
538
|
|
|
539
|
+
case 'get_graph_labels':
|
|
540
|
+
response = await httpClient.get('/graph/labels');
|
|
541
|
+
break;
|
|
542
|
+
|
|
543
|
+
case 'update_relation':
|
|
544
|
+
response = await httpClient.put(`/graph/relation/${args.relation_id}`, {
|
|
545
|
+
properties: args.properties
|
|
546
|
+
});
|
|
547
|
+
break;
|
|
548
|
+
|
|
476
549
|
// SYSTEM MANAGEMENT
|
|
550
|
+
case 'get_pipeline_status':
|
|
551
|
+
response = await httpClient.get('/pipeline/status');
|
|
552
|
+
break;
|
|
553
|
+
|
|
554
|
+
case 'get_track_status':
|
|
555
|
+
response = await httpClient.get(`/track/${args.track_id}/status`);
|
|
556
|
+
break;
|
|
557
|
+
|
|
558
|
+
case 'get_document_status_counts':
|
|
559
|
+
response = await httpClient.get('/documents/status/counts');
|
|
560
|
+
break;
|
|
561
|
+
|
|
477
562
|
case 'get_health':
|
|
478
563
|
response = await httpClient.get('/health');
|
|
479
564
|
break;
|
|
@@ -526,11 +611,11 @@ async function main() {
|
|
|
526
611
|
const transport = new StdioServerTransport();
|
|
527
612
|
await server.connect(transport);
|
|
528
613
|
console.error('╔════════════════════════════════════════════════════════╗');
|
|
529
|
-
console.error('║ LightRAG MCP Server v1.0.
|
|
614
|
+
console.error('║ LightRAG MCP Server v1.0.6 - Started Successfully ║');
|
|
530
615
|
console.error('╚════════════════════════════════════════════════════════╝');
|
|
531
616
|
console.error(`Server: ${LIGHTRAG_SERVER_URL}`);
|
|
532
617
|
console.error(`Workspace: ${LIGHTRAG_WORKSPACE}`);
|
|
533
|
-
console.error(`Tools:
|
|
618
|
+
console.error(`Tools: 31 tools available (Most Complete!)`);
|
|
534
619
|
console.error('Ready for connections...\n');
|
|
535
620
|
}
|
|
536
621
|
|
package/package.json
CHANGED