mcpaisuite-memorymcp 1.0.3__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.
Files changed (107) hide show
  1. mcpaisuite_memorymcp-1.0.3/.github/workflows/ci.yml +30 -0
  2. mcpaisuite_memorymcp-1.0.3/.github/workflows/release.yml +26 -0
  3. mcpaisuite_memorymcp-1.0.3/.gitignore +35 -0
  4. mcpaisuite_memorymcp-1.0.3/CHANGELOG.md +61 -0
  5. mcpaisuite_memorymcp-1.0.3/LICENSE +661 -0
  6. mcpaisuite_memorymcp-1.0.3/PKG-INFO +802 -0
  7. mcpaisuite_memorymcp-1.0.3/README.md +701 -0
  8. mcpaisuite_memorymcp-1.0.3/benchmarks/REPORT_mem_vs_mem0.md +113 -0
  9. mcpaisuite_memorymcp-1.0.3/benchmarks/c2_hard.py +138 -0
  10. mcpaisuite_memorymcp-1.0.3/benchmarks/c2_memory_qa.py +125 -0
  11. mcpaisuite_memorymcp-1.0.3/benchmarks/c2_recency_inject.py +97 -0
  12. mcpaisuite_memorymcp-1.0.3/benchmarks/c2_recency_llm.py +128 -0
  13. mcpaisuite_memorymcp-1.0.3/benchmarks/measure_paraphrase.py +135 -0
  14. mcpaisuite_memorymcp-1.0.3/benchmarks/mem_dataset.py +108 -0
  15. mcpaisuite_memorymcp-1.0.3/benchmarks/mem_vs_mem0.py +247 -0
  16. mcpaisuite_memorymcp-1.0.3/benchmarks/recall_benchmark.py +120 -0
  17. mcpaisuite_memorymcp-1.0.3/benchmarks/results_mem_vs_mem0.json +56 -0
  18. mcpaisuite_memorymcp-1.0.3/memorymcp/__init__.py +33 -0
  19. mcpaisuite_memorymcp-1.0.3/memorymcp/_fallback_semantic.py +52 -0
  20. mcpaisuite_memorymcp-1.0.3/memorymcp/_redis.py +28 -0
  21. mcpaisuite_memorymcp-1.0.3/memorymcp/analytics.py +65 -0
  22. mcpaisuite_memorymcp-1.0.3/memorymcp/api/__init__.py +16 -0
  23. mcpaisuite_memorymcp-1.0.3/memorymcp/api/app.py +344 -0
  24. mcpaisuite_memorymcp-1.0.3/memorymcp/audit.py +65 -0
  25. mcpaisuite_memorymcp-1.0.3/memorymcp/cli.py +158 -0
  26. mcpaisuite_memorymcp-1.0.3/memorymcp/confidence/__init__.py +3 -0
  27. mcpaisuite_memorymcp-1.0.3/memorymcp/confidence/tracker.py +31 -0
  28. mcpaisuite_memorymcp-1.0.3/memorymcp/consolidation/__init__.py +3 -0
  29. mcpaisuite_memorymcp-1.0.3/memorymcp/consolidation/engine.py +139 -0
  30. mcpaisuite_memorymcp-1.0.3/memorymcp/consolidation/reflection.py +104 -0
  31. mcpaisuite_memorymcp-1.0.3/memorymcp/context/__init__.py +3 -0
  32. mcpaisuite_memorymcp-1.0.3/memorymcp/context/assembler.py +89 -0
  33. mcpaisuite_memorymcp-1.0.3/memorymcp/core/__init__.py +36 -0
  34. mcpaisuite_memorymcp-1.0.3/memorymcp/core/base.py +112 -0
  35. mcpaisuite_memorymcp-1.0.3/memorymcp/core/models.py +271 -0
  36. mcpaisuite_memorymcp-1.0.3/memorymcp/decay/__init__.py +3 -0
  37. mcpaisuite_memorymcp-1.0.3/memorymcp/decay/engine.py +47 -0
  38. mcpaisuite_memorymcp-1.0.3/memorymcp/episodic/__init__.py +9 -0
  39. mcpaisuite_memorymcp-1.0.3/memorymcp/episodic/compressor.py +29 -0
  40. mcpaisuite_memorymcp-1.0.3/memorymcp/episodic/memory.py +61 -0
  41. mcpaisuite_memorymcp-1.0.3/memorymcp/episodic/redis_store.py +111 -0
  42. mcpaisuite_memorymcp-1.0.3/memorymcp/episodic/sqlite_store.py +122 -0
  43. mcpaisuite_memorymcp-1.0.3/memorymcp/events.py +77 -0
  44. mcpaisuite_memorymcp-1.0.3/memorymcp/extraction/__init__.py +4 -0
  45. mcpaisuite_memorymcp-1.0.3/memorymcp/extraction/llm_extractor.py +227 -0
  46. mcpaisuite_memorymcp-1.0.3/memorymcp/extraction/pattern_extractor.py +107 -0
  47. mcpaisuite_memorymcp-1.0.3/memorymcp/factory.py +400 -0
  48. mcpaisuite_memorymcp-1.0.3/memorymcp/graph/__init__.py +8 -0
  49. mcpaisuite_memorymcp-1.0.3/memorymcp/graph/memory_graph.py +66 -0
  50. mcpaisuite_memorymcp-1.0.3/memorymcp/graph/neo4j_graph.py +135 -0
  51. mcpaisuite_memorymcp-1.0.3/memorymcp/hot_cache/__init__.py +8 -0
  52. mcpaisuite_memorymcp-1.0.3/memorymcp/hot_cache/memory_cache.py +66 -0
  53. mcpaisuite_memorymcp-1.0.3/memorymcp/hot_cache/redis_cache.py +47 -0
  54. mcpaisuite_memorymcp-1.0.3/memorymcp/importance/__init__.py +3 -0
  55. mcpaisuite_memorymcp-1.0.3/memorymcp/importance/heuristic_scorer.py +51 -0
  56. mcpaisuite_memorymcp-1.0.3/memorymcp/mcp_server.py +393 -0
  57. mcpaisuite_memorymcp-1.0.3/memorymcp/observability.py +52 -0
  58. mcpaisuite_memorymcp-1.0.3/memorymcp/pii/__init__.py +3 -0
  59. mcpaisuite_memorymcp-1.0.3/memorymcp/pii/regex_filter.py +27 -0
  60. mcpaisuite_memorymcp-1.0.3/memorymcp/pipeline.py +539 -0
  61. mcpaisuite_memorymcp-1.0.3/memorymcp/quota/__init__.py +3 -0
  62. mcpaisuite_memorymcp-1.0.3/memorymcp/quota/manager.py +83 -0
  63. mcpaisuite_memorymcp-1.0.3/memorymcp/scheduler.py +97 -0
  64. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/__init__.py +13 -0
  65. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/_chunk.py +18 -0
  66. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/_fastembed.py +29 -0
  67. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/_memory_vectorstore.py +86 -0
  68. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/caching_embedder.py +66 -0
  69. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/chroma_store.py +201 -0
  70. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/pgvector_store.py +197 -0
  71. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/qdrant_store.py +193 -0
  72. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/query_expander.py +58 -0
  73. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/reranker.py +55 -0
  74. mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/store.py +148 -0
  75. mcpaisuite_memorymcp-1.0.3/memorymcp/snapshot.py +68 -0
  76. mcpaisuite_memorymcp-1.0.3/memorymcp/webhooks.py +62 -0
  77. mcpaisuite_memorymcp-1.0.3/memorymcp/working/__init__.py +8 -0
  78. mcpaisuite_memorymcp-1.0.3/memorymcp/working/memory.py +79 -0
  79. mcpaisuite_memorymcp-1.0.3/memorymcp/working/redis_store.py +54 -0
  80. mcpaisuite_memorymcp-1.0.3/pyproject.toml +78 -0
  81. mcpaisuite_memorymcp-1.0.3/tests/README.md +98 -0
  82. mcpaisuite_memorymcp-1.0.3/tests/__init__.py +0 -0
  83. mcpaisuite_memorymcp-1.0.3/tests/conftest.py +59 -0
  84. mcpaisuite_memorymcp-1.0.3/tests/integration/__init__.py +0 -0
  85. mcpaisuite_memorymcp-1.0.3/tests/integration/conftest.py +42 -0
  86. mcpaisuite_memorymcp-1.0.3/tests/integration/test_mcp_server.py +384 -0
  87. mcpaisuite_memorymcp-1.0.3/tests/integration/test_memory_flows.py +302 -0
  88. mcpaisuite_memorymcp-1.0.3/tests/test_standalone.py +39 -0
  89. mcpaisuite_memorymcp-1.0.3/tests/unit/__init__.py +0 -0
  90. mcpaisuite_memorymcp-1.0.3/tests/unit/test_confidence.py +95 -0
  91. mcpaisuite_memorymcp-1.0.3/tests/unit/test_consolidation.py +133 -0
  92. mcpaisuite_memorymcp-1.0.3/tests/unit/test_context_assembler.py +165 -0
  93. mcpaisuite_memorymcp-1.0.3/tests/unit/test_decay.py +161 -0
  94. mcpaisuite_memorymcp-1.0.3/tests/unit/test_episodic_store.py +116 -0
  95. mcpaisuite_memorymcp-1.0.3/tests/unit/test_events_analytics.py +144 -0
  96. mcpaisuite_memorymcp-1.0.3/tests/unit/test_extractor.py +184 -0
  97. mcpaisuite_memorymcp-1.0.3/tests/unit/test_fact_graph.py +136 -0
  98. mcpaisuite_memorymcp-1.0.3/tests/unit/test_factory_v2.py +141 -0
  99. mcpaisuite_memorymcp-1.0.3/tests/unit/test_hot_cache.py +124 -0
  100. mcpaisuite_memorymcp-1.0.3/tests/unit/test_llm_extractor.py +289 -0
  101. mcpaisuite_memorymcp-1.0.3/tests/unit/test_memory_enhancements.py +211 -0
  102. mcpaisuite_memorymcp-1.0.3/tests/unit/test_models.py +304 -0
  103. mcpaisuite_memorymcp-1.0.3/tests/unit/test_pii_filter.py +100 -0
  104. mcpaisuite_memorymcp-1.0.3/tests/unit/test_pipeline.py +188 -0
  105. mcpaisuite_memorymcp-1.0.3/tests/unit/test_query_expansion.py +89 -0
  106. mcpaisuite_memorymcp-1.0.3/tests/unit/test_sqlite_episodic.py +84 -0
  107. mcpaisuite_memorymcp-1.0.3/tests/unit/test_working_memory.py +98 -0
