prism-mcp-server 2.3.0 → 2.3.1

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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/prism-mcp-server?color=cb0000&label=npm)](https://www.npmjs.com/package/prism-mcp-server)
4
4
  [![MCP Registry](https://img.shields.io/badge/MCP_Registry-listed-00ADD8?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMiAyTDIgN2wxMCA1IDEwLTUtMTAtNXpNMiAxN2wxMCA1IDEwLTV2LTJMMTI0djJMMiA5djh6Ii8+PC9zdmc+)](https://registry.modelcontextprotocol.io)
5
- [![Glama](https://img.shields.io/badge/Glama-listed-FF5601)](https://glama.ai/mcp/servers/@dcostenco/prism-mcp)
5
+ [![Glama](https://img.shields.io/badge/Glama-listed-FF5601)](https://glama.ai/mcp/servers/dcostenco/BCBA)
6
6
  [![Smithery](https://img.shields.io/badge/Smithery-listed-6B4FBB)](https://smithery.ai/server/prism-mcp-server)
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
8
8
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
@@ -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: "1.5.0",
25
+ version: "2.3.1",
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("Error: BRAVE_API_KEY environment variable is required");
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Mind Palace Dashboard — UI Renderer (v2.2.0)
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.2.0</span>
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
@@ -527,11 +527,65 @@ export function createServer() {
527
527
  });
528
528
  return server;
529
529
  }
530
- // ─── Smithery Sandbox Export ─────────────────────────────────────
531
- // Smithery uses this to scan capabilities (tools, prompts, resources)
532
- // without requiring real credentials or starting a transport.
530
+ // ─── Smithery/Glama Sandbox Export ───────────────────────────────
531
+ // Scanners (Smithery, Glama) use this to enumerate capabilities
532
+ // (tools, prompts, resources) without requiring real credentials.
533
+ // Unlike createServer(), this always exposes ALL capabilities
534
+ // regardless of whether SESSION_MEMORY_ENABLED is true.
533
535
  export function createSandboxServer() {
534
- return createServer();
536
+ const server = new Server({
537
+ name: SERVER_CONFIG.name,
538
+ version: SERVER_CONFIG.version,
539
+ }, {
540
+ capabilities: {
541
+ tools: {
542
+ tools: [...BASE_TOOLS, ...SESSION_MEMORY_TOOLS],
543
+ },
544
+ prompts: {},
545
+ resources: { subscribe: true },
546
+ },
547
+ });
548
+ // Register all tool listings unconditionally
549
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
550
+ tools: [...BASE_TOOLS, ...SESSION_MEMORY_TOOLS],
551
+ }));
552
+ // Register prompts listing so scanners see resume_session
553
+ server.setRequestHandler(ListPromptsRequestSchema, async () => ({
554
+ prompts: [{
555
+ name: "resume_session",
556
+ description: "Load previous session context for a project. " +
557
+ "Automatically fetches handoff state and injects it before " +
558
+ "the LLM starts thinking — no tool call needed. " +
559
+ "Includes version tracking for concurrency control.",
560
+ arguments: [
561
+ {
562
+ name: "project",
563
+ description: "Project identifier to resume (e.g., 'prism-mcp')",
564
+ required: true,
565
+ },
566
+ {
567
+ name: "level",
568
+ description: "Context depth: 'quick' (~50 tokens), " +
569
+ "'standard' (~200 tokens, recommended), " +
570
+ "'deep' (full history, ~1000+ tokens)",
571
+ required: false,
572
+ },
573
+ ],
574
+ }],
575
+ }));
576
+ // Register resource templates so scanners see memory://{project}/handoff
577
+ server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => ({
578
+ resourceTemplates: [{
579
+ uriTemplate: "memory://{project}/handoff",
580
+ name: "Session Handoff State",
581
+ description: "Current handoff state for a project — includes " +
582
+ "last summary, pending TODOs, active decisions, keywords, " +
583
+ "and version number for concurrency control. " +
584
+ "Attach this to inject session context without a tool call.",
585
+ mimeType: "application/json",
586
+ }],
587
+ }));
588
+ return server;
535
589
  }
536
590
  // ─── Server Startup ─────────────────────────────────────────────
537
591
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prism-mcp-server",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
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",