github TypeScript analyzed f58eb15

neverinfamous/memory-journal-mcp

github

Secure AI Memory with Dynamic Project Detection, Automatic Session Briefing, Personal+Team Session Summary Prompts, Triple Search, Knowledge Graphs, GitHub Integration (Issues, PRs, Actions, Kanban, Milestones), Team Collaboration, Hush, Adaptive Analytics, Markdown I/O, Audit+Token Logging, OAuth 2.1 & HTTP/SSE/stdio. 70+ Tools in 1 Code Mode.

maintainer
neverinfamous
licence
MIT
first seen
2026-06-03
last seen
2026-06-17
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged hidden prompt content in neverinfamous/memory-journal-mcp
  2. HIGH code analysis flagged hidden prompt content ×2 in neverinfamous/memory-journal-mcp
  3. HIGH code analysis flagged committed secret, dynamic code execution ×5 in neverinfamous/memory-journal-mcp
capabilities 4 tools
transport stdio · streamable-http · http · sse verified reported listed in the official MCP registry counts 4 tools · 0 res · 0 prompts permission surface via README inference

tools

  • essential

    ~7

  • full

    73

  • readonly

    17

  • starter

    ~11

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit f58eb15 · analyzer v33 · 3w ago

skills & prompt files 41

danger signals1

code evidence vv8.0.1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 372

