Memory Journal Mcp

io.github.neverinfamous由 GitHub 帳號 neverinfamous 發布v1.1.3更新於 Oct 24, 2026

Developer journal with knowledge graphs, relationships, Git context, and semantic search

發布方自己的服務:Memory.fit

概覽

AI 產生的概覽

一個本機開發者日誌伺服器,讓助理記錄條目、建立知識圖譜關聯,並結合 Git 與 GitHub 情境進行語意檢索。

可以做什麼
提供以 SQLite 為基礎的日誌,包含條目建立、更新、刪除與標籤工具,文字與日期範圍搜尋、語意/向量搜尋、統計與跨專案洞察,以及關聯連結與圖形視覺化。也提供 GitHub 工具,用於議題、拉取請求、里程碑、看板與 CI 工作流程情境,並支援 JSON 與 Markdown 匯入匯出、備份還原和團隊資料庫模式。沙箱化的 Code Mode 工具可執行 JavaScript 呼叫 mj.* API,在一次呼叫中組合多項操作。
適用情境
適合希望助理跨工作階段保存長期工作紀錄、回想過去決策與里程碑,並把 Git 或 GitHub 議題與拉取請求情境帶入摘要、站立會議、回顧與程式碼審查準備的開發者。
執行需求
以本機程序方式透過 stdio 執行(npm 套件、原始碼建置或 Docker 映像),也可選用 HTTP/SSE。npm 與原始碼方式需要 Node.js。選用環境變數包括 DB_PATH、TEAM_DB_PATH、TEAM_AUTHOR、GITHUB_TOKEN、PROJECT_REGISTRY、ALLOWED_IO_ROOTS、AUDIT_LOG_PATH、RULES_FILE_PATH、SKILLS_DIR_PATH、MCP_AUTH_TOKEN 及 OAuth 相關設定;GitHub 功能需要權杖與網路存取。
安裝前請注意
日誌會寫入本機 SQLite 資料庫,管理工具可更新、刪除、合併與重建資料,因此備份很重要。GITHUB_TOKEN 會授予儲存庫存取權限,應盡量縮小範圍。ALLOWED_IO_ROOTS 會向 Code Mode 與匯出工具授予檔案系統存取權限,預設為關閉。Code Mode 在沙箱中執行產生的 JavaScript,CODEMODE_INTERNAL_FULL_ACCESS 會繞過工具篩選。將 HTTP 暴露到 localhost 之外需要 MCP_AUTH_TOKEN 或 OAuth。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Memory Journal Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Memory Journal MCP Server

[GitHub] [npm] [Docker Pulls] [License: MIT] [Status] [MCP Registry] [Security] [GitHub Stars] [TypeScript] [Coverage] [E2E] [Tests] [Benchmarks] [CI]

📚 Full Documentation (Wiki) • Changelog • Security • Release Article

[!TIP] Value Proposition Bridge disconnected AI sessions seamlessly. Enable persistent project memory instantly. Automate handoffs with robust GitHub integration. Eliminate AI amnesia today.

🚀 Quick Deploy:

  • npm Package - npm install -g memory-journal-mcp (or pnpm add -g memory-journal-mcp)
  • Docker Hub - Alpine-based with full semantic search

🧠 Eliminate AI Amnesia

Large projects face a critical challenge. You lose context between sessions.

  • Stop Thread Amnesia - AI conversations start fresh. They ignore previous work.
  • Retain Deep Context - Decisions and code scatter across threads; Memory Journal preserves them automatically.
  • End Repeated Work - AI repeats failed solutions; persistent history tracks every prior attempt.
  • Prevent Context Overload - Manual history copying wastes tokens; dynamic briefings deliver targeted context automatically.

Memory Journal builds your project's long-term memory. It acts as a Project Context Graph for AI-assisted engineering. It bridges human workflows (Issues, PRs, Kanban, Milestones) with agent execution (Git, tests, decisions).


Experience true context-aware development:

  • "Why did we choose SQLite over Postgres for this service last month?" (Semantic search)
  • "Run the /issue-commander (triage workflow) on the top priority ticket in the Kanban board." (GitHub operations)
  • "Who has been touching the auth module recently, and what's our team collaboration density?" (Team analytics)
  • "Commit the changes and automatically generate a structured journal entry using the `--journal` wrapper flag." (Automated lifecycles)
  • "Draw a visual graph showing how my last 10 architectural decisions relate to each other." (Knowledge graph)

