@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.
Files changed (2) hide show
  1. package/index.js +109 -24
  2. 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 30+ tools
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.4',
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 30+ Tool definitions
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 (8) =====
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 (5) =====
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('/insert', {
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('/insert_batch', {
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('/upload_batch', {
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(`/documents?page=${args.page}&page_size=${args.page_size}`);
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
- response = await httpClient.get(`/status/${args.document_id || ''}`);
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/stream', {
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/citation', {
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(`/graph/entities?limit=${args.limit || 100}`);
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(`/graph/relations?limit=${args.limit || 100}`);
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(`/graph/entity/exists?name=${encodeURIComponent(args.entity_name)}`);
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}`, args.properties);
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.4 - Started Successfully ║');
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: 30+ tools available`);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@g99/lightrag-mcp-server",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Model Context Protocol (MCP) server for LightRAG - Complete RAG and Knowledge Graph integration with 30+ tools",
5
5
  "keywords": [
6
6
  "mcp",