mseep-mcp-memory-service@6.13.4
CAUTION· not startedPublisher claims: "Universal MCP memory service with semantic search, multi-client support, and autonomous consolidation for Claude Desktop, VS Code, and 13+ AI applications" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Not started: dependency install failed; the server itself was not observed.- Tested
- the dependency install step · every file read, file written and host contacted by what ran
- Not tested
- server startup · the tool list · tool behavior
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
CLOUDFLARE_API_TOKENMCP_API_KEYTOKENIZERS_PARALLELISMConfiguration, not credentials: BACKUP_PATH, BACKUPS_PATH, CHROMA_DB_PATH, CLAUDE_DESKTOP, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_BASE_DELAY, CLOUDFLARE_D1_DATABASE_ID, CLOUDFLARE_EMBEDDING_MODEL, CLOUDFLARE_LARGE_CONTENT_THRESHOLD, CLOUDFLARE_MAX_RETRIES, CLOUDFLARE_R2_BUCKET, CLOUDFLARE_VECTORIZE_INDEX, CUDA_HOME, CUDA_LAUNCH_BLOCKING, CUDA_PATH, DB_PATH, DEBUG_MODE, DOCKER_CONTAINER, HF_HOME, HF_HUB_OFFLINE, HSA_OVERRIDE_GFX_VERSION, ITEM_PATH, LM_STUDIO, MCP_ASSOCIATION_MAX_PAIRS, MCP_ASSOCIATION_MAX_SIMILARITY, MCP_ASSOCIATION_MIN_SIMILARITY, MCP_ASSOCIATIONS_ENABLED, MCP_CLUSTERING_ALGORITHM, MCP_CLUSTERING_ENABLED, MCP_CLUSTERING_MIN_SIZE, MCP_COMPRESSION_ENABLED, MCP_COMPRESSION_MAX_LENGTH, MCP_COMPRESSION_PRESERVE_ORIGINALS, MCP_CONSOLIDATION_ENABLED, MCP_CORS_ORIGINS, MCP_DECAY_ENABLED, MCP_EMBEDDING_MODEL- Where it talks to
- no vendor host named in the codeAlso memory.local, pytorch.org, claude.ai — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names memory.local, pytorch.org, claude.ai as well as its own vendor. The guard injects CLOUDFLARE_API_TOKEN, MCP_API_KEY, TOKENIZERS_PARALLELISM only into requests to the host you bind (and its subdomains) and refuses the rest.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-12 and scored it 73/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Privileged sudo command; Privileged sudo command; Privileged sudo command. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
sudo systemctl stop mcp-http-dashboard 2>/dev/null || trueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo systemctl stop mcp-memory 2>/dev/null || trueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo systemctl stop mcp-memoryFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo rm -f /etc/systemd/system/{SERVICE_NAME}.serviceFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo cp /tmp/fastmcp-server-with-mdns.service /etc/systemd/system/mcp-memory.serviceFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo systemctl start mcp-memoryFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.(r'.*\.env.*', 'Environment file'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.sudo systemctl daemon-reloadFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.systemctl_cmd = "sudo systemctl"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo cp mcp-memory.service /etc/systemd/system/Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo = ""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo chmod 644 /etc/systemd/system/mcp-memory.serviceFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo cp /tmp/mcp-http-dashboard.service /etc/systemd/system/mcp-http-dashboard.serviceFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo systemctl daemon-reloadFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo systemctl start $SERVICE_NAMEFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.print("Please run with sudo or use --user for user-level installation")Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.sudo systemctl daemon-reloadFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.subprocess.run(['launchctl', 'unload', str(plist_file)], capture_output=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.echo " sudo systemctl status mcp-memory"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.self.process = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.sudo rm -f /etc/systemd/system/$SERVICE_NAME.serviceFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.server_process = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.self.process = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.sudo = "sudo "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run(cmd, capture_output=True, text=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(['launchctl', 'load', '-w', str(plist_file)], capture_output=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(['sudo', 'chmod', '644', str(service_file)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.sudo systemctl stop $SERVICE_NAMEFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo systemctl status $SERVICE_NAME --no-pagerFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo = ""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run(command, shell=True, capture_output=True, text=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.print(f" sudo {' '.join(sys.argv)}")Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo cp mcp-memory.service /etc/systemd/system/Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.subprocess.run(['sudo', 'systemctl', 'daemon-reload'], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.sudo systemctl restart $SERVICE_NAMEFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.subprocess.run(['sudo', 'cp', tmp_path, str(service_file)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.echo " sudo systemctl start mcp-memory"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo systemctl status $SERVICE_NAME --no-pagerFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo chmod 644 /etc/systemd/system/mcp-memory.serviceFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.result = subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.sudo chmod 644 /etc/systemd/system/mcp-memory.serviceFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.subprocess.run(['systemctl', '--user', 'daemon-reload'], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.chmod +x "$BACKUP_SCRIPT"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.chmod +x scripts/uv-lock-merge.shFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.rocm_output = subprocess.check_output(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.memory_cmd = subprocess.check_output(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(cmd, check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.nvcc_output = subprocess.check_output(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.output = subprocess.check_output(['sysctl', '-n', 'hw.memsize']).decode('utf-8').strip()Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(cmd, check=False, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.sudo chmod 644 /etc/systemd/system/mcp-memory.serviceFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run([sys.executable, '-m', 'uv', '--version'],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.nvcc_output = subprocess.check_output([os.path.join(cuda_path, 'bin', 'nvcc'), '--version'],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.nvcc_output = subprocess.check_output([os.path.join(path, 'bin', 'nvcc'), '--version'],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.rocm_output = subprocess.check_output(['rocminfo'],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(cmd, check=False)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.nvcc_output = subprocess.check_output(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.gpu_output = subprocess.check_output(['powershell', '-Command', ps_cmd],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.BASE_URL = "http://10.0.1.30:8000"Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.gpu_output = subprocess.check_output(['powershell', '-Command', ps_cmd],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for mseep-mcp-memory-service@6.13.4 as of 2d ago. This is the package itself, not its dependencies.
What would make this Verified
7 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim mseep-support: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Destructive file system command detected≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.