filesystem 71

  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/scripts/generate-server-instructions.ts :14 import { readFileSync, readdirSync, writeFileSync } from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/scripts/run-checks.ts :2 import { writeFileSync, mkdirSync } from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/scripts/update-badges.ts :1 import fs from 'fs'
  • fs neverinfamous-memory-journal-mcp-f58eb15/skills/bin/sync.js :3 import fs from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/skills/gitlab/scripts/gitlab-client.ts :4 import * as fs from 'fs'
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/audit/audit-logger.ts :20 import { appendFile, mkdir, open, rename, stat } from 'node:fs/promises'
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/cli.ts :4 import * as fs from 'node:fs'
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/database/sqlite-adapter/backup.ts :1 import * as fs from 'node:fs'
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/database/sqlite-adapter/index.ts :25 import * as fs from 'node:fs'
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/database/sqlite-adapter/native-connection.ts :3 import * as fs from 'node:fs'
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/handlers/resources/core/briefing/context-section.ts :8 import * as fs from 'node:fs'
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/handlers/resources/core/briefing/system-section.ts :13 import * as fs from 'node:fs'
show 28 more
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/handlers/resources/core/utilities.ts :18 import * as fs from 'node:fs'
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/markdown/exporter.ts :8 import { mkdir, open } from 'node:fs/promises'
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/markdown/importer.ts :9 import { opendir, open } from 'node:fs/promises'
  • fs neverinfamous-memory-journal-mcp-f58eb15/src/utils/security-utils.ts :118 import fs from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/audit/audit-interceptor.test.ts :10 import { readFile, rm, mkdtemp } from 'node:fs/promises'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/audit/audit-logger.test.ts :15 import { readFile, rm, mkdtemp, stat, writeFile } from 'node:fs/promises'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/build-externals.test.ts :12 import { readFileSync } from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/codemode/codemode-tool-handlers.test.ts :64 const fs = require('node:fs')
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/codemode/security.test.ts :47 const result = security.validateCode('const fs = require("fs")')
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/codemode/worker-sandbox.test.ts :3 import * as fs from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/digest.test.ts :18 const fs = require('node:fs')
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/native-connection.test.ts :10 import fs from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/sqlite-adapter-backup.test.ts :3 import * as fs from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/sqlite-adapter.bench.ts :3 import * as fs from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/sqlite-adapter.test.ts :18 const fs = require('node:fs')
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/helpers.ts :19 import { createWriteStream } from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/payloads-codemode.spec.ts :65 code: `const fs = require('fs'); return fs.readFileSync('/etc/passwd');`,
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/payloads-io.spec.ts :11 import { rm } from 'node:fs/promises'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/payloads-team-happy.spec.ts :14 import { mkdirSync } from 'node:fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/handlers/catch-block-coverage.test.ts :70 const fs = require('node:fs')
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/handlers/codemode-tools.test.ts :5 import * as fs from 'fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/handlers/error-path-coverage.test.ts :66 const fs = require('node:fs')
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/handlers/github-body-truncation.test.ts :123 const fs = require('node:fs')
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/handlers/github-resource-handlers.test.ts :138 const fs = require('node:fs')
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/handlers/github-tool-handlers.test.ts :203 const fs = require('node:fs')
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/handlers/handler-error-branches.test.ts :85 const fs = require('node:fs')
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/handlers/help-resource.test.ts :9 import * as fs from 'fs'
  • fs (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/handlers/kanban-payload-optimization.test.ts :127 const fs = require('node:fs')

31 more not shown — this panel samples each group; the count above is the real total.

shell / exec 19

  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/scripts/run-checks.ts :1 import { execSync } from 'node:child_process'
  • shell neverinfamous-memory-journal-mcp-f58eb15/src/database/core/interfaces.ts :27 exec(sql: string, params?: unknown[]): QueryResult[]
  • shell neverinfamous-memory-journal-mcp-f58eb15/src/database/sqlite-adapter/native-connection.ts :5 import { execFile } from 'node:child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/test-server/scripts/test-50k-boundary.mjs :1 import { spawn } from 'child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/test-server/scripts/test-filter-instructions.mjs :21 import { spawn } from 'child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/test-server/scripts/test-instruction-levels.mjs :11 import { spawn } from 'child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/test-server/scripts/test-progress.mjs :23 import { spawn } from 'child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/test-server/scripts/test-prompts.mjs :1 import { spawn } from 'child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/test-server/scripts/test-team-db-fallback.mjs :10 import { spawn } from 'child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/test-server/scripts/test-team-zod.mjs :9 import { spawn } from 'child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/test-server/scripts/test-tool-annotations.mjs :27 import { spawn } from 'child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/codemode/codemode-tool-handlers.test.ts :187 { code: 'child_process.exec("whoami")' },
show 7 more
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/codemode/security.test.ts :94 const result = security.validateCode('const cp = child_process.exec("ls")')
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/database-branches.test.ts :84 'Multi-statement queries via exec() are strictly forbidden. Use properly parameterized adapter methods instead.'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/helpers.ts :18 import { ChildProcess, spawn } from 'node:child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/oauth-scopes.spec.ts :13 import { spawn, type ChildProcess } from 'node:child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/payloads-team-happy.spec.ts :16 import { spawn, type ChildProcess } from 'node:child_process'
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/rate-limiting.spec.ts :27 const { spawn } = await import('node:child_process')
  • shell (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/resources-briefing-env.spec.ts :13 import { spawn, type ChildProcess } from 'node:child_process'

network 18

  • net neverinfamous-memory-journal-mcp-f58eb15/src/auth/authorization-server-discovery.ts :14 import * as https from 'node:https'
  • net neverinfamous-memory-journal-mcp-f58eb15/src/auth/token-validator.ts :320 const response = await fetch(this.jwksUri, {
  • net neverinfamous-memory-journal-mcp-f58eb15/src/transports/http/server/legacy-sse.ts :4 import type { IncomingMessage, ServerResponse } from 'node:http'
  • net neverinfamous-memory-journal-mcp-f58eb15/src/transports/http/server/stateful.ts :6 import type { IncomingMessage, ServerResponse } from 'node:http'
  • net neverinfamous-memory-journal-mcp-f58eb15/src/transports/http/server/stateless.ts :4 import type { IncomingMessage, ServerResponse } from 'node:http'
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/test-server/scripts/test-http.mjs :3 const sidRes = await fetch(url + '/session', { method: 'POST' })
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/test-server/scripts/test-scheduler.mjs :38 const res = await fetch(BASE, {
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/auth.spec.ts :25 const response = await fetch(`${AUTH_BASE}/health`)
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/helpers.ts :219 const res = await fetch(`http://localhost:${port}/health`)
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/oauth-discovery.spec.ts :13 import { Server } from 'node:http'
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/oauth-scopes.spec.ts :17 import type { Server } from 'node:http'
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/payloads-team-happy.spec.ts :67 const res = await fetch(`${TEAM_BASE}/health`)
show 6 more
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/rate-limiting.spec.ts :53 const res = await fetch(`http://localhost:${RATE_PORT + 1}/health`)
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/resources-briefing-env.spec.ts :61 const res = await fetch(`${BRIEFING_BASE}/health`)
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/security.spec.ts :55 const response = await request.fetch('/mcp', {
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/session-advanced.spec.ts :32 const response = await fetch('http://localhost:3100/mcp', {
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/stateless.spec.ts :24 const response = await fetch(`${STATELESS_BASE}/mcp`, {
  • net (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/streaming.spec.ts :29 const response = await fetch(`${STREAM_BASE}/mcp`)

secrets 9

  • secrets (weak) neverinfamous-memory-journal-mcp-f58eb15/skills/gitlab/scripts/gitlab-client.ts :23 const token = process.env.GITLAB_API_TOKEN
  • secrets neverinfamous-memory-journal-mcp-f58eb15/src/github/github-integration/client.ts :29 const resolvedToken = token ?? process.env['GITHUB_TOKEN']
  • secrets neverinfamous-memory-journal-mcp-f58eb15/src/handlers/tools/codemode.ts :317 process.env['GITHUB_TOKEN']
  • secrets neverinfamous-memory-journal-mcp-f58eb15/src/server/mcp-server.ts :325 authEnabled: Boolean(options.authToken ?? process.env['MCP_AUTH_TOKEN']),
  • secrets neverinfamous-memory-journal-mcp-f58eb15/src/utils/github-helpers.ts :33 process.env['GITHUB_TOKEN']
  • secrets (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/e2e/payloads-github-degradation.spec.ts :25 const oldToken = process.env.GITHUB_TOKEN
  • secrets (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/github/client-issues-errors.test.ts :44 delete process.env['GITHUB_TOKEN']
  • secrets (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/github/github-integration.test.ts :82 delete process.env['GITHUB_TOKEN']
  • secrets (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/github/github-managers-branches.test.ts :48 delete process.env['GITHUB_TOKEN']

database 12

  • db neverinfamous-memory-journal-mcp-f58eb15/src/database/sqlite-adapter/entries/digest.ts :8 import type { Database } from 'better-sqlite3'
  • db neverinfamous-memory-journal-mcp-f58eb15/src/database/sqlite-adapter/entries/shared.ts :2 import type { Database } from 'better-sqlite3'
  • db neverinfamous-memory-journal-mcp-f58eb15/src/database/sqlite-adapter/native-connection.ts :1 import DatabaseAdapter from 'better-sqlite3'
  • db neverinfamous-memory-journal-mcp-f58eb15/src/database/sqlite-adapter/relationships.ts :1 import type { Database } from 'better-sqlite3'
  • db neverinfamous-memory-journal-mcp-f58eb15/src/database/sqlite-adapter/tags.ts :1 import type { Database } from 'better-sqlite3'
  • db (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/crud-workflow-branches.test.ts :10 import Database from 'better-sqlite3'
  • db (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/database-branches.test.ts :10 import Database from 'better-sqlite3'
  • db (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/digest.test.ts :9 import type { Database } from 'better-sqlite3'
  • db (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/entries-auth-branches.test.ts :12 import Database from 'better-sqlite3'
  • db (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/native-connection.test.ts :9 import type { Database } from 'better-sqlite3'
  • db (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/shared-helpers.test.ts :9 import Database from 'better-sqlite3'
  • db (weak) neverinfamous-memory-journal-mcp-f58eb15/tests/database/tags.test.ts :2 import Database from 'better-sqlite3'

install hooks 1

  • prepublishOnly neverinfamous-memory-journal-mcp-f58eb15/package.json :33 npm run check && npm run test && npm run build

declared dependencies 25

  • @modelcontextprotocol/sdk@^1.27.1
  • @huggingface/transformers@^4.0.1
  • @octokit/graphql@^9.0.3
  • @octokit/rest@^22.0.1
  • better-sqlite3@^12.8.0
  • commander@^15.0.0
  • express@^5.2.1
  • jose@^6.2.1
  • simple-git@^3.35.2
  • sqlite-vec@^0.1.7-alpha.2
  • zod@^4.3.6
  • @eslint/js@^10.0.1
show 13 more
  • @playwright/test@^1.59.1
  • @types/better-sqlite3@^7.6.13
  • @types/express@^5.0.6
  • @types/node@^25.6.0
  • @vitest/coverage-v8@^4.1.3
  • esbuild@^0.28.0
  • eslint@^10.2.0
  • globals@^17.4.0
  • tsup@^8.5.1
  • tsx@4.22.4
  • typescript@^6.0.2
  • typescript-eslint@^8.58.1
  • vitest@^4.1.3