preflight

https://github.com/ankimcp/anki-mcp-server

anki-mcp-server

Caution

Score 80 / 100 · 80 files read · 0 critical, 0 high, 2 medium, 11 low findings

Report 9694ff618a6aa51d · first scanned 2026-10-28 · scanned 1× · keyed to the exact package contents, so this link always shows this version

Subscores

credentials78
exfiltration92
execution92
injection100
obfuscation100
files100

100 is clean. Deductions come only from the cited findings below.

Findings

mediumCode contacts static.modelcontextprotocol.io, which the documentation never mentions
(package) · line 1 · rule M3
static.modelcontextprotocol.io
mediumRuns a command automatically at install time (prepare)
package.json · line 1 · rule M4
prepare: husky
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/__tests__/main-http.spec.ts · line 113 · rule L1
const originalEnv = process.env; beforeEach(() => { process.env = { ...originalEnv }; }); afterEach(() => {
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/app.module.spec.ts · line 220 · rule L1
const originalEnv = process.env; beforeEach(() => { process.env = { ...originalEnv }; }); afterEach(() => {
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/config/__tests__/config.factory.spec.ts · line 8 · rule L1
const originalEnv = process.env; beforeEach(() => { // Create a clean copy of process.env before each test process.env
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/config/config.factory.ts · line 22 · rule L1
CLI overrides with process.env * * CLI arguments override environment variables in memory. * Does NOT mutate process.env - ret
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/config/config.schema.ts · line 128 · rule L1
This function maps process.env to the shape expected by configSchema * * Note: Returns any instead of AppConfig because Zod wil
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/http/guards/__tests__/dns-rebinding.integration.spec.ts · line 137 · rule L1
nput() (which reads process.env) * and restored in afterEach so it cannot leak into other suites. */ describe("DNS-rebinding pro
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/http/guards/__tests__/origin-validation.guard.spec.ts · line 18 · rule L1
rd from the current process.env, exercising the same Zod config * path the app uses (ALLOWED_ORIGINS -> validated config.allowedO
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/main-http.ts · line 38 · rule L1
+ CLI overrides (no process.env mutation) const configInput = buildConfigInput({ port: options.port, host: options.host,
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/main-stdio.ts · line 49 · rule L1
+ CLI overrides (no process.env mutation) const configInput = buildConfigInput({ ankiConnect: cliOptions.ankiConnect, re
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/mcp/primitives/essential/resources/__tests__/system-info.resource.spec.ts · line 86 · rule L1
const originalEnv = process.env.NODE_ENV; delete process.env.NODE_ENV; const result = resource.getSystemInfo({ uri: "
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/mcp/primitives/essential/resources/system-info.resource.ts · line 26 · rule L1
{ NODE_ENV: process.env.NODE_ENV || "development", }, }; return { contents: [ { uri

Permission surface

Network endpoints
abc.ngrok.ioabc123.ngrok.ioanki.clianki.envanki.example.comanki.testankimcp.aiankiweb.netapi.example.comapp-example.comapp.example.comapps.ankiweb.netbadge.fury.ioclaude.aicustom.ankidashboard.ngrok.comdocs.nestjs.comevil.comexample.comgit.sr.htgithub.comjson-schema.orgmalicious.commalicious.sitemodelcontextprotocol.iongrok.comnodejs.orgopencode.airegistry.npmjs.orgsemver.orgstatic.modelcontextprotocol.iotest.comtunnel.ankimcp.aiwww.anthropic.comwww.cursor.comwww.npmjs.comwww.supermemo.comxyz789.ngrok.iozed.dev
Environment read
ALLOWED_ORIGINSANKI_CONNECT_API_KEYANKI_CONNECT_API_VERSIONANKI_CONNECT_TIMEOUTANKI_CONNECT_URLHOSTLOG_LEVELMCP_SERVER_NAMEMCP_SERVER_VERSIONNODE_ENVPORTTUNNEL_AUTH_CLIENT_IDTUNNEL_SERVER_URLTZ
Shell execution
yes — code or scripts can run shell commands
Install hooks
prepare: husky
Credential material
Reads named environment variables (normal for API keys; listed in the permission summary)

Provenance

Source
GitHub
Repository
ankimcp/anki-mcp-server
Owner
ankimcp
Stars
537
Forks
39
Repo created
2025-09-29
Last push
2026-10-22
License
MIT

Badge for the author

Preflight grade

[![Preflight: Caution](https://preflight.orbitaldeskllc.com/badge/9694ff618a6aa51d.svg)](https://preflight.orbitaldeskllc.com/b/9694ff618a6aa51d)

The badge links back to this report and updates if the package is re-scanned at a new version.

Watch this package

Interest list only. We store the address and this report link, nothing else. No mail is sent in v1.

Share this report: https://preflight.orbitaldeskllc.com/r/9694ff618a6aa51d