memoryintelligence-mcp 0.1.7__tar.gz → 0.1.8__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.
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/CHANGELOG.md +14 -0
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/PKG-INFO +3 -3
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/README.md +2 -2
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/pyproject.toml +1 -1
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/src/mi_mcp/__init__.py +1 -1
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/src/mi_mcp/cli.py +22 -6
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/src/mi_mcp/server.py +1 -1
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/.gitignore +0 -0
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/CONTRIBUTING.md +0 -0
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/LICENSE +0 -0
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/src/mi_mcp/__main__.py +0 -0
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/src/mi_mcp/client.py +0 -0
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/src/mi_mcp/config.py +0 -0
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/src/mi_mcp/keys.py +0 -0
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/src/mi_mcp/paths.py +0 -0
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/src/mi_mcp/umo_format.py +0 -0
- {memoryintelligence_mcp-0.1.7 → memoryintelligence_mcp-0.1.8}/src/mi_mcp/vault.py +0 -0
|
@@ -3,6 +3,20 @@
|
|
|
3
3
|
All notable changes to `memoryintelligence-mcp` are documented here.
|
|
4
4
|
The format follows [Keep a Changelog](https://keepachangelog.com/); this project uses [Semantic Versioning](https://semver.org/).
|
|
5
5
|
|
|
6
|
+
## [0.1.8] — 2026-06-10
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
- **The MCP server id is now `memoryintelligence`** (was `memory-intelligence`).
|
|
10
|
+
This is the id under `mcpServers` in your config and the name in
|
|
11
|
+
`claude mcp add …`. It now matches the brand/package token everywhere else
|
|
12
|
+
(`MemoryIntelligence`, `memoryintelligence-mcp`) instead of splitting the word
|
|
13
|
+
with a dash.
|
|
14
|
+
- **Auto-migration:** `mi-mcp wire`/`setup` removes the old `memory-intelligence`
|
|
15
|
+
entry from every surface (file configs **and** `claude mcp remove`) before
|
|
16
|
+
adding the new id, so an upgrade leaves no duplicate/orphan. `mi-mcp doctor`
|
|
17
|
+
flags a leftover legacy entry and tells you to re-wire. **Action on upgrade:
|
|
18
|
+
run `mi-mcp wire` once.** (Hand-edited configs: rename the key yourself.)
|
|
19
|
+
|
|
6
20
|
## [0.1.7] — 2026-06-09
|
|
7
21
|
|
|
8
22
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: memoryintelligence-mcp
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.8
|
|
4
4
|
Summary: MCP server for MemoryIntelligence — give Claude a memory you own, set up in one command
|
|
5
5
|
Project-URL: Homepage, https://memoryintelligence.io
|
|
6
6
|
Project-URL: Repository, https://github.com/somewhere11/memoryintelligence-mcp
|
|
@@ -249,7 +249,7 @@ So a leaked or committed config file exposes **nothing**.
|
|
|
249
249
|
HTTPS; nothing else is transmitted, and the server does not log conversation
|
|
250
250
|
content or your API key. See [memoryintelligence.io/privacy](https://memoryintelligence.io/privacy).
|
|
251
251
|
- **Off switch.** Clear `~/.memoryintelligence/mcp/opt-in-paths` (captures skip) or
|
|
252
|
-
remove the `
|
|
252
|
+
remove the `memoryintelligence` entry from your Claude config to fully unwire.
|
|
253
253
|
|
|
254
254
|
Found a vulnerability? See [SECURITY.md](SECURITY.md) — report privately to
|
|
255
255
|
connect@somewheremedia.com.
|
|
@@ -280,7 +280,7 @@ lowercase-hyphen) — but they collapse to one **long form** and one **short for
|
|
|
280
280
|
| `memoryintelligence-mcp` | the **PyPI package** (`pip install` / `uvx`) | PyPI normalizes to lowercase + hyphens |
|
|
281
281
|
| `mi-mcp` | the **command** you run (`mi-mcp setup`) | short for daily use (`memoryintelligence-mcp` is an alias) |
|
|
282
282
|
| `mi_mcp` | the Python import package | must be a valid identifier — no hyphens |
|
|
283
|
-
| `
|
|
283
|
+
| `memoryintelligence` | the **server id** in your MCP config | matches the brand token (renamed from `memory-intelligence` in 0.1.8) |
|
|
284
284
|
| `MI_*` (e.g. `MI_API_KEY`) | environment variables / Keychain service | short prefix |
|
|
285
285
|
|
|
286
286
|
And everything written to disk lives under one on-brand namespace:
|
|
@@ -214,7 +214,7 @@ So a leaked or committed config file exposes **nothing**.
|
|
|
214
214
|
HTTPS; nothing else is transmitted, and the server does not log conversation
|
|
215
215
|
content or your API key. See [memoryintelligence.io/privacy](https://memoryintelligence.io/privacy).
|
|
216
216
|
- **Off switch.** Clear `~/.memoryintelligence/mcp/opt-in-paths` (captures skip) or
|
|
217
|
-
remove the `
|
|
217
|
+
remove the `memoryintelligence` entry from your Claude config to fully unwire.
|
|
218
218
|
|
|
219
219
|
Found a vulnerability? See [SECURITY.md](SECURITY.md) — report privately to
|
|
220
220
|
connect@somewheremedia.com.
|
|
@@ -245,7 +245,7 @@ lowercase-hyphen) — but they collapse to one **long form** and one **short for
|
|
|
245
245
|
| `memoryintelligence-mcp` | the **PyPI package** (`pip install` / `uvx`) | PyPI normalizes to lowercase + hyphens |
|
|
246
246
|
| `mi-mcp` | the **command** you run (`mi-mcp setup`) | short for daily use (`memoryintelligence-mcp` is an alias) |
|
|
247
247
|
| `mi_mcp` | the Python import package | must be a valid identifier — no hyphens |
|
|
248
|
-
| `
|
|
248
|
+
| `memoryintelligence` | the **server id** in your MCP config | matches the brand token (renamed from `memory-intelligence` in 0.1.8) |
|
|
249
249
|
| `MI_*` (e.g. `MI_API_KEY`) | environment variables / Keychain service | short prefix |
|
|
250
250
|
|
|
251
251
|
And everything written to disk lives under one on-brand namespace:
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "memoryintelligence-mcp"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.8"
|
|
8
8
|
description = "MCP server for MemoryIntelligence — give Claude a memory you own, set up in one command"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -36,7 +36,11 @@ from pathlib import Path
|
|
|
36
36
|
from . import paths
|
|
37
37
|
from .config import load_opt_in_paths
|
|
38
38
|
|
|
39
|
-
SERVER_KEY = "
|
|
39
|
+
SERVER_KEY = "memoryintelligence"
|
|
40
|
+
# Pre-0.1.8 server ids we replace on wire so an upgrade leaves no orphaned entry.
|
|
41
|
+
# (0.1.7 and earlier registered the server as "memory-intelligence" — the one
|
|
42
|
+
# dash-seam that didn't match the brand/package "memoryintelligence".)
|
|
43
|
+
LEGACY_SERVER_KEYS = ("memory-intelligence",)
|
|
40
44
|
|
|
41
45
|
# Wrapper rendered by `wire`. __MI_MCP_BIN__ is replaced with the absolute path
|
|
42
46
|
# to the mi-mcp binary (resolved at wire time) so the host can spawn it even
|
|
@@ -106,8 +110,10 @@ def _wire_code_via_cli(home: Path, wrapper: Path, dry_run: bool) -> bool:
|
|
|
106
110
|
if dry_run:
|
|
107
111
|
print(f" would run: {' '.join(add_cmd)}")
|
|
108
112
|
return True
|
|
109
|
-
# idempotent: drop any existing entry
|
|
110
|
-
|
|
113
|
+
# idempotent + migrate: drop any existing entry — current id AND the legacy
|
|
114
|
+
# pre-0.1.8 ids — before re-adding, so an upgrade leaves no orphan.
|
|
115
|
+
for key in (SERVER_KEY, *LEGACY_SERVER_KEYS):
|
|
116
|
+
subprocess.run([claude, "mcp", "remove", key], capture_output=True, text=True)
|
|
111
117
|
r = subprocess.run(add_cmd, capture_output=True, text=True)
|
|
112
118
|
if r.returncode != 0:
|
|
113
119
|
print(f" ! claude mcp add failed ({r.stderr.strip()[:160]}); falling back to file")
|
|
@@ -188,7 +194,7 @@ def do_wire(home: Path, surfaces: list[str], dry_run: bool) -> None:
|
|
|
188
194
|
bin_path = _mi_mcp_bin()
|
|
189
195
|
entry = {"command": str(wrapper), "args": [], "env": {}}
|
|
190
196
|
|
|
191
|
-
print(f"{'DRY-RUN: ' if dry_run else ''}wiring
|
|
197
|
+
print(f"{'DRY-RUN: ' if dry_run else ''}wiring {SERVER_KEY} MCP server")
|
|
192
198
|
print(f" wrapper → {wrapper}")
|
|
193
199
|
print(f" execs {bin_path}; resolves MI_API_KEY at launch (no key in configs)")
|
|
194
200
|
if not dry_run:
|
|
@@ -207,6 +213,11 @@ def do_wire(home: Path, surfaces: list[str], dry_run: bool) -> None:
|
|
|
207
213
|
cfg_path = cfg_paths[s]
|
|
208
214
|
cfg = _load_json(cfg_path)
|
|
209
215
|
servers = cfg.setdefault("mcpServers", {})
|
|
216
|
+
# Migrate: drop any pre-0.1.8 id (e.g. "memory-intelligence") so the
|
|
217
|
+
# rename to "memoryintelligence" doesn't leave a duplicate/orphan entry.
|
|
218
|
+
migrated = [k for k in LEGACY_SERVER_KEYS if servers.pop(k, None) is not None]
|
|
219
|
+
if migrated:
|
|
220
|
+
print(f" {s:8} migrated id {', '.join(migrated)} → {SERVER_KEY}")
|
|
210
221
|
action = "update" if SERVER_KEY in servers else "add"
|
|
211
222
|
nochange = servers.get(SERVER_KEY) == entry
|
|
212
223
|
servers[SERVER_KEY] = entry
|
|
@@ -270,8 +281,13 @@ def cmd_doctor(argv: list[str]) -> int:
|
|
|
270
281
|
critical=False)
|
|
271
282
|
|
|
272
283
|
for s, p in _surface_paths(home).items():
|
|
273
|
-
|
|
274
|
-
|
|
284
|
+
servers = _load_json(p).get("mcpServers", {})
|
|
285
|
+
wired = SERVER_KEY in servers
|
|
286
|
+
legacy = [k for k in LEGACY_SERVER_KEYS if k in servers]
|
|
287
|
+
detail = str(p) if wired else "(not wired)"
|
|
288
|
+
if legacy and not wired:
|
|
289
|
+
detail = f"legacy id {', '.join(legacy)} present — run `mi-mcp wire` to migrate"
|
|
290
|
+
check(f"{s} wired", wired, detail, critical=False)
|
|
275
291
|
|
|
276
292
|
print(f"\n {'healthy ✓' if ok else 'issues found ✗'}")
|
|
277
293
|
return 0 if ok else 1
|
|
@@ -139,7 +139,7 @@ def create_server(config: MIConfig | None = None) -> Server:
|
|
|
139
139
|
config = MIConfig.from_env()
|
|
140
140
|
|
|
141
141
|
client = MIClient(config)
|
|
142
|
-
server = Server("
|
|
142
|
+
server = Server("memoryintelligence", instructions=SERVER_INSTRUCTIONS)
|
|
143
143
|
|
|
144
144
|
if os.environ.get("MI_MCP_OPT_IN_ALL") == "1":
|
|
145
145
|
logger.warning(
|
|
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
|