← Back to directory
M

Memory Journal MCP Server

Community
Persistent memory and context handoff across AI sessions, with deep GitHub workflow integration.
Category
Dev Tools #15 of 438
Stars
★ 20 Popular
Transport
stdio (local process) · Streamable HTTP
Runtime
Node.js · Docker
Credentials
Optional API key
License
MIT
Last commit
Tools
64
70FMRS · B

Memory Journal MCP Server is a powerful, feature-rich tool for developers and teams that need persistent context and GitHub integration. It has extensive security features, but careful configuration is required.

Strongest · Documentation 17/20 Weakest · Reliability 11/20

Reliability
11/20
Security and permissions
15/20
Maintenance
13/20
Documentation
17/20
Setup experience
14/20
Why each score
Reliability 11/20
README claims 1782 unit tests, 391 E2E tests, 90.53% coverage, and a CI badge (gatekeeper.yml), but these are self-reported and unverifiable in a static review. The declared surface (73 tools, 46 resources, 19 prompts) plus structured error contracts, tool filtering, readonly halting, timeouts, and rate limits show thoughtful failure-path design, yet without source-level execution evidence the static calibration caps reliability below 13; scored 11.
Security and permissions 15/20
No red-line findings: no real tokens in install examples, no malware or fabricated identity. Highlights: public binding (0.0.0.0) hard-requires auth, OAuth 2.1 (RFC 9728/8414), fail-closed ALLOWED_IO_ROOTS, redacted-by-default audit logging, automatic token scrubbing. Deductions: Code Mode sandbox relies on regex blocklists plus frozen prototypes in worker_threads (not true tenant isolation), and CODEMODE_INTERNAL_FULL_ACCESS can bypass filters; GITHUB_TOKEN in plaintext env is standard but least-privilege scoping is only documented, not verified. Risks are visible and mitigations substantial but unproven; scored 15.
Maintenance 13/20
Clear MIT license, active iteration at v8.0.1, SECURITY.md, CHANGELOG, CI badge, and SBOM/provenance claims. However, 19 stars and 7 open issues provide no statically verifiable evidence of issue-response behavior, release cadence, or dependency-update practice; governance remains asserted rather than demonstrated; scored 13.
Documentation 17/20
Layered and thorough: quick start, full env-var and CLI tables, OAuth setup, HTTP endpoints, scheduler flags, benchmarks, testing instructions, wiki links, architecture diagrams, config presets, and disclosed limitations (embedding cold start, scheduler not on stdio, OAuth opt-in, unauthenticated default). Deductions: all quantitative claims (tool counts, performance figures) are README self-assertions not corroborated by source, and standalone troubleshooting material is thin; scored 17.
Setup experience 14/20
Clear install paths (npm -g, Docker, from source) with mainstream-client mcp. examples, npx variant, and curl examples for HTTP transport. Deductions: advanced setups require many env vars (GITHUB_TOKEN, PROJECT_REGISTRY JSON, ALLOWED_IO_ROOTS), the ~23MB embedding model introduces a network cold start, and Docker mounts/shared team DB add fragility; scored 14.

Static review · not runListed 2026-09-08

Read the FMRS scoring method →

Fit and risk

What it can accessReads local filesWrites / deletes local filesRuns commands or codeUses the networkConnects to a database

Best for

  • Developers working on large projects who need persistent AI memory.
  • Teams want to integrate IDE agents and GitHub Copilot with shared context.
  • Engineers managing multiple repositories who need unified project intelligence.

Not for

  • Users who need only a trivial, stateless tool without any configuration.
  • Projects where persistent memory is explicitly not desired due to privacy concerns.
  • Environments that do not permit local file storage or database files.

Required permissions

  • Local filesystem access limited by the `ALLOWED_IO_ROOTS` environment variable, used for import/export and Code Mode.
  • GitHub API access via the `GITHUB_TOKEN` to interact with issues, PRs, actions, etc.
  • Network access for remote HTTP/SSE transport, fetching embedding models, and OAuth token validation.
  • Read/write access to SQLite database files stored on the local machine.

Risks and side effects

  • Misconfiguration of `ALLOWED_IO_ROOTS` could expose unintended file paths to the MCP tools.
  • A compromised GITHUB_TOKEN could allow unauthorized access to your repositories.
  • Code Mode executes sandboxed JavaScript, but there is always a risk if the sandbox is not perfectly isolated.
  • HTTP transport without proper authentication (e.g., OAuth or token) could allow unauthorized access.
  • Third-party embedding models may introduce supply chain risks.

