kg-mcp 0.1.8__py3-none-any.whl → 0.1.10__py3-none-any.whl
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.
kg_mcp/cli/setup.py
CHANGED
|
@@ -691,6 +691,27 @@ Andiamo.
|
|
|
691
691
|
console.print("[red]✗ Docker daemon non in esecuzione. Avvia Docker Desktop e rilancia.[/]")
|
|
692
692
|
return
|
|
693
693
|
|
|
694
|
+
# ALWAYS check for existing volumes first (regardless of port status)
|
|
695
|
+
# This prevents password mismatch when user re-runs setup
|
|
696
|
+
existing_volumes = self._check_neo4j_volumes()
|
|
697
|
+
if existing_volumes:
|
|
698
|
+
console.print("[yellow]![/] Trovati volumi Neo4j esistenti da setup precedente.")
|
|
699
|
+
console.print(f"[dim]Volumi: {', '.join(existing_volumes)}[/]")
|
|
700
|
+
console.print("[dim]Una nuova password è stata generata - i volumi vecchi vanno rimossi.[/]")
|
|
701
|
+
if Confirm.ask("Rimuovo i volumi esistenti? (i dati verranno persi)", default=True):
|
|
702
|
+
# First stop any running containers
|
|
703
|
+
for c in self._find_neo4j_containers():
|
|
704
|
+
run_cmd(["docker", "stop", c], timeout=30)
|
|
705
|
+
run_cmd(["docker", "rm", "-v", c], timeout=10)
|
|
706
|
+
# Then remove volumes
|
|
707
|
+
for vol in existing_volumes:
|
|
708
|
+
run_cmd(["docker", "volume", "rm", "-f", vol], timeout=10)
|
|
709
|
+
console.print("[green]✓[/] Volumi e container rimossi.")
|
|
710
|
+
time.sleep(1)
|
|
711
|
+
else:
|
|
712
|
+
console.print("[yellow]![/] Mantengo i volumi esistenti.")
|
|
713
|
+
console.print("[dim]Nota: se la password nel .env è diversa da quella nel volume, Neo4j non partirà.[/]")
|
|
714
|
+
|
|
694
715
|
# Check for port conflicts and offer to cleanup
|
|
695
716
|
if self._check_port_conflict(7687) or self._check_port_conflict(7474):
|
|
696
717
|
console.print("[yellow]![/] Le porte Neo4j (7474/7687) sono già in uso.")
|
|
@@ -700,11 +721,18 @@ Andiamo.
|
|
|
700
721
|
console.print(f"[dim]Container esistenti: {', '.join(conflicting)}[/]")
|
|
701
722
|
console.print("[dim]Nota: verranno rimossi anche i volumi per evitare conflitti password.[/]")
|
|
702
723
|
if Confirm.ask("Fermo e rimuovo i container esistenti (e i volumi)?", default=True):
|
|
724
|
+
# Use docker compose down -v if compose file exists (most reliable)
|
|
725
|
+
compose_path = self.project_root / "docker-compose.yml"
|
|
726
|
+
if compose_path.exists():
|
|
727
|
+
run_cmd(["docker", "compose", "down", "-v"], cwd=self.project_root, timeout=60)
|
|
728
|
+
# Also stop/remove any containers by name
|
|
703
729
|
for c in conflicting:
|
|
704
730
|
run_cmd(["docker", "stop", c], timeout=30)
|
|
705
|
-
run_cmd(["docker", "rm", "-v", c], timeout=10)
|
|
706
|
-
#
|
|
707
|
-
|
|
731
|
+
run_cmd(["docker", "rm", "-v", c], timeout=10)
|
|
732
|
+
# Force remove any lingering volumes by name pattern
|
|
733
|
+
for vol in ["kg-mcp_neo4j_data", "kg-mcp_neo4j_logs",
|
|
734
|
+
"mcp-kg-memory_neo4j_data", "mcp-kg-memory_neo4j_logs"]:
|
|
735
|
+
run_cmd(["docker", "volume", "rm", "-f", vol], timeout=10)
|
|
708
736
|
console.print("[green]✓[/] Container e volumi rimossi.")
|
|
709
737
|
time.sleep(2)
|
|
710
738
|
else:
|
|
@@ -938,11 +966,17 @@ volumes:
|
|
|
938
966
|
if r.returncode == 0:
|
|
939
967
|
console.print("[green]✓[/] Schema applicato.")
|
|
940
968
|
else:
|
|
941
|
-
console.print("[yellow]![/] apply_schema ha restituito errori
|
|
942
|
-
|
|
969
|
+
console.print("[yellow]![/] apply_schema ha restituito errori:")
|
|
970
|
+
# Show complete stderr/stdout for debugging
|
|
971
|
+
error_output = r.stderr or r.stdout or ""
|
|
972
|
+
console.print(f"[dim]{error_output}[/]")
|
|
973
|
+
# Show connection info for debugging
|
|
974
|
+
pwd_debug = env.get('NEO4J_PASSWORD', '')[:4] + '***' if env.get('NEO4J_PASSWORD') else 'NOT SET'
|
|
975
|
+
console.print(f"\n[dim]Debug: NEO4J_URI={env.get('NEO4J_URI')}, NEO4J_USER={env.get('NEO4J_USER')}, NEO4J_PASSWORD={pwd_debug}[/]")
|
|
976
|
+
console.print(f"[dim]Debug: Password in config: {'YES' if 'NEO4J_PASSWORD' in self.config else 'NO'}[/]")
|
|
943
977
|
except Exception as e:
|
|
944
978
|
console.print("[yellow]![/] Impossibile eseguire apply_schema (modulo mancante o errore runtime).")
|
|
945
|
-
console.print(str(e)
|
|
979
|
+
console.print(str(e))
|
|
946
980
|
|
|
947
981
|
console.print()
|
|
948
982
|
|
|
@@ -1067,7 +1101,7 @@ volumes:
|
|
|
1067
1101
|
f"[bold]User:[/] neo4j\n"
|
|
1068
1102
|
f"[bold]Password:[/] {neo4j_pass}\n\n"
|
|
1069
1103
|
"[bold]Query per vedere il grafo:[/]\n"
|
|
1070
|
-
"[cyan]MATCH (n)
|
|
1104
|
+
"[cyan]MATCH (n)-\[r]->(m) RETURN n, r, m LIMIT 100[/]\n\n"
|
|
1071
1105
|
"[dim]Copia la query sopra nel Neo4j Browser per visualizzare tutti i nodi e relazioni![/]",
|
|
1072
1106
|
title="🔗 Quick Start",
|
|
1073
1107
|
border_style="cyan"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kg-mcp
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.10
|
|
4
4
|
Summary: Memory/Knowledge Graph MCP Server for IDE Assistants - Persistent context and knowledge for AI coding agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/Hexecu/mcp-neuralmemory
|
|
6
6
|
Project-URL: Documentation, https://github.com/Hexecu/mcp-neuralmemory#readme
|
|
@@ -4,7 +4,7 @@ kg_mcp/config.py,sha256=9ryFQLG28B_v-PGv-D_2ojm5oU2EhNFxbq4qAv_hOyM,3479
|
|
|
4
4
|
kg_mcp/main.py,sha256=oprRN_yyZ5QIHOivYr923xl-_BWzizKvXEAOgtin-hg,5614
|
|
5
5
|
kg_mcp/utils.py,sha256=_4DlV2PtftJjR5Ak4lFzxdNuIrbyczIVenWhqKkX5zk,2810
|
|
6
6
|
kg_mcp/cli/__init__.py,sha256=-i85AHO1gqjeqEYqIkSjfW9Ik0LWbhrTPuhUCIk7eD4,60
|
|
7
|
-
kg_mcp/cli/setup.py,sha256=
|
|
7
|
+
kg_mcp/cli/setup.py,sha256=0us_U2gj69ZnNKtZfwy70JNSRFIa0ciZht2bwykjiwQ,46716
|
|
8
8
|
kg_mcp/cli/status.py,sha256=0-_CiISA5maBgliQXl6S7B5WfpEc8nUuQI6S1QE_mLk,12651
|
|
9
9
|
kg_mcp/codegraph/__init__.py,sha256=Erh3mMg5FlbN0kzMJAzCpizcrjrNX0LuZHawKOECskE,68
|
|
10
10
|
kg_mcp/codegraph/indexer.py,sha256=H-QTMmrLsgzL4jXzhgLUagFGUyDfkm9cX-B-9ip_7TA,9130
|
|
@@ -30,7 +30,7 @@ kg_mcp/mcp/tools.py,sha256=8CpBsO-_y7rW6wRb00NQJ73ENqgj7rUwzi76QGmKqZA,20172
|
|
|
30
30
|
kg_mcp/security/__init__.py,sha256=zvxT3XvZQLqMaj1IiKOYXlQDmQrolXpEErn8-LSe-a8,65
|
|
31
31
|
kg_mcp/security/auth.py,sha256=4GLUguNnlvwA8G1cAjbQlMvndyJYxecEv1REQFnhk4s,3218
|
|
32
32
|
kg_mcp/security/origin.py,sha256=fRm-w_URkT7sF0D8aRnt3xXXXkfYREBAydHKdrTrbtg,3068
|
|
33
|
-
kg_mcp-0.1.
|
|
34
|
-
kg_mcp-0.1.
|
|
35
|
-
kg_mcp-0.1.
|
|
36
|
-
kg_mcp-0.1.
|
|
33
|
+
kg_mcp-0.1.10.dist-info/METADATA,sha256=94_YyUc3GuwQYHpedKfk8PIp4sk-jBLa3IcbjmBKWsY,3027
|
|
34
|
+
kg_mcp-0.1.10.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
35
|
+
kg_mcp-0.1.10.dist-info/entry_points.txt,sha256=rWKJ-LdGRIRnTAALNI0ZJ7H1Nclnn8C76OLwt3QjUiE,120
|
|
36
|
+
kg_mcp-0.1.10.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|