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.
- mcpaisuite_memorymcp-1.0.3/.github/workflows/ci.yml +30 -0
- mcpaisuite_memorymcp-1.0.3/.github/workflows/release.yml +26 -0
- mcpaisuite_memorymcp-1.0.3/.gitignore +35 -0
- mcpaisuite_memorymcp-1.0.3/CHANGELOG.md +61 -0
- mcpaisuite_memorymcp-1.0.3/LICENSE +661 -0
- mcpaisuite_memorymcp-1.0.3/PKG-INFO +802 -0
- mcpaisuite_memorymcp-1.0.3/README.md +701 -0
- mcpaisuite_memorymcp-1.0.3/benchmarks/REPORT_mem_vs_mem0.md +113 -0
- mcpaisuite_memorymcp-1.0.3/benchmarks/c2_hard.py +138 -0
- mcpaisuite_memorymcp-1.0.3/benchmarks/c2_memory_qa.py +125 -0
- mcpaisuite_memorymcp-1.0.3/benchmarks/c2_recency_inject.py +97 -0
- mcpaisuite_memorymcp-1.0.3/benchmarks/c2_recency_llm.py +128 -0
- mcpaisuite_memorymcp-1.0.3/benchmarks/measure_paraphrase.py +135 -0
- mcpaisuite_memorymcp-1.0.3/benchmarks/mem_dataset.py +108 -0
- mcpaisuite_memorymcp-1.0.3/benchmarks/mem_vs_mem0.py +247 -0
- mcpaisuite_memorymcp-1.0.3/benchmarks/recall_benchmark.py +120 -0
- mcpaisuite_memorymcp-1.0.3/benchmarks/results_mem_vs_mem0.json +56 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/__init__.py +33 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/_fallback_semantic.py +52 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/_redis.py +28 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/analytics.py +65 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/api/__init__.py +16 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/api/app.py +344 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/audit.py +65 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/cli.py +158 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/confidence/__init__.py +3 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/confidence/tracker.py +31 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/consolidation/__init__.py +3 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/consolidation/engine.py +139 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/consolidation/reflection.py +104 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/context/__init__.py +3 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/context/assembler.py +89 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/core/__init__.py +36 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/core/base.py +112 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/core/models.py +271 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/decay/__init__.py +3 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/decay/engine.py +47 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/episodic/__init__.py +9 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/episodic/compressor.py +29 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/episodic/memory.py +61 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/episodic/redis_store.py +111 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/episodic/sqlite_store.py +122 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/events.py +77 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/extraction/__init__.py +4 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/extraction/llm_extractor.py +227 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/extraction/pattern_extractor.py +107 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/factory.py +400 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/graph/__init__.py +8 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/graph/memory_graph.py +66 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/graph/neo4j_graph.py +135 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/hot_cache/__init__.py +8 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/hot_cache/memory_cache.py +66 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/hot_cache/redis_cache.py +47 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/importance/__init__.py +3 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/importance/heuristic_scorer.py +51 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/mcp_server.py +393 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/observability.py +52 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/pii/__init__.py +3 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/pii/regex_filter.py +27 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/pipeline.py +539 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/quota/__init__.py +3 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/quota/manager.py +83 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/scheduler.py +97 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/__init__.py +13 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/_chunk.py +18 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/_fastembed.py +29 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/_memory_vectorstore.py +86 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/caching_embedder.py +66 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/chroma_store.py +201 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/pgvector_store.py +197 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/qdrant_store.py +193 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/query_expander.py +58 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/reranker.py +55 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/semantic/store.py +148 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/snapshot.py +68 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/webhooks.py +62 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/working/__init__.py +8 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/working/memory.py +79 -0
- mcpaisuite_memorymcp-1.0.3/memorymcp/working/redis_store.py +54 -0
- mcpaisuite_memorymcp-1.0.3/pyproject.toml +78 -0
- mcpaisuite_memorymcp-1.0.3/tests/README.md +98 -0
- mcpaisuite_memorymcp-1.0.3/tests/__init__.py +0 -0
- mcpaisuite_memorymcp-1.0.3/tests/conftest.py +59 -0
- mcpaisuite_memorymcp-1.0.3/tests/integration/__init__.py +0 -0
- mcpaisuite_memorymcp-1.0.3/tests/integration/conftest.py +42 -0
- mcpaisuite_memorymcp-1.0.3/tests/integration/test_mcp_server.py +384 -0
- mcpaisuite_memorymcp-1.0.3/tests/integration/test_memory_flows.py +302 -0
- mcpaisuite_memorymcp-1.0.3/tests/test_standalone.py +39 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/__init__.py +0 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_confidence.py +95 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_consolidation.py +133 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_context_assembler.py +165 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_decay.py +161 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_episodic_store.py +116 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_events_analytics.py +144 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_extractor.py +184 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_fact_graph.py +136 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_factory_v2.py +141 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_hot_cache.py +124 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_llm_extractor.py +289 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_memory_enhancements.py +211 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_models.py +304 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_pii_filter.py +100 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_pipeline.py +188 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_query_expansion.py +89 -0
- mcpaisuite_memorymcp-1.0.3/tests/unit/test_sqlite_episodic.py +84 -0
- 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)
|