Setup

Before you start

Runtime:Node.js · Docker

GITHUB_TOKEN optionalsecret GitHub personal access token for Issues/PRs/Actions API access; generate in GitHub settings with repo, project, and read:org scopes.
MCP_AUTH_TOKEN optionalsecret Bearer token for HTTP transport authentication; required for public binding.
Other optional settings (55)
PROJECT_REGISTRY optional JSON map of repo names to { path, project_number } for multi-project auto-detection and routing.
ALLOWED_IO_ROOTS optional Comma-separated absolute paths granting filesystem access to export/import and Code Mode tools; fail-closed by default.
DB_PATH optional Location of the SQLite journal database file.
TEAM_DB_PATH optional Path to the shared team database; required for team collaboration and Hush Protocol.
TEAM_AUTHOR optional Overrides author name for team entries; defaults to git config user.name.
DEFAULT_PROJECT_NUMBER optional Default GitHub Project number for auto-assignment when creating issues.
AUTO_REBUILD_INDEX optional Set to true to rebuild the vector index on server startup.
MCP_HOST optional HTTP bind host; use 0.0.0.0 for containers.
MCP_CORS_ORIGIN optional Comma-separated allowed CORS origins for HTTP transport; blank (strict) by default.
TRUST_PROXY optional Trust proxy headers for rate limiting and origin checks; default false.
PUBLIC_ORIGIN optional Public origin URL for OAuth redirect URIs.
MCP_RATE_LIMIT_MAX optional Max HTTP requests per minute per client IP; default 100.
LOG_LEVEL optional Log verbosity: error, warn, info, debug; default info.
MCP_ENABLE_HSTS optional Enable HSTS security header on HTTP responses; default false.
OAUTH_ENABLED optional Set to true to enable OAuth 2.1 authentication (HTTP only).
OAUTH_ISSUER optional OAuth issuer URL, e.g. a Keycloak realm endpoint.
OAUTH_AUDIENCE optional Expected JWT audience claim.
OAUTH_JWKS_URI optional JWKS endpoint for JWT signature verification.
OAUTH_ALLOW_PLAINTEXT_LOOPBACK optional Allow plaintext HTTP loopback OAuth redirect URIs; default false.
OAUTH_CLOCK_TOLERANCE optional Allowed clock skew in seconds for JWT verification; default 5.
CODE_MODE_MAX_RESULT_SIZE optional Max size in bytes for mj_execute_code result payloads; default 102400.
CODEMODE_INTERNAL_FULL_ACCESS optional Set to true to bypass tool filter constraints inside the Code Mode sandbox.
BRIEFING_ENTRY_COUNT optional Number of journal entries in the session briefing; default 3.
BRIEFING_SUMMARY_COUNT optional Number of session summaries in the briefing; default 1.
BRIEFING_INCLUDE_TEAM optional Include team database entries in the briefing; default false.
BRIEFING_ISSUE_COUNT optional Issues listed in the briefing; 0 = count only.
BRIEFING_PR_COUNT optional PRs listed in the briefing; 0 = count only.
BRIEFING_PR_STATUS optional Show PR status breakdown in the briefing; default false.
BRIEFING_MILESTONE_COUNT optional Milestones listed in the briefing; default 3.
BRIEFING_WORKFLOW_COUNT optional Workflow runs listed in the briefing; 0 = status only.
BRIEFING_WORKFLOW_STATUS optional Show workflow status breakdown in the briefing; default false.
BRIEFING_COPILOT_REVIEWS optional Aggregate Copilot review state in the briefing; default false.
RULES_FILE_PATH optional Path to a user rules file exposed as memory://rules for agent awareness.
SKILLS_DIR_PATH optional Path to a skills directory exposed as memory://skills.
MEMORY_JOURNAL_WORKFLOW_SUMMARY optional Free-text workflow summary shown via memory://workflows.
INSTRUCTION_LEVEL optional Briefing guidance depth: essential, standard (default), full.
PROJECT_LINT_CMD optional Lint command for GitHub Commander validation gates; default npm run lint.
PROJECT_TYPECHECK_CMD optional Typecheck command; default npm run typecheck.
PROJECT_BUILD_CMD optional Build command; default npm run build.
PROJECT_TEST_CMD optional Test command; default npm run test.
PROJECT_E2E_CMD optional E2E test command; default empty = skip.
PROJECT_PACKAGE_MANAGER optional Package manager override: npm, yarn, pnpm, bun; auto-detected from lockfile by default.
PROJECT_HAS_DOCKERFILE optional Enable Docker audit steps; auto-detected by default.
COMMANDER_HITL_FILE_THRESHOLD optional Human-in-the-loop checkpoint when changes touch more than N files; default 10.
COMMANDER_SECURITY_TOOLS optional Comma-separated override for security tool auto-detection.
COMMANDER_BRANCH_PREFIX optional Branch naming prefix for PRs; default fix.
AUDIT_LOG_PATH optional Path for the JSONL telemetry log of write/admin tool calls; omit to disable.
AUDIT_REDACT optional Default true redacts tool arguments in the telemetry log.
AUDIT_READS optional Set to true to also log read-scoped tool calls; default false.
AUDIT_LOG_MAX_SIZE optional Max telemetry file size in bytes before rotation; default 10485760.
MCP_METRICS_ENABLED optional Set to false to disable in-memory tool call metrics; default true.
FLAG_VOCABULARY optional Comma-separated Hush Protocol flag types; default blocker,needs_review,help_requested,fyi.
PRUNE_OLDER_THAN_DAYS optional Soft-delete entries older than N days below the importance threshold on startup; 0 = disabled.
PRUNE_IMPORTANCE_THRESHOLD optional Importance score threshold (0.0–1.0) below which entries are pruned; default 0.15.
MEMORY_JOURNAL_MCP_TOOL_FILTER optional Controls exposed tool sets: presets like full, starter, readonly, or group exclusion syntax.
  1. Install globally via npm: npm install -g memory-journal-mcp
  2. Add a configuration block under mcpServers in your MCP client config (e.g., Claude Desktop, Cursor).
  3. Set environment variables as needed, such as GITHUB_TOKEN, PROJECT_REGISTRY, and ALLOWED_IO_ROOTS.
  4. Alternatively, use Docker: docker run -i --rm -v ./data:/app/data writenotenow/memory-journal-mcp:latest.
  5. Restart your MCP client.
