{ "name": "@ankimcp/anki-mcp-server", "mcpName": "ai.ankimcp/anki-mcp-server", "version": "0.19.2", "description": "Model Context Protocol server for Anki - enables AI assistants to interact with your Anki flashcards", "author": "Anatoly Tarnavsky", "private": false, "license": "MIT", "main": "dist/main-http.js", "bin": { "ankimcp": "bin/ankimcp.js", "anki-mcp-server": "bin/ankimcp.js" }, "scripts": { "build": "nest build", "prebuild": "npm run generate:icon", "generate:icon": "node scripts/generate-icon.mjs", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start:dev:stdio": "nest start --watch --entryFile main-stdio", "start:dev:http": "nest start --watch --entryFile main-http", "start:dev:tunnel": "nest start --watch --entryFile main-tunnel -- --tunnel --debug", "start:debug:stdio": "nest start --debug --watch --entryFile main-stdio", "start:debug:http": "nest start --debug --watch --entryFile main-http", "start:prod:stdio": "node dist/main-stdio", "start:prod:http": "node dist/main-http", "lint": "eslint \"{src,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:unit": "jest --testPathPatterns='spec\\.ts$' --silent", "test:tools": "jest src/mcp/primitives/essential/tools/__tests__ --silent", "test:workflows": "jest test/workflows --silent", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:ci": "jest --coverage --silent --maxWorkers=2", "test:single": "npm test -- src/mcp/primitives/essential/tools/__tests__/delete-notes.tool.spec.ts", "e2e:up": "cd .docker && docker compose up -d", "e2e:down": "cd .docker && docker compose down", "e2e:logs": "cd .docker && docker compose logs -f", "e2e:test": "jest --config test/e2e/jest-e2e.config.js", "e2e:test:http": "jest --config test/e2e/jest-e2e.config.js --testPathPatterns='http\\.e2e-spec'", "e2e:test:stdio": "jest --config test/e2e/jest-e2e.config.js --testPathPatterns='stdio\\.e2e-spec'", "e2e:full:local": "./scripts/e2e-full.sh", "type-check": "tsc --noEmit", "clean": "rm -rf dist dist-stdio dist-http node_modules", "inspector:stdio": "./node_modules/.bin/mcp-inspector --config mcp-inspector-config.json --server stdio-server", "inspector:stdio:debug": "./node_modules/.bin/mcp-inspector --config mcp-inspector-config.json --server stdio-server-debug", "inspector:http": "./node_modules/.bin/mcp-inspector --config mcp-inspector-config.json --server http-server", "sync-version": "node scripts/sync-version.js", "mcpb:clean": "rm -f *.mcpb", "mcpb:bundle": "npm run sync-version && npm run mcpb:clean && npm run build && mcpb pack . \"anki-mcp-server-$npm_package_version.mcpb\" && mcpb clean \"anki-mcp-server-$npm_package_version.mcpb\"", "pack:local": "rm -f *.tgz && npm run build && npm pack", "install:local": "npm install -g ./ankimcp-anki-mcp-server-*.tgz", "install:npm": "npm install -g @ankimcp/anki-mcp-server@tunnel", "uninstall:local": "npm uninstall -g @ankimcp/anki-mcp-server", "upgrade:interactive": "npx npm-check-updates -i", "prepare": "husky" }, "dependencies": { "@modelcontextprotocol/sdk": "1.29.0", "@nestjs/common": "^11.1.24", "@nestjs/config": "^4.0.4", "@nestjs/core": "11.1.24", "@nestjs/jwt": "^11.0.2", "@nestjs/passport": "^11.0.5", "@nestjs/platform-express": "^11.1.24", "@rekog/mcp-nest": "^1.9.10", "commander": "^15.0.0", "ipaddr.js": "^2.4.0", "jsonwebtoken": "^9.0.3", "ky": "^2.0.2", "mime": "^4.1.0", "passport": "^0.7.0", "passport-jwt": "^4.0.1", "pino": "^10.3.1", "pino-pretty": "^13.1.3", "reflect-metadata": "^0.2.2", "remark-parse": "^11.0.0", "rxjs": "^7.8.2", "unified": "^11.0.5", "unist-util-visit": "^5.1.0", "update-notifier": "^7.3.1", "ws": "^8.21.0", "zod": "^4.4.3", "zod-to-json-schema": "^3.25.2" }, "devDependencies": { "@anthropic-ai/mcpb": "^2.1.2", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "^10.0.1", "@modelcontextprotocol/inspector": "^0.21.2", "@nestjs/cli": "^11.0.21", "@nestjs/schematics": "^11.1.0", "@nestjs/testing": "^11.1.24", "@types/express": "^5.0.6", "@types/jest": "^30.0.0", "@types/jsonwebtoken": "^9.0.10", "@types/mdast": "^4.0.4", "@types/node": "^25.9.1", "@types/supertest": "^7.2.0", "@types/update-notifier": "^6.0.8", "@types/ws": "^8.18.1", "eslint": "^10.4.1", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.6", "globals": "^17.6.0", "husky": "^9.1.7", "jest": "^30.4.2", "prettier": "^3.8.3", "sharp": "^0.34.5", "source-map-support": "^0.5.21", "supertest": "^7.2.2", "ts-jest": "^29.4.11", "ts-loader": "^9.6.0", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", "typescript": "^6.0.3", "typescript-eslint": "^8.60.1" }, "jest": { "moduleFileExtensions": [ "js", "json", "ts" ], "rootDir": ".", "roots": [ "/src", "/test" ], "testRegex": ".*\\.(spec|test)\\.ts$", "transform": { "^.+\\.(t|j)s$": "ts-jest" }, "collectCoverageFrom": [ "src/**/*.(t|j)s", "!src/**/*.spec.ts", "!src/**/*.test.ts", "!src/**/__tests__/**", "!src/**/__mocks__/**", "!src/test-fixtures/**", "!src/main.ts", "!src/main-stdio.ts", "!src/main-http.ts", "!src/**/index.ts" ], "coverageDirectory": "coverage", "testEnvironment": "node", "coverageThreshold": { "global": { "branches": 70, "functions": 70, "lines": 70, "statements": 70 } }, "moduleNameMapper": { "^@/(.*)$": "/src/$1", "^@test/(.*)$": "/test/$1" }, "transformIgnorePatterns": [ "node_modules/(?!(commander|ky|mime|unified|remark-parse|unist-util-visit|mdast-util-to-string|micromark.*|decode-named-character-reference|character-entities|unist-.*|vfile.*|bail|is-plain-obj|trough|devlop|mdast.*|hast.*)/)" ], "modulePathIgnorePatterns": [ "/dist", "/dist-stdio", "/dist-http" ], "forceExit": true }, "packageManager": "npm@11.16.0", "engines": { "node": ">=22.12.0" }, "repository": { "type": "git", "url": "https://github.com/ankimcp/anki-mcp-server.git" }, "bugs": { "url": "https://github.com/ankimcp/anki-mcp-server/issues" }, "homepage": "https://ankimcp.ai", "keywords": [ "mcp", "model-context-protocol", "anki", "flashcards", "spaced-repetition", "ai", "claude", "chatgpt", "ankiconnect" ], "files": [ "dist", "bin", "README.md", "LICENSE", "package.json" ] }