prism-mcp-server 2.3.0 → 2.3.2
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.
- package/README.md +27 -21
- package/dist/config.js +2 -3
- package/dist/dashboard/ui.js +2 -2
- package/dist/server.js +62 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/prism-mcp-server)
|
|
4
4
|
[](https://registry.modelcontextprotocol.io)
|
|
5
|
-
[](https://glama.ai/mcp/servers
|
|
5
|
+
[](https://glama.ai/mcp/servers/dcostenco/BCBA)
|
|
6
6
|
[](https://smithery.ai/server/prism-mcp-server)
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
[](https://www.typescriptlang.org/)
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
## What's New in v2.3.
|
|
17
|
+
## What's New in v2.3.1 — AI Reasoning Engine 🧠
|
|
18
18
|
|
|
19
19
|
| Feature | Description |
|
|
20
20
|
|---|---|
|
|
@@ -50,6 +50,31 @@
|
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
+
## How Prism Compares
|
|
54
|
+
|
|
55
|
+
| Feature | **Prism MCP** | [MCP Memory](https://github.com/modelcontextprotocol/servers/tree/main/src/memory) | [Mem0](https://github.com/mem0ai/mem0) | [Mnemory](https://github.com/fpytloun/mnemory) | [Basic Memory](https://github.com/basicmachines-co/basic-memory) |
|
|
56
|
+
|---|---|---|---|---|---|
|
|
57
|
+
| **Storage** | SQLite (local) + Supabase (cloud) | JSON file | Postgres + Qdrant (hosted or self-hosted) | Qdrant + S3/MinIO | Markdown files |
|
|
58
|
+
| **Zero Config** | ✅ `npx -y prism-mcp-server` | ✅ | ❌ Requires Qdrant/Postgres | ✅ `uvx mnemory` | ✅ `pip install basic-memory` |
|
|
59
|
+
| **Semantic Search** | ✅ F32_BLOB vectors + FTS5 | ❌ | ✅ pgvector | ✅ Qdrant vectors | ❌ Text search only |
|
|
60
|
+
| **Knowledge Graph** | ✅ Neural Graph (Vis.js dashboard) | ✅ Entity/Relation model | ❌ | ✅ Relationship graph | ✅ Markdown links |
|
|
61
|
+
| **Time Travel** | ✅ `memory_history` / `memory_checkout` | ❌ | ❌ | ❌ | ❌ |
|
|
62
|
+
| **Fact Merging** | ✅ Async Gemini (fire-and-forget) | ❌ | ✅ Built-in | ✅ Contradiction resolution | ❌ |
|
|
63
|
+
| **Security Scan** | ✅ Prompt injection detection | ❌ | ❌ | ✅ Anti-injection in fsck | ❌ |
|
|
64
|
+
| **Health Check** | ✅ `session_health_check` (fsck) | ❌ | ❌ | ✅ 3-phase fsck | ❌ |
|
|
65
|
+
| **Visual Dashboard** | ✅ Mind Palace (localhost:3000) | ❌ | ✅ Cloud dashboard | ✅ Management UI | ❌ |
|
|
66
|
+
| **Multi-Agent Sync** | ✅ Real-time cross-client | ❌ | ❌ | ❌ Per-user isolation | ❌ |
|
|
67
|
+
| **Visual Memory** | ✅ Screenshot vault + auto-capture | ❌ | ❌ | ✅ Artifact store | ❌ |
|
|
68
|
+
| **Auto-Compaction** | ✅ Gemini rollups | ❌ | ❌ | ❌ | ❌ |
|
|
69
|
+
| **Morning Briefing** | ✅ Gemini synthesis | ❌ | ❌ | ❌ | ❌ |
|
|
70
|
+
| **OCC (Concurrency)** | ✅ Version-based | ❌ | ❌ | ❌ | ❌ |
|
|
71
|
+
| **MCP Native** | ✅ stdio (Claude Desktop, Cursor) | ✅ stdio | ❌ Python SDK / REST | ✅ HTTP + MCP | ✅ stdio |
|
|
72
|
+
| **Language** | TypeScript | TypeScript | Python | Python | Python |
|
|
73
|
+
|
|
74
|
+
> **When to choose Prism MCP:** You want MCP-native memory with zero infrastructure overhead, progressive context loading, and enterprise features (OCC, compaction, time travel, security scanning) that work directly in Claude Desktop — without running Qdrant, Postgres, or cloud services.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
53
78
|
## Quick Start (Zero Config — Local Mode)
|
|
54
79
|
|
|
55
80
|
Get the MCP server running with Claude Desktop or Cursor in **under 60 seconds**. No API keys required for basic local memory!
|
|
@@ -140,25 +165,6 @@ The dashboard auto-discovers all your projects and updates in real time.
|
|
|
140
165
|
|
|
141
166
|
---
|
|
142
167
|
|
|
143
|
-
## How Prism MCP Compares
|
|
144
|
-
|
|
145
|
-
| Capability | **Prism MCP** | **Mem0** | **Zep** | **Basic Memory** |
|
|
146
|
-
|---|---|---|---|---|
|
|
147
|
-
| **Architecture** | MCP-native (single npm package) | Standalone service + MCP adapter | Standalone service + API | MCP-native (local files) |
|
|
148
|
-
| **Storage** | SQLite (local) or Supabase (cloud) | Hybrid (vector + graph DBs) | PostgreSQL + Neo4j | Local markdown files |
|
|
149
|
-
| **Local-First** | ✅ Full SQLite mode, zero cloud | ❌ Requires cloud/Docker | ❌ Requires PostgreSQL | ✅ Local files |
|
|
150
|
-
| **Visual Dashboard** | ✅ Mind Palace UI at localhost:3000 | ❌ No UI | ❌ No UI | ❌ No UI |
|
|
151
|
-
| **Time Travel** | ✅ Version history + checkout | ❌ No versioning | ❌ No versioning | ❌ No versioning |
|
|
152
|
-
| **Multi-Agent Sync** | ✅ Telepathy (realtime IPC/CDC) | ❌ Siloed | ❌ Siloed | ❌ Single user |
|
|
153
|
-
| **Auto-Capture** | ✅ HTML snapshots of dev server | ❌ Text only | ❌ Text only | ❌ Text only |
|
|
154
|
-
| **Cold Start Fix** | ✅ MCP Prompts + Resources | ❌ Requires tool call | ❌ Requires tool call | ❌ Requires tool call |
|
|
155
|
-
| **Progressive Loading** | ✅ quick / standard / deep | ❌ All-or-nothing | ❌ Fixed window | ❌ All-or-nothing |
|
|
156
|
-
| **Semantic Search** | ✅ F32_BLOB vectors (local) or pgvector (cloud) | ✅ Qdrant/Chroma | ✅ Built-in | ❌ None |
|
|
157
|
-
| **Concurrency Control** | ✅ OCC with version tracking | ❌ Last write wins | ❌ Last write wins | ❌ Single user |
|
|
158
|
-
| **Setup Complexity** | Zero config (local mode) | Docker + API keys + vector DB | Docker + PostgreSQL + Neo4j | No setup needed |
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
168
|
## Integration Examples
|
|
163
169
|
|
|
164
170
|
Copy-paste configs for popular MCP clients. All configs use the `npx` method.
|
package/dist/config.js
CHANGED
|
@@ -22,13 +22,12 @@
|
|
|
22
22
|
// multi-tenant Row Level Security (RLS) for production hosting.
|
|
23
23
|
export const SERVER_CONFIG = {
|
|
24
24
|
name: "prism-mcp",
|
|
25
|
-
version: "
|
|
25
|
+
version: "2.3.2",
|
|
26
26
|
};
|
|
27
27
|
// ─── Required: Brave Search API Key ───────────────────────────
|
|
28
28
|
export const BRAVE_API_KEY = process.env.BRAVE_API_KEY;
|
|
29
29
|
if (!BRAVE_API_KEY) {
|
|
30
|
-
console.error("
|
|
31
|
-
process.exit(1);
|
|
30
|
+
console.error("Warning: BRAVE_API_KEY environment variable is missing. Search tools will return errors when called.");
|
|
32
31
|
}
|
|
33
32
|
// ─── Optional: Google Gemini API Key ──────────────────────────
|
|
34
33
|
// Used by the gemini_research_paper_analysis tool.
|
package/dist/dashboard/ui.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Mind Palace Dashboard — UI Renderer (v2.
|
|
2
|
+
* Mind Palace Dashboard — UI Renderer (v2.3.1)
|
|
3
3
|
*
|
|
4
4
|
* Pure CSS + Vanilla JS single-page dashboard.
|
|
5
5
|
* No build step, no Tailwind, no framework — served as a template literal.
|
|
@@ -279,7 +279,7 @@ export function renderDashboardHTML() {
|
|
|
279
279
|
<div class="logo">
|
|
280
280
|
<span class="logo-icon">🧠</span>
|
|
281
281
|
Prism Mind Palace
|
|
282
|
-
<span class="version-badge">v2.
|
|
282
|
+
<span class="version-badge">v2.3.1</span>
|
|
283
283
|
</div>
|
|
284
284
|
<div class="selector">
|
|
285
285
|
<select id="projectSelect">
|
package/dist/server.js
CHANGED
|
@@ -118,10 +118,12 @@ const SESSION_MEMORY_TOOLS = [
|
|
|
118
118
|
// ─── v2.2.0: Health Check tool ───
|
|
119
119
|
SESSION_HEALTH_CHECK_TOOL, // session_health_check — brain integrity checker (v2.2.0)
|
|
120
120
|
];
|
|
121
|
-
// Combine:
|
|
121
|
+
// Combine: always list ALL tools so scanners (Glama, Smithery, MCP Registry)
|
|
122
|
+
// can enumerate the full capability set. Runtime guards in the CallTool handler
|
|
123
|
+
// still prevent execution without valid Supabase credentials.
|
|
122
124
|
const ALL_TOOLS = [
|
|
123
125
|
...BASE_TOOLS,
|
|
124
|
-
...
|
|
126
|
+
...SESSION_MEMORY_TOOLS,
|
|
125
127
|
];
|
|
126
128
|
// ─── v0.4.0: Resource Subscription Tracking ──────────────────────
|
|
127
129
|
// REVIEWER NOTE: We track which project URIs clients have subscribed
|
|
@@ -527,11 +529,65 @@ export function createServer() {
|
|
|
527
529
|
});
|
|
528
530
|
return server;
|
|
529
531
|
}
|
|
530
|
-
// ─── Smithery Sandbox Export
|
|
531
|
-
// Smithery
|
|
532
|
-
// without requiring real credentials
|
|
532
|
+
// ─── Smithery/Glama Sandbox Export ───────────────────────────────
|
|
533
|
+
// Scanners (Smithery, Glama) use this to enumerate capabilities
|
|
534
|
+
// (tools, prompts, resources) without requiring real credentials.
|
|
535
|
+
// Unlike createServer(), this always exposes ALL capabilities
|
|
536
|
+
// regardless of whether SESSION_MEMORY_ENABLED is true.
|
|
533
537
|
export function createSandboxServer() {
|
|
534
|
-
|
|
538
|
+
const server = new Server({
|
|
539
|
+
name: SERVER_CONFIG.name,
|
|
540
|
+
version: SERVER_CONFIG.version,
|
|
541
|
+
}, {
|
|
542
|
+
capabilities: {
|
|
543
|
+
tools: {
|
|
544
|
+
tools: [...BASE_TOOLS, ...SESSION_MEMORY_TOOLS],
|
|
545
|
+
},
|
|
546
|
+
prompts: {},
|
|
547
|
+
resources: { subscribe: true },
|
|
548
|
+
},
|
|
549
|
+
});
|
|
550
|
+
// Register all tool listings unconditionally
|
|
551
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
552
|
+
tools: [...BASE_TOOLS, ...SESSION_MEMORY_TOOLS],
|
|
553
|
+
}));
|
|
554
|
+
// Register prompts listing so scanners see resume_session
|
|
555
|
+
server.setRequestHandler(ListPromptsRequestSchema, async () => ({
|
|
556
|
+
prompts: [{
|
|
557
|
+
name: "resume_session",
|
|
558
|
+
description: "Load previous session context for a project. " +
|
|
559
|
+
"Automatically fetches handoff state and injects it before " +
|
|
560
|
+
"the LLM starts thinking — no tool call needed. " +
|
|
561
|
+
"Includes version tracking for concurrency control.",
|
|
562
|
+
arguments: [
|
|
563
|
+
{
|
|
564
|
+
name: "project",
|
|
565
|
+
description: "Project identifier to resume (e.g., 'prism-mcp')",
|
|
566
|
+
required: true,
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
name: "level",
|
|
570
|
+
description: "Context depth: 'quick' (~50 tokens), " +
|
|
571
|
+
"'standard' (~200 tokens, recommended), " +
|
|
572
|
+
"'deep' (full history, ~1000+ tokens)",
|
|
573
|
+
required: false,
|
|
574
|
+
},
|
|
575
|
+
],
|
|
576
|
+
}],
|
|
577
|
+
}));
|
|
578
|
+
// Register resource templates so scanners see memory://{project}/handoff
|
|
579
|
+
server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => ({
|
|
580
|
+
resourceTemplates: [{
|
|
581
|
+
uriTemplate: "memory://{project}/handoff",
|
|
582
|
+
name: "Session Handoff State",
|
|
583
|
+
description: "Current handoff state for a project — includes " +
|
|
584
|
+
"last summary, pending TODOs, active decisions, keywords, " +
|
|
585
|
+
"and version number for concurrency control. " +
|
|
586
|
+
"Attach this to inject session context without a tool call.",
|
|
587
|
+
mimeType: "application/json",
|
|
588
|
+
}],
|
|
589
|
+
}));
|
|
590
|
+
return server;
|
|
535
591
|
}
|
|
536
592
|
// ─── Server Startup ─────────────────────────────────────────────
|
|
537
593
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prism-mcp-server",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.2",
|
|
4
4
|
"mcpName": "io.github.dcostenco/prism-mcp",
|
|
5
5
|
"description": "The Mind Palace for AI Agents — local-first MCP server with persistent memory (SQLite/Supabase), visual dashboard, time travel, multi-agent sync, Morning Briefings, reality drift detection, code mode templates, semantic vector search, and Brave Search + Gemini analysis. Zero-config local mode.",
|
|
6
6
|
"module": "index.ts",
|