claude_desktop_config.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"
      }
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "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"
      }
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add memory-journal-mcp -e GITHUB_TOKEN=ghp_your_token_here -e 'PROJECT_REGISTRY={"my-repo":{"path":"/path/to/your/git/repo","project_number":1}}' -e ALLOWED_IO_ROOTS=/path/to/your/git/repo -- memory-journal-mcp

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After adding the config and restarting your client, tools like create_entry and search_entries should appear in the tool list; you can also ask the agent to read memory://briefing — a returned project briefing confirms the connection.

Troubleshooting

  1. Verify that the MCP client is correctly configured with the right command and arguments.
  2. Check that all required environment variables, especially GITHUB_TOKEN and ALLOWED_IO_ROOTS, are set appropriately.
  3. If using multi-project support, ensure PROJECT_REGISTRY uses valid JSON and the paths are correct.
  4. If semantic search fails, confirm that the vector index is rebuilt (set AUTO_REBUILD_INDEX=true or run rebuild_vector_index).
  5. When using HTTP transport, ensure the server is reachable on the expected port and that authentication is properly enabled.

Things to try

Once connected, you can ask your AI assistant things like:

  • Search my journal for last month's discussion on why we chose SQLite over Postgres.
  • Check the Kanban board for this repo and triage the top priority ticket.
  • Raise a blocker flag for @sarah about the database error I'm stuck on.
  • Draw a relationship graph showing how my last 10 architectural decisions connect.

Tools 64