Comprehensive access to internal state via resources (memory://briefing, memory://workflows, memory://rules, memory://health, memory://help, memory://staleness, GitHub status/milestones, team stats, and metrics/latency). Dynamic repo variants also support cross-repo targeting (like memory://briefing/{+repo} or memory://kanban/{+repo}/{project_number}). Resources documentation →


🎯 What Sets Us Apart

MCP Tools · Workflow Prompts · Resources · Tool Groups · Code Mode · GitHub Commander (Issue Triage, PR Review, Milestone Sprints, Security/Quality/Perf Audits) · GitHub Integration (Issues, PRs, Actions, Kanban, Milestones, Insights) · Team Collaboration (Shared DB, Vector Search, Cross-Project Insights)

FeatureDescription
Session IntelligenceAuto-query project history, create checkpoints, and hand off context between sessions automatically.
GitHub IntegrationManage Issues, PRs, Actions, Kanban boards, and milestones. Access Copilot reviews and repository insights.
Dynamic Project RoutingSwitch contexts seamlessly and access CI/Issue tracking across multiple repositories from a single server instance.
Knowledge GraphsLink specifications, implementations, tests, and PRs visually using Mermaid diagrams.
Hybrid SearchFind entries instantly using a blend of keyword, semantic, and date-range searches.
Code ModeExecute multi-step operations efficiently in a sandboxed environment to reduce token usage.
Adaptive Session BriefingDeliver real-time workspace context dynamically, including live CI health, local Git status, and unreleased changes.
Reports & AnalyticsGenerate standups, retrospectives, PR summaries, digests, and period analyses.
Heuristic ScoringOptimize context delivery by scoring entries based on veracity and impact.
Team CollaborationShare databases across teams with cross-project insights, author attribution, and role-based access control.
Data InteroperabilityExport schemas safely, sync Markdown directories, and maintain a unified IO namespace.
Backup & RestoreSecure data with automated scheduling, retention policies, and one-command restores.
Auto-PruningSoft-delete low-value entries automatically to maintain search relevance over long-running projects.
Security & TransportEnsure secure connections with OAuth 2.1, Streamable HTTP, rate limiting, and SQL injection prevention.
Structured Error HandlingProvide agents with classification, remediation hints, and recoverability signals on every tool call.
Agent CollaborationShare context between IDE agents and Copilot. Search review findings and let agents suggest reusable rules.
Native Agent SkillsEstablish permanent AI behavior and architecture rules using bundled foundational coding paradigms.
GitHub CommanderAudit code, triage issues, review PRs, and run sprint milestones via automated pipeline skills.

Isolate Environments with Multi-Tenancy

Memory Journal supports multi-tenancy out of the box via the workspace_id construct, acting as a strict isolation barrier for multiple journals sharing the same SQLite database file.

  • Auto-Resolution: When workspace_id is omitted, the server automatically resolves the target workspace. It matches project_number against PROJECT_REGISTRY, checks content/tag keyword aliases, or inspects process.cwd() before falling back to DEFAULT_WORKSPACE_ID (default: default).
  • Data Partitioning & Cross-Workspace Queries: Core CRUD, Soft-Delete/Restore, FTS5 Search, Vector Semantic Search (semantic_search), and Analytics tools enforce workspace_id isolation end-to-end. Read and search tools accept workspace_id: "*" to query across all workspaces. External write and mutation paths reject wildcard overrides.
  • Immutability & Controlled Migration: Entries receive a workspace_id upon creation that standard updates cannot overwrite directly. To migrate an entry across workspaces, call update_entry with workspace_id: "*" and target_workspace_id.
  • Server Config: Set --default-workspace-id (or the DEFAULT_WORKSPACE_ID environment variable) to configure the default fallback workspace for the server instance. This lets you run multiple isolated journal interfaces on a single physical database.

mermaid
flowchart TB    subgraph Session["🤖 AI Session Start"]        Briefing["📋 Read Briefing<br/>(memory://briefing)"]    end
    subgraph Core["📝 Journal Operations"]        Create["Create Entry"]        Retrieve["Retrieve & Search"]        Link["Link Entries"]    end
    subgraph Search["🔍 Hybrid Search"]        FTS["Keyword (FTS5)"]        Semantic["Semantic (Vector)"]        DateRange["Date Range"]        RRF["Reciprocal Rank Fusion"]    end
    subgraph GitHub["🐙 GitHub Integration"]        Issues["Issues & Milestones"]        PRs["Pull Requests"]        Actions["GitHub Actions"]        Kanban["Kanban Boards"]        Insights["Repository Insights"]    end
    subgraph Outputs["📊 Outputs"]        Reports["Standups & Retrospectives"]        Graphs["Knowledge Graphs"]        Timeline["Project Timelines"]    end
    Session --> Core    Core --> Search    Core <--> GitHub    Search --> Outputs    GitHub --> Outputs

Suggested Rule (Add to AGENTS.md, GEMINI.md, system prompts, etc.)

View Session Initialization Routine

🛑 Session Initialization Routine

When the user initializes the session context by executing the load-briefing prompt:

  1. You will receive the output of the memory://briefing/{repo_name} resource.
  2. Prepend your response EXACTLY as:

    📋 Briefing loaded — {repo_name} {paste ENTIRE briefing here}

  3. Address the user's request below the briefing.
  4. NEVER autonomously execute tasks listed in the briefing.
  5. Do NOT proactively ask the user to load the briefing. Wait for them to use the prompt.

Control Access with Tool Filtering

[!IMPORTANT] All shortcuts and tool groups always include Code Mode (mj_execute_code) and Runtime Configuration (update_configuration) as escape-hatch tools so agents can never lock themselves out of the configuration system or Code Mode.

Control which tools are exposed using any of the 3 configuration sources (precedence: CLI flag > environment variable > config file):

  • CLI flag: --tool-filter <filter>
  • Environment variable: MEMORY_JOURNAL_MCP_TOOL_FILTER (Note: TOOL_FILTER is only a fallback display variable in the session briefing and does not activate tool filtering on its own)
  • memory-journal.config.{yaml,yml,json} key: "toolFilter"
FilterUse Case
fullAll tools (default)
starterCore + search + codemode
essentialMinimal footprint
readonlyDisable all mutations
codemodemj_execute_code + runtime config
-githubExclude a group
-github,-analyticsExclude multiple groups

Filter Syntax: shortcut or group or tool_name (whitelist mode) · -group (disable group) · -tool (disable tool) · +tool (re-enable after group disable)

Custom Selection: List individual tool names to create your own whitelist: --tool-filter "create_entry,search_entries,semantic_search"

Groups: core, search, analytics, relationships, io, admin, github, git, backup, team, codemode

Complete tool filtering guide →


📋 Unlock Core Capabilities

🛠️ MCP Tools

GroupDescription
codemodeCode Mode (sandboxed code execution) 🌟 Recommended
coreEntry creation/read/history, tags, resource & briefing helpers, anchor staleness, test
searchText search, date range, semantic, vector stats, deleted entries, cross-team
analyticsStatistics, cross-project insights
relationshipsLink entries, visualize graphs
ioJSON/Markdown export, Markdown directory import/export, and external knowledge base import (Notion, Obsidian, Logseq)
adminUpdate configuration, project registry management, entry update/delete/restore, rebuild/add to vector index, merge tags, search audit log, auto-prune, bulk operations (batch create/update/delete)
githubIssues, PRs, context, Kanban, Milestones, Insights, issue lifecycle, Copilot Reviews
gitCommit history, search, release info, patterns, staleness checks
backupBackup, list, restore, cleanup
teamCRUD, search, stats, relationships, IO (Markdown & external import/export), backup, vector search, cross-project insights, matrix, RBAC member management, author aliases (requires TEAM_DB_PATH)

Complete tools reference →

🎯 Workflow Prompts

Specialized workflow prompts cover session briefing, standup & retro prep, goal tracking, PR & issue command, session summaries, and journal optimization. Additional prompts support CMS REM supervision, adversarial plan reviews, code & security audits, secure commit workflows, and anti-hallucination healing. Complete prompts guide →

📡 Resources

See the Complete resources guide → for the full list of dynamic context resources, including memory://briefing, memory://instructions, GitHub integration endpoints, telemetry metrics, and templated views.

  • Dynamic Resource Templates: Resources memory://briefing/{+repo}, memory://agent-context/{+repo}, memory://agent-id/{+repo}, memory://actions/recent/{+repo}, memory://github/status/{+repo}, memory://github/milestones/{+repo}, memory://milestones/{+repo}/{number}, and memory://kanban/{+repo}/{project_number} accept an RFC 6570 {+repo} path parameter for targeted project context.

⚡ Code Mode: Maximum Efficiency (90% Token Savings)

Code Mode (mj_execute_code) reduces token usage by up to 90% and is included by default in all presets. Instead of spending thousands of tokens on sequential tool calls, AI agents use a single sandboxed execution to reason faster.

Code executes in a pre-warmed worker_threads V8 isolate pool + secondary vm.createContext boundary designed as a secure multi-tenant process isolation environment. All mj.* API calls execute against the journal within the sandbox, providing:

  • V8 code generation restrictions — eval() and Function() construction from strings disabled at the V8 engine level via codeGeneration: { strings: false, wasm: false }
  • Frozen prototypes & cross-realm constructor lockdown — all built-in prototypes (Object, Function, Array, Error, etc.) and mj.* API bindings are frozen, and .constructor is neutered across Object, Function, AsyncFunction, GeneratorFunction, and AsyncGeneratorFunction prototypes in both the inner vm realm and outer worker realm to prevent dynamic constructor chain escapes
  • Single-pass lexical validation — pre-validation rate-limiting and 50KB byte caps run before any code normalization, followed by a single-pass lexical comment/string scanner (preserving ${...} template expressions) and static rules blocking require(), import(), process, eval(), Reflect.*, Symbol.*, Object.getPrototypeOf/setPrototypeOf/defineProperty, new Proxy(), and filesystem/network access
  • Proxy constructor nullified — Proxy: undefined in the sandbox prevents meta-object protocol abuse
  • Prototype-safe RPC allowlist — host-side Object.hasOwn() validation, recursion-bounded argument normalization, and --tool-filter enforcement prevent workers from invoking unauthorized or filtered API methods
  • Rate limiting — 60 executions per minute per client
  • Hard timeouts — configurable execution limit (default 30s) with bounded async timer tracking (setTimeout/sleep capped and cleared on completion)
  • Egress boundary enforcement — result serialization capped (default 100KB via CODE_MODE_MAX_RESULT_SIZE) with automatic payload compaction to prevent OOM via oversized payloads
  • Full API access — all tool groups are available via mj.* (e.g., mj.core.createEntry(), mj.search.searchEntries(), mj.github.getGithubIssues())
  • Strict Readonly Contract — Calling any mutation method under --tool-filter readonly safely halts the sandbox to prevent execution, returning a structured { success: false, error: "..." } response to the agent instead of a raw MCP protocol exception.

⚡ Code Mode Minimal Surface (Maximum Token Savings)

Run with the codemode filter and --codemode-internal-full-access to expose only the escape-hatch tools (mj_execute_code and update_configuration) on the MCP tool list while retaining full internal access to the mj.* API inside the sandbox:

json
{  "mcpServers": {    "memory-journal-mcp": {      "command": "memory-journal-mcp",      "args": ["--tool-filter", "codemode", "--codemode-internal-full-access"]    }  }}

This exposes only mj_execute_code and update_configuration to the client's tools/list, reducing tool schema overhead to the minimum while preserving full programmatic capability via mj.*. The agent writes JavaScript against the typed mj.* SDK — composing operations across all tool groups and returning exactly the data it needs — in one execution. This mirrors the Code Mode pattern pioneered by Cloudflare for their entire API: fixed token cost regardless of how many capabilities exist. Without --codemode-internal-full-access (or CODEMODE_INTERNAL_FULL_ACCESS=true), internal mj.* methods are scoped to the active --tool-filter.


🚀 Quick Start & Deployment

Note: Configuration is resolved using strict precedence: CLI flags > Environment Variables > Config File > Defaults.

🛠️ Debugging Configuration: Run memory-journal-mcp --dump-config (or pass --dump-config as an arg) to print the fully resolved configuration payload with automatically redacted secrets. This is the primary method for diagnosing overriding issues.

Configure Basics Quickly

💡 Tip: Don't want to manually escape JSON strings for PROJECT_REGISTRY? Run npx memory-journal-mcp project create <name> --path <repo-path> [--number <project-number>] in your terminal to automatically bootstrap and update your MCP configuration!

json
{  "mcpServers": {    "memory-journal-mcp": {      "command": "memory-journal-mcp",      "env": {        "GITHUB_TOKEN": "ghp_your_token_here",        "PROJECT_REGISTRY": "{\"my-repo\":{\"path\":\"/path/to/your/git/repo\",\"project_number\":1}}",        "ALLOWED_IO_ROOTS": "/path/to/your/git/repo"      }    }  }}

Power Up with Advanced Configuration

Showcasing the full power of the server, including Multi-Project Routing, Team Collaboration, Copilot awareness, and Context Injections.

💡 Tip: Use npx memory-journal-mcp project create <name> --path <repo-path> [--number <project-number>] to easily configure multiple repositories into your PROJECT_REGISTRY without manual JSON escaping!

json
{  "mcpServers": {    "memory-journal-mcp": {      "command": "memory-journal-mcp",      "args": ["--tool-filter", "codemode"],      "env": {        "DB_PATH": "/path/to/your/memory_journal.db",        "TEAM_DB_PATH": "/path/to/shared/team.db",        "GITHUB_TOKEN": "ghp_your_token_here",        "PROJECT_REGISTRY": "{\"my-repo\":{\"path\":\"/path/to/repo\",\"project_number\":1},\"other-repo\":{\"path\":\"/path/to/other\",\"project_number\":5}}",        "ALLOWED_IO_ROOTS": "/path/to/repo,/path/to/other,/path/to/your/skills",        "AUTO_REBUILD_INDEX": "true",        "CODEMODE_INTERNAL_FULL_ACCESS": "true",        "BRIEFING_ENTRY_COUNT": "3",        "BRIEFING_SUMMARY_COUNT": "1",        "BRIEFING_INCLUDE_TEAM": "true",        "BRIEFING_ISSUE_COUNT": "3",        "BRIEFING_PR_COUNT": "3",        "BRIEFING_PR_STATUS": "true",        "BRIEFING_WORKFLOW_COUNT": "3",        "BRIEFING_WORKFLOW_STATUS": "true",        "BRIEFING_COPILOT_REVIEWS": "true",        "RULES_FILE_PATH": "/path/to/your/RULES.md",        "SKILLS_DIR_PATH": "/path/to/your/skills",        "MEMORY_JOURNAL_WORKFLOW_SUMMARY": "/deploy: prod deployment | /audit: security scan",        "AUDIT_LOG_PATH": "/path/to/your/mcp-audit.jsonl",        "TEAM_AUTHOR": "your_username"      }    }  }}

💡 Tip: Optimize your context window! Journal entries (BRIEFING_ENTRY_COUNT) capture frequent, granular actions (e.g. bug fixes, implementation steps). Session summaries (BRIEFING_SUMMARY_COUNT) surface high-level retrospectives meant to pass strategic context continuously across distinct AI sessions. Use both appropriately to keep the agent briefing highly focused!

📋 Customizing the Session Briefing

The memory://briefing resource is dynamically assembled at each session start to provide rich, token-efficient ambient context. By default, it automatically surfaces:

  • System State: Server version, capability statuses, resource/tool counts, test health, and memory://metrics/summary breadcrumbs.
  • Repository Context: Git working tree status, unreleased changes, exact code-map paths, and prioritized gatekeeper CI workflows.
  • Ambient Context: Active workspace paths, local time, analytics.

You control exactly what additional content your agent sees across three dimensions:

DimensionVariablesWhat It Controls
FocusMEMORY_JOURNAL_MCP_TOOL_FILTER (CLI: --tool-filter, config: "toolFilter")Control tool exposure: full (default), starter, essential, readonly, codemode
Journal ContentBRIEFING_ENTRY_COUNT, BRIEFING_SUMMARY_COUNT, BRIEFING_COMMIT_COUNT, BRIEFING_IMPORTANCE_THRESHOLD, BRIEFING_INCLUDE_TEAMHow many recent entries, session summaries, commits, and whether team entries appear
GitHub EnrichmentBRIEFING_ISSUE_COUNT, BRIEFING_PR_COUNT, BRIEFING_PR_STATUS, BRIEFING_MILESTONE_COUNT, BRIEFING_WORKFLOW_COUNT, BRIEFING_WORKFLOW_STATUS, BRIEFING_COPILOT_REVIEWSIssues, PRs, milestones, CI runs, and Copilot review state surfaced in the briefing

Context Injections: Set RULES_FILE_PATH and SKILLS_DIR_PATH to surface user rules and agent skills as companion resources (memory://rules, memory://skills) alongside the briefing.

Repo Targeting: In multi-repo setups, agents read memory://briefing/{+repo} to get a briefing scoped to a specific repository registered in PROJECT_REGISTRY.

Briefing Presets (click to expand)

Minimal (fast sessions) — Reduce briefing to bare essentials for quick interactions:

json
"BRIEFING_ENTRY_COUNT": "1","BRIEFING_SUMMARY_COUNT": "0","MEMORY_JOURNAL_MCP_TOOL_FILTER": "essential"

Full Context (onboarding agents) — Maximize context for agents unfamiliar with the project:

json
"BRIEFING_ENTRY_COUNT": "5","BRIEFING_SUMMARY_COUNT": "3","BRIEFING_INCLUDE_TEAM": "true","BRIEFING_ISSUE_COUNT": "5","BRIEFING_PR_COUNT": "3","BRIEFING_PR_STATUS": "true","BRIEFING_COPILOT_REVIEWS": "true","MEMORY_JOURNAL_MCP_TOOL_FILTER": "full"

DevOps-Heavy — Emphasize CI/CD and GitHub state for infrastructure workflows:

json
"BRIEFING_WORKFLOW_COUNT": "5","BRIEFING_WORKFLOW_STATUS": "true","BRIEFING_ISSUE_COUNT": "3","BRIEFING_PR_COUNT": "3","BRIEFING_PR_STATUS": "true","BRIEFING_COPILOT_REVIEWS": "true"

Full briefing customization guide →

Variants (modify the config above):

VariantChange
Minimal (no GitHub)Remove the env block entirely
npx (no install)Replace "command" with "npx" and add "args": ["-y", "memory-journal-mcp"]
From sourceReplace "command" with "node" and add "args": ["dist/cli.js"]
Code Mode minimalAdd "args": ["--tool-filter", "codemode", "--codemode-internal-full-access"] (mj_execute_code + update_configuration, all mj.* capabilities)
DockerReplace "command" with "docker" and add "args": ["run", "-i", "--rm", "-v", "./data:/app/data", "-e", "GITHUB_TOKEN", "-e", "PROJECT_REGISTRY", "-e", "ALLOWED_IO_ROOTS", "writenotenow/memory-journal-mcp:latest"] (forward any "env" keys via -e <VAR>)
Team collaborationAdd "TEAM_DB_PATH": "./team.db" to env

Restart your MCP client and start journaling!

Connect Remotely with HTTP/SSE Transport

[!IMPORTANT] Security Posture: Stdio vs HTTP (Fail-Closed Startup Guards)

  • Stdio (Default): Runs implicitly within the secure boundaries of your local IDE or command-line environment. No explicit authentication is required because the execution context is already trusted (ALLOWED_IO_ROOTS defaults to fail-closed [] unless configured).
  • HTTP/SSE (--transport http): Exposes the server over a network socket and enforces three fail-closed startup guards:
    1. Mandatory Filesystem Boundary (ALLOWED_IO_ROOTS / --allowed-io-roots): Always required in HTTP mode so filesystem boundaries are explicitly declared.
    2. Mandatory Public Authentication: By default, HTTP binds ONLY to localhost and blocks wildcard CORS to prevent unauthorized access and CSRF attacks. Binding to a non-loopback address (--server-host 0.0.0.0) requires explicit authentication (MCP_AUTH_TOKEN / --auth-token or --oauth-enabled).
    3. Mandatory Public Origin for Non-Loopback OAuth (PUBLIC_ORIGIN / --public-origin): When --oauth-enabled is bound to a non-loopback address, --public-origin (PUBLIC_ORIGIN) is strictly required so RFC 9728 Protected Resource Metadata cannot be spoofed via Host headers.

For remote access or web-based clients, run the server in HTTP mode:

bash
memory-journal-mcp --transport http --port 3000 --allowed-io-roots /path/to/allowed/dir

To bind to all interfaces (required for containers) and enable the automated proactive analytics scheduler (e.g. daily digest), you MUST provide both ALLOWED_IO_ROOTS and an authentication token:

bash
export MCP_AUTH_TOKEN="your_secure_random_token"export MCP_AUTH_SCOPES="full" # Defaults to "read" if omittedexport ALLOWED_IO_ROOTS="/path/to/allowed/dir"memory-journal-mcp --transport http --port 3000 --server-host 0.0.0.0 --digest-interval 1440

Endpoints:

EndpointDescriptionMode
GET /Server info and available endpointsBoth
POST /mcpJSON-RPC requests (initialize, tools/call, etc.)Both
GET /mcpSSE stream for server-to-client notificationsStateful
DELETE /mcpSession termination (204 No Content)Both
GET / POST /sseLegacy SSE connection & stateless/stateful POST (MCP 2024-11-05)GET: Stateful / POST: Both
POST /messagesLegacy SSE message endpointStateful
GET /healthHealth check ({ status, timestamp })Both
GET /metricsPrometheus metrics export (requires flag)Both
GET /.well-known/oauth-protected-resourceRFC 9728 Protected Resource Metadata (requires --oauth-enabled)Both

Session Management: The server uses stateful sessions by default. Include the mcp-session-id header (returned from initialization) in subsequent requests.

  • OAuth 2.1 — RFC 9728/8414, JWT/JWKS, granular scopes (opt-in via --oauth-enabled)
  • Comprehensive Security Headers — CSP, HSTS (opt-in), X-Frame-Options, and more
  • Rate Limiting — 100 req/min per subject/IP · CORS — configurable multi-origin (exact-match) · 1MB body limit
  • Server Timeouts — Request (120s), keep-alive (65s), headers (66s) · 404 handler · Cross-protocol guard
  • Build Provenance · SBOM · Supply Chain Attestations · Non-root execution

Example with curl:

Initialize session (returns mcp-session-id header):

bash
curl -X POST http://localhost:3000/mcp \  -H "Content-Type: application/json" \  -H "Accept: application/json, text/event-stream" \  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

List tools (with session):

bash
curl -X POST http://localhost:3000/mcp \  -H "Content-Type: application/json" \  -H "Accept: application/json, text/event-stream" \  -H "mcp-session-id: YOUR_SESSION_ID" \  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
Stateless Mode (Serverless)

For serverless deployments (Lambda, Workers, Vercel), use stateless mode:

bash
memory-journal-mcp --transport http --port 3000 --stateless --allowed-io-roots /path/to/projects
ModeProgress NotificationsLegacy SSEServerless
Stateful (default)✅ Yes✅ Yes⚠️ Complex
Stateless (--stateless)❌ No❌ No✅ Native
Automated Scheduling (HTTP Only)

When running in HTTP/SSE mode, enable periodic maintenance jobs with CLI flags. These jobs run in-process on setInterval — no external cron needed.

Note: These flags are ignored for stdio transport because stdio sessions are short-lived (tied to your IDE session). For stdio, use OS-level scheduling (Task Scheduler, cron) or run the backup/cleanup tools manually.

bash
memory-journal-mcp --transport http --port 3000 \  --allowed-io-roots /path/to/projects \  --backup-interval 60 --keep-backups 10 \  --vacuum-interval 1440 \  --rebuild-index-interval 720
FlagDefaultDescription
--backup-interval <min>0 (off)Create timestamped database backups and prune old ones automatically
--keep-backups <count>5Max backups retained during automated cleanup
--vacuum-interval <min>0 (off)Run PRAGMA optimize and flush database to disk
--rebuild-index-interval <min>0 (off)Full vector index rebuild to maintain semantic search quality
--report-interval <min>0 (off)Scheduled report generation interval in minutes
--report-webhook-url <url>—HTTPS webhook URL for scheduled report delivery
--report-webhook-auth <header>—Custom Authorization header for webhook requests
--report-content-type <type>slackWebhook payload format: slack, discord, or json (env: REPORT_CONTENT_TYPE)
--digest-interval <min>0 (off)Scheduled periodic digest analysis report
--auto-prune-interval <min>0 (off)Run autonomous garbage collection (archive, soft-delete, hard-delete)
--archive-older-than-days <days>0 (off)Auto-archive low-importance entries older than N days
--prune-older-than-days <days>0 (off)Auto soft-delete entries older than N days
--hard-delete-older-than-days <days>0 (off)Permanently purge soft-deleted entries older than N days
--prune-importance-threshold <score>0.15Max importance score (0.0–1.0) eligible for archiving/pruning
--prune-dry-runfalseLog auto-prune candidates without mutating entries
--prune-exclude-tags <tags>—Comma-separated tags exempt from auto-prune (archived always kept)

Each job is error-isolated — a failure in one job won't affect the others. Scheduler status (last run, result, next run) is visible via memory://health.

Integrate Seamlessly with GitHub

The GitHub tools (get_github_issues, get_github_prs, etc.) auto-detect the repository from your git context when PROJECT_REGISTRY is configured or the MCP server is run inside a git repository.

Multi-Project Workflows: For agents to seamlessly support multiple projects, configure your PROJECT_REGISTRY (tip: use npx memory-journal-mcp project create <name> --path <repo-path> [--number <project-number>]).

Dynamic Context Resolution & Auto-Detection

When executing GitHub tools (issues, PRs, context, etc.), the server resolves repository context in this order:

  1. Dynamic Project Routing: If the agent passes a repo string that matches a key in your PROJECT_REGISTRY, the server dynamically mounts the physical directory mapped to that project. It executes git commands locally and automatically infers the owner.
  2. Explicit Override: If the agent provides both owner and repo explicitly, those values override auto-detection for API calls.
  3. Missing Context: Without PROJECT_REGISTRY or explicit parameters, the server blocks execution and returns {requiresUserInput: true} to prompt the agent. If an agent encounters this blocked state, it can seamlessly recover by invoking the mj.admin.registerProject() method via Code Mode to auto-configure the project registry on the fly.
Automatic Project Routing (Kanban / Issues)

When opening an issue or viewing/moving a Kanban card, the server needs a GitHub Project number. It determines this via:

  1. Exploring the raw project_number argument passed by the agent.
  2. Checking if the repo string precisely matches an entry in your PROJECT_REGISTRY, seamlessly mapping it to its pre-configured project_number.
  3. Falling back to the globally defined DEFAULT_PROJECT_NUMBER if set.

🔐 OAuth 2.1 Authentication

For production deployments, enable OAuth 2.1 authentication on the HTTP transport:

ComponentStatusDescription
Protected Resource Metadata✅RFC 9728 /.well-known/oauth-protected-resource
Auth Server Discovery✅RFC 8414 metadata discovery with caching
Token Validation✅JWT validation with JWKS support
Scope Enforcement✅Granular read, write, team, audit, admin, full scopes
HTTP Transport✅Streamable HTTP with OAuth middleware

Supported Scopes:

ScopeTool Groups
readcore (read-only), search, analytics, relationships (visualize_relationships), io (export_entries), git
writegithub (+ all read groups and create_entry / create_entry_minimal / link_entries / mark_anchors_stale / import_external / import_markdown / export_markdown)
teamteam (dedicated team collaboration scope; combine with read/write for personal journal access)
auditmemory://audit resource access (included in admin/full; search_audit_log requires admin or full)
adminadmin, backup, codemode (+ all read/write/team/audit groups)
fullUnrestricted access to all operations

Quick Start:

bash
memory-journal-mcp --transport http --port 3000 \  --allowed-io-roots /path/to/projects \  --oauth-enabled \  --oauth-issuer https://auth.example.com/realms/mcp \  --oauth-audience memory-journal-mcp \  --oauth-jwks-uri https://auth.example.com/realms/mcp/protocol/openid-connect/certs

Or via environment variables:

bash
export ALLOWED_IO_ROOTS="/path/to/projects"export OAUTH_ENABLED=trueexport OAUTH_ISSUER=https://auth.example.com/realms/mcpexport OAUTH_AUDIENCE=memory-journal-mcpexport OAUTH_JWKS_URI=https://auth.example.com/realms/mcp/protocol/openid-connect/certsexport OAUTH_CLOCK_TOLERANCE=60memory-journal-mcp --transport http --port 3000

Note: OAuth is opt-in. When not enabled, the server falls back to simple token authentication via MCP_AUTH_TOKEN environment variable, or runs without authentication.

🔄 Session Management

  1. Session start → agent reads memory://briefing (or memory://briefing/{repo}) and shows project context
  2. Session summary → use /session-summary to capture progress and next-session context
  3. Next session's briefing includes the previous summary — context flows seamlessly

🔧 Configuration

Environment Variables

VariableDescription
Core Database & Server
DB_PATHPath to the personal journal SQLite database (CLI: --db, --database, default: ./memory_journal.db)
DB_ENCRYPTION_KEYSQLCipher at-rest database encryption key (alias: MJ_DB_ENCRYPTION_KEY)
TEAM_DB_PATHPath to the shared team SQLite database (CLI: --team-db, --team-database)
TEAM_AUTHORDisplay name attached to team entries (used for local author identity; OAuth identity claims take precedence when creating team entries and RBAC ownership under active OAuth)
TEAM_DEFAULT_ROLEDefault RBAC role for unlisted team authors: admin, member, viewer, denied (CLI: --team-default-role, default: denied)
TEAM_ADMINBootstrap admin author name when the team_members table is empty (CLI: --team-admin)
ADDITIONAL_TEAM_DBSJSON mapping of label to path for additional read-only team SQLite databases (CLI: --additional-team-dbs)
DEFAULT_WORKSPACE_IDDefault workspace ID for multi-tenant isolation (CLI: --default-workspace-id, default: default; MCP_WORKSPACE_ID provides a session-scoped schema-healing fallback on tool payloads)
MEMORY_JOURNAL_CONFIGPath to configuration file (.yaml, .yml, .json; CLI: --config)
LOG_LEVELServer log verbosity: debug, info, notice, warning, error, critical (CLI --log-level accepts debug, info, warning, error; default: info)
TRANSPORT / PORT / MCP_HOST / STATELESSTransport mode (stdio or http; CLI: --transport), HTTP port (--port, default: 3000), bind address (--server-host, fallback: HOST, default: localhost), and stateless HTTP mode (--stateless, default: false)
CORS_ORIGIN / MCP_CORS_ORIGIN / MCP_RATE_LIMIT_MAXAllowed CORS origins (--cors-origin) and per-IP/minute HTTP rate limit (default: 100)
GITHUB_TOKENPersonal access token for GitHub integrations
DEFAULT_PROJECT_NUMBERDefault GitHub Project number for issue auto-assignment (CLI: --default-project)
PROJECT_REGISTRYJSON map of repo names to local paths and project numbers
EMBEDDING_MODELHuggingFace transformers model for semantic search (CLI: --embedding-model, default: Xenova/all-MiniLM-L6-v2)
AUTO_REBUILD_INDEXRebuild vector search index on startup (true/false, CLI: --auto-rebuild-index)
Security & Tooling
ALLOWED_IO_ROOTSComma-separated paths for Code Mode and IO filesystem boundaries (fail-closed in stdio; mandatory when --transport http is used)
MEMORY_JOURNAL_MCP_TOOL_FILTERControl tool exposure (full, starter, essential, codemode, readonly, -github; CLI: --tool-filter, memory-journal.config.{yaml,yml,json} key: "toolFilter". Note: TOOL_FILTER is a display fallback only)
CODE_MODE_MAX_RESULT_SIZEMax execution payload buffer size in Code Mode (bytes, default: 102400)
CODEMODE_INTERNAL_FULL_ACCESSAllow Code Mode to bypass tool filters internally (default: false)
MCP_AGENT_HEALINGEnable/disable autonomous tool & parameter healing (true/false, CLI: --no-agent-healing)
MAX_TOOL_INPUT_ELEMENTSMax array/object elements in tool inputs (default: 25000, 0 or Infinity = disabled)
MCP_AUTH_TOKEN / MCP_AUTH_SCOPESStatic Bearer authentication token (--auth-token, --auth-scopes) and comma-separated granted scopes for HTTP transport (default: read)
MCP_ENABLE_HSTS / TRUST_PROXYEnable Strict-Transport-Security header (--enable-hsts) and reverse-proxy X-Forwarded-For trust (--trust-proxy)
Briefing & Context
BRIEFING_ENTRY_COUNTNumber of granular journal entries in briefing (default: 3)
BRIEFING_SUMMARY_COUNTNumber of session summaries in briefing (default: 1)
BRIEFING_COMMIT_COUNTNumber of git commits in briefing (default: 3)
BRIEFING_IMPORTANCE_THRESHOLDMinimum importance score for briefing entries (default: 0.3)
BRIEFING_INCLUDE_TEAMInclude entries from the team database (default: false)
BRIEFING_ISSUE_COUNT / BRIEFING_PR_COUNT / BRIEFING_PR_STATUSGitHub Issues (default: 0), PRs (default: 0), and PR status breakdown (default: false) in briefing
BRIEFING_MILESTONE_COUNTGitHub Milestones to list with titles (default: 3)
BRIEFING_WORKFLOW_COUNT / BRIEFING_WORKFLOW_STATUS / BRIEFING_COPILOT_REVIEWSCI workflow runs (default: 0), status breakdown (default: false), and Copilot review state (default: false)
STALENESS_ACTIVE_HOURS / STALENESS_RECENT_DAYS / STALENESS_STALE_DAYSThresholds for memory://staleness project classification (defaults: 24h / 7d / 30d)
RULES_FILE_PATH / SKILLS_DIR_PATH / MEMORY_JOURNAL_WORKFLOW_SUMMARYInjected behavioral rules, skills boundaries, and workflow summary
OAuth (HTTP Mode)
OAUTH_ENABLEDEnable OAuth 2.1 authentication (default: false)
OAUTH_ISSUER / OAUTH_AUDIENCE / OAUTH_JWKS_URI / OAUTH_CLOCK_TOLERANCE / PUBLIC_ORIGIN / OAUTH_ALLOW_PLAINTEXT_LOOPBACKOAuth token verification parameters (clock tolerance default: 60s), non-loopback RFC 9728 public origin (--public-origin), and local dev plaintext loopback issuer flag (--oauth-allow-plaintext-loopback)
Telemetry & Administration
AUDIT_LOG_PATH / AUDIT_REDACT / AUDIT_READS / AUDIT_LOG_MAX_SIZEPath to JSONL audit log file, argument/result redaction, read-call logging, and rotation size limit (default: 10MB)
METRICS_EXPORT / PERSIST_METRICS / METRICS_PATH / MJ_METRICS_PORT / MJ_METRICS_HOSTPrometheus export (METRICS_EXPORT=prometheus auto-starts the standalone metrics server on 127.0.0.1:9465 in addition to mounting /metrics on the HTTP transport), disk-persisted metrics (--persist-metrics, --metrics-path), and dedicated scrape port/host
AUTO_PRUNE_INTERVAL_MINUTES / ARCHIVE_OLDER_THAN_DAYS / PRUNE_OLDER_THAN_DAYS / HARD_DELETE_OLDER_THAN_DAYS / PRUNE_IMPORTANCE_THRESHOLD / PRUNE_DRY_RUN / PRUNE_EXCLUDE_TAGSAutonomous lifecycle pruning, archiving (interval/days default: 0 = disabled), importance threshold (default: 0.15), dry-run (default: false), and exclusion tags
BACKUP_INTERVAL / KEEP_BACKUPS / VACUUM_INTERVAL / REBUILD_INDEX_INTERVAL / DIGEST_INTERVALScheduled HTTP maintenance intervals in minutes (--backup-interval, --vacuum-interval, --rebuild-index-interval, --digest-interval) and backup retention count (--keep-backups, default: 5)
REPORT_INTERVAL / REPORT_WEBHOOK_URL / REPORT_WEBHOOK_AUTH / REPORT_CONTENT_TYPE / ALLOW_INSECURE_WEBHOOK_HTTPScheduled HTTP reports, webhook delivery headers/content-type, and local dev HTTP webhook override
DEBUG / DISABLE_ISSUE_LOGGINGVerbose debug logging and suppression of automated runtime issue logging

GitHub Integration (Optional)

bash
export GITHUB_TOKEN="your_token"              # For Projects/Issues/PRs

Scopes: repo, project, read:org (org-level project discovery only)

Manage GitHub Seamlessly

Memory Journal provides a hybrid approach to GitHub management:

Capability SourcePurpose
MCP ServerSpecialized features: Kanban visualization, Milestones, journal linking, project timelines
Agent (gh CLI)Full GitHub mutations: create/close issues, create/merge PRs, manage releases

MCP Server Tools (Read + Kanban + Milestones + Issue Lifecycle):

See the Complete tools reference for all supported GitHub integration capabilities, including query commands, Kanban management, milestone tracking, analytics, and issue lifecycle events.

Why this design? The MCP server focuses on value-added features that integrate journal entries with GitHub (Kanban views, Milestones, timeline resources, context linking). Standard GitHub mutations (create/close issues, merge PRs, manage releases) are handled directly by agents via gh CLI.

Complete GitHub integration guide →

Automate with GitHub Commander Workflows

The server natively bundles the memory-journal-mcp agent skill (served via SEP-2640 and memory://skills). It also provides built-in issue-commander, pr-commander, and cms-rem-supervisor MCP workflow prompts for autonomous DevOps stewardship: Issue Triage, Milestone Sprints, PR Reviews, Copilot Audits, Security Audits, Code Quality Audits, Performance Audits, Roadmap Kickoffs, and Dependency Updates. These workflows enforce multi-gate validation (lint, typecheck, test, and security checks) locally during agent tasks.

🏗️ Architecture

Data Flow

mermaid
flowchart TB    AI["🤖 AI Agent<br/>(Cursor, Windsurf, Claude)"]
    subgraph MCP["MCP Server Capabilities"]        direction LR        Tools["🛠️ MCP Tools"]        Resources["📡 Resources"]        Prompts["💬 Prompts"]    end
    subgraph Storage["Persistence Layer"]        SQLite[("💾 SQLite<br/>Entries, Tags, Relationships")]        Vector[("🔍 Vector Index<br/>Semantic Embeddings")]        Backups["📦 Backups"]    end
    subgraph External["External Integrations"]        GitHub["🐙 GitHub API<br/>Issues, PRs, Actions"]        Kanban["📋 Projects v2<br/>Kanban Boards"]    end
    AI <-->|"MCP Protocol"| MCP    Tools --> Storage    Tools --> External    Resources --> Storage    Resources --> External

Stack

┌─────────────────────────────────────────────────────────────┐│ MCP Server Layer (TypeScript)                               ││  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────┐  ││  │ Tools           │  │ Resources       │  │ Prompts     │  ││  └─────────────────┘  └─────────────────┘  └─────────────┘  │├─────────────────────────────────────────────────────────────┤│ Native SQLite Engine                                        ││  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────┐  ││  │ better-sqlite3  │  │ sqlite-vec      │  │ transformers│  ││  │ (High-Perf I/O) │  │ (Vector Index)  │  │ (Embeddings)│  ││  └─────────────────┘  └─────────────────┘  └─────────────┘  │├─────────────────────────────────────────────────────────────┤│ SQLite Database with Hybrid Search                          ││  ┌─────────────────────────────────────────────────────────┐││  │ entries + tags + relationships + embeddings + backups   │││  └─────────────────────────────────────────────────────────┘│└─────────────────────────────────────────────────────────────┘

🔧 Technical Highlights

Performance & Portability

  • TypeScript + Native SQLite - High-performance better-sqlite3 with synchronous I/O
  • sqlite-vec - Vector similarity search via SQLite extension
  • @huggingface/transformers - Local ML embedding models in JavaScript
  • Background Warmup - Model weights (~23MB) are loaded into memory asynchronously on server startup to avoid first-request latency. If the server is invoked before warmup completes, the first semantic search or vector insertion will incur a network-bound cold start (~1.5s - 3s) while the weights are cached locally.

Performance Benchmarks

Memory Journal is designed for extremely low overhead during AI task execution. We include a vitest bench suite across database, vector search, and MCP server routines to maintain these baseline guarantees:

  • Database Operations (sqlite-adapter.bench.ts): calculateImportance runs at ~51,600 ops/sec (~0.03ms mean, ~27x faster than retrieving 50 recent entries) via a 256-entry LRU prepared statement cache. getRecentEntries (limit 50) executes at ~1,870 ops/sec (~0.63ms mean), updateEntry at ~2,380 ops/sec (~0.79ms mean), createEntry at ~1,060 ops/sec (~1.69ms mean), and searchEntries (FTS5 BM25 + batch importance hydration) at ~176 ops/sec (~6.2ms mean).
  • Vector Search Engine (vector-search.bench.ts): Both k-NN similarity search (~1,050 ops/sec, ~1.8ms mean with batch entry hydration) and vector indexing (~4,220 ops/sec, ~0.41ms mean) are high-throughput via sqlite-vec (vec0 with chunk_size=256).
  • Core MCP Routines (mcp-server.bench.ts): getTools uses cached O(1) dispatch (~7.2M–9.4M ops/sec, ~0.0001ms). Full end-to-end callTool invocations (including interceptor, token estimation, and project registry resolution) run at ~1,775 ops/sec (~0.65ms) for get_recent_entries, ~205 ops/sec (~5.4ms) for search_entries, and ~800 ops/sec (~2.4ms) for create_entry.

To run the benchmarking suite locally:

bash
pnpm run bench

Testing

Extensively tested across two frameworks:

SuiteCommandCovers
Vitest (unit/integration)pnpm testExtensive Vitest unit and integration suite with strict quality gates (database, tools, resources, handlers, security, GitHub, vector search, codemode)
Playwright (e2e)pnpm run test:e2eHTTP/SSE transport, auth, sessions, CORS, security headers, scheduler
bash
pnpm test          # Unit + integration testspnpm run test:e2e  # End-to-end HTTP/SSE transport tests

Security

Note: When updating schemas or validation logic, please refer to the /zod skill for best practices on Standard Schema and Safe Parsing.

  • Deterministic error handling - Every tool returns structured {success, error, code, category, suggestion, recoverable} responses with actionable context — no raw exceptions, no silent failures, no misleading messages
  • Local-first - All data stored locally, no external API calls (except optional GitHub)
  • Input validation - Zod schemas, content size limits, SQL injection prevention, and <untrusted_remote_content> prompt-injection boundary tagging
  • Path traversal & SSRF protection - ALLOWED_IO_ROOTS sandbox containment with URL-decode/symlink verification, backup path validation, and outbound webhook DNS/IP SSRF blocking
  • Multi-tenant & filter enforcement - End-to-end workspace_id isolation across SQLite and Vector search, plus execution-layer --tool-filter enforcement across tools/call, Code Mode (mj.*), and fallback handlers
  • MCP 2025-11-25 annotations & icons - Behavioral hints (readOnlyHint, destructiveHint, etc.) and capability icons
  • HTTP transport hardening - OAuth 2.1 tokenClaims propagation, principal-bound stateful sessions (100 max active sessions), comprehensive security headers, configurable multi-origin CORS, 1MB body/stream limit, built-in per-subject/IP rate limiting (100 req/min), server timeouts, HSTS (opt-in), 30-min session timeout, and localhost-bound metrics (METRICS_EXPORT=prometheus automatically starts the standalone metrics server on 127.0.0.1:9465, customizable via MJ_METRICS_PORT and MJ_METRICS_HOST, in addition to mounting /metrics on the HTTP transport)
  • Token scrubbing - GitHub tokens and credentials automatically redacted from error and audit logs

Data & Privacy

  • Single SQLite file - You own your data
  • Portable - Move your .db file anywhere
  • Soft delete - Entries can be recovered
  • Auto-backup on restore - Never lose data accidentally

📚 Documentation & Resources


📄 License

MIT License - See LICENSE file for details.

🤝 Contributing

Built by developers, for developers. PRs welcome! Ensure all unit and E2E tests, linting, and typechecks pass. See CONTRIBUTING.md for guidelines.

Upgrading from an earlier version? Your existing SQLite database is automatically migrated on startup.

來源:README.md,提交 81f98e4

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.1.3最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Memory 整合