@iantay/anki-mcp-server
Version:
A Model Context Protocol (MCP) server that enables LLMs to interact with Anki flashcard software through AnkiConnect
90 lines • 3.06 kB
JSON
{
"name": "@iantay/anki-mcp-server",
"version": "0.1.30",
"mcpName": "io.github.nailuoGG/anki-mcp-server",
"description": "A Model Context Protocol (MCP) server that enables LLMs to interact with Anki flashcard software through AnkiConnect",
"type": "module",
"bin": {
"@iantay/anki-mcp-server": "dist/index.js"
},
"files": [
"dist"
],
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx}": [
"biome format --write",
"git add"
],
"src/**/*.test.ts": [
"biome format --write",
"git add"
]
},
"dependencies": {
"@modelcontextprotocol/sdk": "1.25.1",
"axios": "1.13.2",
"yanki-connect": "3.2.2"
},
"devDependencies": {
"@anthropic-ai/mcpb": "2.1.2",
"@biomejs/biome": "2.3.10",
"@jest/globals": "30.2.0",
"@types/jest": "30.0.0",
"@types/node": "25.0.3",
"axios-mock-adapter": "2.1.0",
"husky": "^9.1.7",
"jest": "30.2.0",
"lint-staged": "^16.2.7",
"ts-jest": "29.4.6",
"ts-node": "^10.9.2",
"tsup": "8.5.1",
"typescript": "5.9.3"
},
"main": "dist/index.js",
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
}
},
"keywords": [
"anki",
"mcp",
"llm",
"flashcards",
"ankiconnect",
"model-context-protocol"
],
"author": "nailuoGG",
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/nailuoGG/anki-mcp-server.git"
},
"bugs": {
"url": "https://github.com/nailuoGG/anki-mcp-server/issues"
},
"homepage": "https://github.com/nailuoGG/anki-mcp-server#readme",
"engines": {
"node": ">=18.0.0"
},
"publishConfig": {
"access": "public"
},
"scripts": {
"prebuild": "node -p \"'export const MCP_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/_version.ts",
"build": "tsup",
"watch": "tsup --watch",
"mcpb": "npm run build && mcpb pack",
"validate-mcp": "curl -o server.schema.json https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json && node -e \"const Ajv = require('ajv'); const fs = require('fs'); const ajv = new Ajv({allErrors: true, verbose: true}); const schema = JSON.parse(fs.readFileSync('server.schema.json', 'utf8')); const data = JSON.parse(fs.readFileSync('server.json', 'utf8')); const validate = ajv.compile(schema); const valid = validate(data); if (!valid) { console.log('Validation errors:', validate.errors); process.exit(1); } else { console.log('✅ server.json is valid!'); }\" && rm server.schema.json",
"format": "biome format . --write",
"lint": "biome lint src/",
"check": "biome check --apply .",
"inspector": "npx @modelcontextprotocol/inspector dist/index.js",
"test": "jest --runInBand --detectOpenHandles",
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch",
"test:coverage": "NODE_OPTIONS=--experimental-vm-modules jest --coverage",
"test:language": "node test-language.js",
"publish:scoped": "node scripts/publish-scoped.js"
}
}