create_entry writes
Create a new journal entry.
get_entry read-only
Retrieve a single journal entry by ID.
get_recent_entries read-only
Get the most recent journal entries.
update_entry writes
Update the content or metadata of a journal entry.
delete_entry destructive
Soft-delete a journal entry.
list_tags read-only
List all tags with usage counts.
merge_tags writes
Merge multiple tags into one.
tag_entries writes
Add or remove tags from entries.
Show 56 more tools
search_entries read-only
Full-text or fuzzy search across journal entries.
semantic_search read-only
Perform vector search based on semantic similarity.
date_range_search read-only
Search combining date range and keywords.
get_vector_stats read-only
View vector index statistics.
get_statistics read-only
Get statistical summary of the journal database.
get_cross_project_insights read-only
Get cross-project analytics insights.
link_entries writes
Create a relationship link between two entries.
get_relationship_graph read-only
Generate a knowledge graph in Mermaid format.
export_json
Export journal data as JSON.
import_json
Import journal data from JSON.
export_markdown read-only
Export journal entries as Markdown.
import_markdown writes
Import journal data from Markdown files.
rebuild_vector_index writes
Rebuild the entire vector index.
add_to_vector_index writes
Add or update entries in the vector index.
get_github_issues read-only
Get a list of GitHub issues for a repository.
get_github_issue read-only
Get details of a single issue.
get_github_prs read-only
Get a list of pull requests.
get_github_pr read-only
Get details of a single PR.
get_github_context read-only
Retrieve full repository context (including CI status, unreleased changes, etc.).
get_kanban_board read-only
Get the contents of a GitHub Project Kanban board.
add_kanban_item writes
Add a new card to the Kanban board.
move_kanban_item writes
Move a Kanban card to another column.
delete_kanban_item destructive
Delete a Kanban card.
get_github_milestones read-only
Get a list of milestones with completion percentages.
get_github_milestone read-only
Get details of a single milestone.
create_github_milestone writes
Create a new milestone.
update_github_milestone writes
Update milestone information.
delete_github_milestone destructive
Delete a milestone.
get_repo_insights read-only
Get repository traffic and analytics for the last 14 days.
create_github_issue_with_entry writes
Create an issue and automatically link it to a journal entry.
close_github_issue_with_entry writes
Close an issue and automatically record a journal entry.
get_github_actions read-only
Get GitHub Actions workflow run history.
get_github_workflows read-only
Get a list of workflow definitions.
backup_database writes
Backup the journal database.
list_backups read-only
List all backup files.
restore_database destructive
Restore the database from a backup.
cleanup_backups destructive
Clean up old backup files.
team_create_entry writes
Create an entry in the team database.
team_get_entry read-only
Get an entry from the team database.
team_update_entry writes
Update an entry in the team database.
team_delete_entry destructive
Delete an entry from the team database.
team_search read-only
Full-text search in the team database.
team_semantic_search read-only
Semantic search in the team database.
team_get_stats read-only
Get team database statistics.
team_link_entries writes
Link entries in the team database.
team_get_relationship_graph read-only
Generate a relationship graph for team entries.
team_export_markdown read-only
Export team data as Markdown.
team_import_markdown writes
Import team data from Markdown.
team_backup writes
Backup the team database.
team_restore destructive
Restore the team database.
team_list_flags read-only
List active Hush Protocol flags.
team_update_flag writes
Update flag metadata or status.
team_resolve_flag writes
Resolve or close a flag.
team_pass_flag writes
Create a new Hush Protocol flag.
team_get_flag_analytics read-only
Get flag resolution velocity and workload statistics.
mj_execute_code writes
Execute JavaScript code in a sandboxed environment, accessing all mj APIs for multi-step operations.

Use cases

Maintaining a long-term record of decisions and context for a project across multiple AI sessions.
Automatically generating session summaries and loading them at the start of each new session for continuity.
Managing GitHub issues, PRs, milestones, and Kanban boards while linking work to journal entries.
Enabling team-wide shared knowledge and asynchronous collaboration through Hush Protocol flags and vector search.
Visualizing project timelines, status reports, and relationship graphs.

Supported clients

Claude Desktop
Cursor

Listed from the project's documentation, not tested by this site.

Overview

Memory Journal MCP Server is an MCP server that provides project-level long-term memory for AI agents. It maintains persistent knowledge graphs to pass context seamlessly between AI sessions, eliminating "AI amnesia." Features include GitHub integration (issues, PRs, Actions, Kanban, milestones, etc.), dynamic project detection, hybrid search (keyword + semantic + date range), knowledge graph visualization, team collaboration (shared database + vector search + cross-project insights), Hush Protocol (async flags), and adaptive session briefings. It offers 70+ tools, 19 prompts, and 46 resources, plus a Code Mode that saves up to 90% tokens. Built with TypeScript, SQLite, and local embedding models, it is local-first and privacy-conscious.

Similar servers

Context7 80 · B

Upstash's official server providing up-to-date third-party library docs for AI coding assistants

★ 63.3k · Tools 2 Compare with this →

Source revision f58eb155ec17 Data synced 2026-10-19 Read the FMRS scoring method