mem0-open-mcp 0.1.3__tar.gz → 0.1.5__tar.gz
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.
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/PKG-INFO +6 -3
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/README.md +5 -2
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/pyproject.toml +1 -1
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/cli.py +52 -3
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/.env.example +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/.github/workflows/publish.yml +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/.gitignore +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/Dockerfile +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/docker-compose.yaml +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/examples/ollama-config.yaml +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/mem0-open-mcp.example.yaml +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/__init__.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/api/__init__.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/api/routes.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/config/__init__.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/config/loader.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/config/schema.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/mcp/__init__.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/mcp/server.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/server.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/src/mem0_server/utils/__init__.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/tests/test_api.py +0 -0
- {mem0_open_mcp-0.1.3 → mem0_open_mcp-0.1.5}/tests/test_config.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mem0-open-mcp
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.5
|
|
4
4
|
Summary: Open-source MCP server for mem0 - local LLMs, self-hosted, Docker-free
|
|
5
5
|
Author: Alex
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -80,17 +80,20 @@ mem0-open-mcp init
|
|
|
80
80
|
# Interactive configuration wizard
|
|
81
81
|
mem0-open-mcp configure
|
|
82
82
|
|
|
83
|
+
# Test configuration (recommended for initial setup)
|
|
84
|
+
mem0-open-mcp test
|
|
85
|
+
|
|
83
86
|
# Start the server
|
|
84
87
|
mem0-open-mcp serve
|
|
85
88
|
|
|
86
|
-
# Test
|
|
89
|
+
# Test and start server
|
|
87
90
|
mem0-open-mcp serve --test
|
|
88
91
|
|
|
89
92
|
# With options
|
|
90
93
|
mem0-open-mcp serve --port 8765 --user-id alice
|
|
91
94
|
```
|
|
92
95
|
|
|
93
|
-
The
|
|
96
|
+
The `test` command verifies your configuration without starting the server:
|
|
94
97
|
- Checks Vector Store, LLM, and Embedder connections
|
|
95
98
|
- Performs actual memory add/search operations
|
|
96
99
|
- Cleans up test data automatically
|
|
@@ -39,17 +39,20 @@ mem0-open-mcp init
|
|
|
39
39
|
# Interactive configuration wizard
|
|
40
40
|
mem0-open-mcp configure
|
|
41
41
|
|
|
42
|
+
# Test configuration (recommended for initial setup)
|
|
43
|
+
mem0-open-mcp test
|
|
44
|
+
|
|
42
45
|
# Start the server
|
|
43
46
|
mem0-open-mcp serve
|
|
44
47
|
|
|
45
|
-
# Test
|
|
48
|
+
# Test and start server
|
|
46
49
|
mem0-open-mcp serve --test
|
|
47
50
|
|
|
48
51
|
# With options
|
|
49
52
|
mem0-open-mcp serve --port 8765 --user-id alice
|
|
50
53
|
```
|
|
51
54
|
|
|
52
|
-
The
|
|
55
|
+
The `test` command verifies your configuration without starting the server:
|
|
53
56
|
- Checks Vector Store, LLM, and Embedder connections
|
|
54
57
|
- Performs actual memory add/search operations
|
|
55
58
|
- Cleans up test data automatically
|
|
@@ -35,6 +35,14 @@ UPDATE_CHECK_CACHE = Path.home() / ".cache" / "mem0-open-mcp" / "update_check.js
|
|
|
35
35
|
UPDATE_CHECK_INTERVAL = 86400 # 24 hours
|
|
36
36
|
|
|
37
37
|
|
|
38
|
+
def _parse_version(v: str) -> tuple[int, ...]:
|
|
39
|
+
"""Parse version string to tuple for comparison."""
|
|
40
|
+
try:
|
|
41
|
+
return tuple(int(x) for x in v.split(".")[:3])
|
|
42
|
+
except (ValueError, AttributeError):
|
|
43
|
+
return (0, 0, 0)
|
|
44
|
+
|
|
45
|
+
|
|
38
46
|
def _check_for_updates() -> None:
|
|
39
47
|
"""Check PyPI for newer version (once per day)."""
|
|
40
48
|
try:
|
|
@@ -44,9 +52,10 @@ def _check_for_updates() -> None:
|
|
|
44
52
|
if UPDATE_CHECK_CACHE.exists():
|
|
45
53
|
cache = json.loads(UPDATE_CHECK_CACHE.read_text())
|
|
46
54
|
if now - cache.get("last_check", 0) < UPDATE_CHECK_INTERVAL:
|
|
47
|
-
|
|
55
|
+
latest = cache.get("latest")
|
|
56
|
+
if latest and _parse_version(latest) > _parse_version(__version__):
|
|
48
57
|
console.print(
|
|
49
|
-
f"[yellow]Update available: {__version__} → {
|
|
58
|
+
f"[yellow]Update available: {__version__} → {latest}[/yellow]\n"
|
|
50
59
|
f"[dim] pip install --upgrade mem0-open-mcp[/dim]\n"
|
|
51
60
|
)
|
|
52
61
|
return
|
|
@@ -58,7 +67,7 @@ def _check_for_updates() -> None:
|
|
|
58
67
|
|
|
59
68
|
UPDATE_CHECK_CACHE.write_text(json.dumps({"last_check": now, "latest": latest}))
|
|
60
69
|
|
|
61
|
-
if latest
|
|
70
|
+
if _parse_version(latest) > _parse_version(__version__):
|
|
62
71
|
console.print(
|
|
63
72
|
f"[yellow]Update available: {__version__} → {latest}[/yellow]\n"
|
|
64
73
|
f"[dim] pip install --upgrade mem0-open-mcp[/dim]\n"
|
|
@@ -340,6 +349,46 @@ def serve(
|
|
|
340
349
|
raise typer.Exit(1) from None
|
|
341
350
|
|
|
342
351
|
|
|
352
|
+
@app.command()
|
|
353
|
+
def test(
|
|
354
|
+
config_file: Annotated[
|
|
355
|
+
Path | None,
|
|
356
|
+
typer.Option(
|
|
357
|
+
"--config", "-c",
|
|
358
|
+
help="Path to configuration file (YAML or JSON).",
|
|
359
|
+
exists=True,
|
|
360
|
+
),
|
|
361
|
+
] = None,
|
|
362
|
+
) -> None:
|
|
363
|
+
"""Test connectivity and memory operations without starting server.
|
|
364
|
+
|
|
365
|
+
Examples:
|
|
366
|
+
mem0-open-mcp test
|
|
367
|
+
mem0-open-mcp test --config ./my-config.yaml
|
|
368
|
+
"""
|
|
369
|
+
loader = ConfigLoader(config_file)
|
|
370
|
+
config = loader.load()
|
|
371
|
+
|
|
372
|
+
console.print(Panel.fit(
|
|
373
|
+
f"[bold green]mem0-open-mcp[/bold green] v{__version__}\n"
|
|
374
|
+
f"[dim]Configuration Test[/dim]",
|
|
375
|
+
border_style="green",
|
|
376
|
+
))
|
|
377
|
+
|
|
378
|
+
console.print("\n[bold]Configuration:[/bold]")
|
|
379
|
+
console.print(f" LLM: [cyan]{config.llm.provider.value}[/cyan] / {config.llm.config.model}")
|
|
380
|
+
console.print(f" Embedder: [cyan]{config.embedder.provider.value}[/cyan] / {config.embedder.config.model}")
|
|
381
|
+
console.print(f" Vector Store: [cyan]{config.vector_store.provider.value}[/cyan]")
|
|
382
|
+
console.print()
|
|
383
|
+
|
|
384
|
+
if not _run_connectivity_tests(config):
|
|
385
|
+
raise typer.Exit(1)
|
|
386
|
+
if not _run_memory_tests(config):
|
|
387
|
+
raise typer.Exit(1)
|
|
388
|
+
|
|
389
|
+
console.print("[bold green]All tests passed! Configuration is ready.[/bold green]")
|
|
390
|
+
|
|
391
|
+
|
|
343
392
|
@app.command()
|
|
344
393
|
def configure(
|
|
345
394
|
config_file: Annotated[
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|