@@ -0,0 +1,30 @@
1
+ name: CI — memorymcp
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ pull_request:
6
+ branches: [main]
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ python-version: ['3.11', '3.12', '3.13']
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: actions/setup-python@v5
17
+ with:
18
+ python-version: ${{ matrix.python-version }}
19
+ - name: Install package
20
+ run: pip install -e ".[dev]"
21
+ - name: Lint (ruff)
22
+ run: |
23
+ pip install ruff
24
+ ruff check .
25
+ - name: Security scan (bandit)
26
+ run: |
27
+ pip install bandit
28
+ bandit -r memorymcp/ -c .bandit --severity-level medium 2>&1 || true
29
+ - name: Tests
30
+ run: python -m pytest tests/ -v --tb=short --cov=memorymcp --cov-report=term-missing --cov-fail-under=50
@@ -0,0 +1,26 @@
1
+ name: release
2
+ # Publishes to PRODUCTION PyPI (pypi.org) when you push a version tag, e.g.
3
+ # `git tag v1.0.3 && git push --tags`.
4
+ # Auth = PyPI Trusted Publishing (OIDC): NO stored token. You must add this repo+workflow
5
+ # as a (pending) trusted publisher on pypi.org first: https://pypi.org/manage/account/publishing/
6
+ on:
7
+ push:
8
+ tags:
9
+ - 'v*'
10
+ jobs:
11
+ pypi:
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: read # checkout needs read access (private repo)
15
+ id-token: write # short-lived OIDC token for Trusted Publishing — no secret stored
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: '3.12'
21
+ - name: Build sdist + wheel
22
+ run: |
23
+ python -m pip install --upgrade build
24
+ python -m build
25
+ - name: Publish to PyPI (Trusted Publishing, no token)
26
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,35 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ *.egg
8
+ .eggs/
9
+
10
+ .env
11
+ .env.*
12
+ *.log
13
+
14
+ .venv/
15
+ venv/
16
+ env/
17
+
18
+ .pytest_cache/
19
+ .mypy_cache/
20
+ .ruff_cache/
21
+ htmlcov/
22
+ .coverage
23
+
24
+ *.db
25
+ *.sqlite3
26
+
27
+ node_modules/
28
+ .next/
29
+ .turbo/
30
+
31
+ .DS_Store
32
+ Thumbs.db
33
+
34
+ llm_config.json
35
+ plan.md
@@ -0,0 +1,61 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ ### Fixed
6
+ - `decay_mode="adaptive"` is now a real, selectable decay mode: it always applies the retrieval-frequency slowdown, independent of the engine's global `adaptive` flag. Previously it silently fell through to plain `exponential` (no boost) when the global flag was off.
7
+ - Tier TTL defaults corrected so a hot-cache entry no longer outlives a working-memory entry: `HotCache` TTL `3600s → 300s` (5 min), `WorkingStore` TTL `1800s → 3600s` (1 h).
8
+
9
+ ## 2.0.0 (2026-04-26)
10
+
11
+ Initial release.
12
+
13
+ ### Core
14
+ - 4-tier memory architecture: Hot Cache, Working Memory, Episodic Store, Semantic Store
15
+ - `MemoryPipeline` — central orchestrator for all memory operations
16
+ - `MemoryFactory` — configurable factory with `default()`, `create()`, `from_yaml()`, `from_env()`
17
+ - Pydantic v2 models for all data structures
18
+
19
+ ### Extraction
20
+ - `PatternFactExtractor` — zero-dependency regex-based fact extraction
21
+ - `LLMFactExtractor` — LLM-powered extraction with conversation context, correction detection, and decay mode assignment
22
+ - Question and noise filtering (`_is_non_informative`)
23
+
24
+ ### Memory Management
25
+ - `ConsolidationEngine` — deduplication (SKIP), contradiction detection (OVERWRITE), complement merging (UPDATE)
26
+ - `DecayEngine` — exponential, linear, and anchored decay modes with adaptive retrieval boost
27
+ - `ConfidenceTracker` — confirmation counting and confidence scoring
28
+ - `HeuristicImportanceScorer` — automatic importance scoring
29
+
30
+ ### Graph
31
+ - `InMemoryFactGraph` — fact relations with traversal (supports, contradicts, supersedes, related_to, created_by, etc.)
32
+ - LLM-based relation extraction
33
+
34
+ ### Context Assembly
35
+ - `ContextAssembler` — token-budgeted context with episodic/semantic blend
36
+ - Query enrichment for short/ambiguous queries using conversation history
37
+ - Markdown rendering for LLM consumption
38
+
39
+ ### MCP Server
40
+ - 9 tools: query_memory, store_fact, add_episode, get_session_context, assemble_context, set_working_memory, get_working_memory, forget_fact, memory_stats
41
+ - stdio and SSE transport
42
+
43
+ ### CLI
44
+ - `memorymcp serve` — start MCP server
45
+ - `memorymcp query` — search memory
46
+ - `memorymcp store` — store a fact
47
+ - `memorymcp stats` — memory health
48
+ - `memorymcp consolidate` — run consolidation cycle
49
+ - `memorymcp forget-user` — GDPR data deletion
50
+
51
+ ### Privacy
52
+ - PII filter with regex-based redaction (email, phone, SSN, credit card)
53
+ - Namespace-based multi-tenancy with full isolation
54
+ - `forget_user()` for complete data deletion
55
+
56
+ ### Demo
57
+ - Full-stack dashboard (FastAPI + Next.js)
58
+ - Chat interface with streaming, fact extraction badges, memory retrieval panel
59
+ - Memory Browser, Sessions, Graph Explorer, Analytics, Memory Lab, Settings
60
+ - Tenant switcher with create/delete/switch
61
+ - LLM settings (OpenAI, Anthropic, Ollama, OpenAI-compatible)