@ankimcp/anki-mcp-server 0.15.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +659 -5
- package/README.md +48 -13
- package/dist/app.module.js +3 -0
- package/dist/app.module.js.map +1 -1
- package/dist/mcp/mcp-icons.d.ts +2 -0
- package/dist/mcp/mcp-icons.js +11 -0
- package/dist/mcp/mcp-icons.js.map +1 -0
- package/dist/mcp/primitives/essential/index.d.ts +25 -7
- package/dist/mcp/primitives/essential/index.js +49 -13
- package/dist/mcp/primitives/essential/index.js.map +1 -1
- package/dist/mcp/primitives/essential/prompts/twenty-rules.prompt/content.md +2 -2
- package/dist/mcp/primitives/essential/tools/add-note.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/add-note.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/add-note.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/add-notes.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/add-notes.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/add-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/{tagActions/tagActions.tool.d.ts → add-tags.tool.d.ts} +6 -9
- package/dist/mcp/primitives/essential/tools/add-tags.tool.js +85 -0
- package/dist/mcp/primitives/essential/tools/add-tags.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/change-deck.tool.d.ts +107 -0
- package/dist/mcp/primitives/essential/tools/change-deck.tool.js +79 -0
- package/dist/mcp/primitives/essential/tools/change-deck.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.d.ts +104 -0
- package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.js +68 -0
- package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.types.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/create-deck.tool.d.ts +106 -0
- package/dist/mcp/primitives/essential/tools/create-deck.tool.js +78 -0
- package/dist/mcp/primitives/essential/tools/create-deck.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/create-model.tool.d.ts +3 -2
- package/dist/mcp/primitives/essential/tools/create-model.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/create-model.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/{deckActions/deckActions.tool.d.ts → deck-stats.tool.d.ts} +5 -12
- package/dist/mcp/primitives/essential/tools/deck-stats.tool.js +108 -0
- package/dist/mcp/primitives/essential/tools/deck-stats.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/deckActions/actions/changeDeck.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/deckActions/actions/createDeck.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/deckActions/actions/deckStats.action.d.ts +2 -2
- package/dist/mcp/primitives/essential/tools/deckActions/actions/listDecks.action.d.ts +2 -2
- package/dist/mcp/primitives/essential/tools/delete-media-file.tool.d.ts +106 -0
- package/dist/mcp/primitives/essential/tools/delete-media-file.tool.js +73 -0
- package/dist/mcp/primitives/essential/tools/delete-media-file.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/delete-notes.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/delete-notes.tool.js +2 -1
- package/dist/mcp/primitives/essential/tools/delete-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/find-notes.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/find-notes.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/find-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-cards.tool.d.ts +3 -2
- package/dist/mcp/primitives/essential/tools/get-cards.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/get-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.d.ts +3 -2
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.d.ts +106 -0
- package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.js +76 -0
- package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/get-tags.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/get-tags.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/get-tags.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/list-decks.tool.d.ts +106 -0
- package/dist/mcp/primitives/essential/tools/list-decks.tool.js +96 -0
- package/dist/mcp/primitives/essential/tools/list-decks.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/getMediaFilesNames.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/model-field-names.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/model-field-names.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/model-field-names.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/model-names.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/model-names.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/model-names.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/model-styling.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/model-styling.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/model-styling.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/notes-info.tool.d.ts +3 -2
- package/dist/mcp/primitives/essential/tools/notes-info.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/notes-info.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/present-card.tool.d.ts +3 -2
- package/dist/mcp/primitives/essential/tools/present-card.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/present-card.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/rate-card.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/rate-card.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/rate-card.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/remove-tags.tool.d.ts +107 -0
- package/dist/mcp/primitives/essential/tools/remove-tags.tool.js +85 -0
- package/dist/mcp/primitives/essential/tools/remove-tags.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/replace-tags.tool.d.ts +108 -0
- package/dist/mcp/primitives/essential/tools/replace-tags.tool.js +92 -0
- package/dist/mcp/primitives/essential/tools/replace-tags.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.d.ts +106 -0
- package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.js +75 -0
- package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.types.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/{mediaActions/mediaActions.tool.d.ts → store-media-file.tool.d.ts} +5 -8
- package/dist/mcp/primitives/essential/tools/store-media-file.tool.js +92 -0
- package/dist/mcp/primitives/essential/tools/store-media-file.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/sync.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/sync.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/sync.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/tagActions/actions/addTags.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/tagActions/actions/clearUnusedTags.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/tagActions/actions/removeTags.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/tagActions/actions/replaceTags.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/update-model-styling.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/update-note-fields.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js +3 -1
- package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-browse.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-browse.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-browse.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-current-card.tool.d.ts +3 -2
- package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-select-card.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-show-question.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-undo.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-undo.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-undo.tool.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +21 -18
- package/dist/mcp/primitives/essential/tools/deckActions/deckActions.tool.js +0 -210
- package/dist/mcp/primitives/essential/tools/deckActions/deckActions.tool.js.map +0 -1
- package/dist/mcp/primitives/essential/tools/deckActions/index.d.ts +0 -5
- package/dist/mcp/primitives/essential/tools/deckActions/index.js +0 -6
- package/dist/mcp/primitives/essential/tools/deckActions/index.js.map +0 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/index.d.ts +0 -5
- package/dist/mcp/primitives/essential/tools/mediaActions/index.js +0 -6
- package/dist/mcp/primitives/essential/tools/mediaActions/index.js.map +0 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.js +0 -156
- package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.js.map +0 -1
- package/dist/mcp/primitives/essential/tools/tagActions/index.d.ts +0 -5
- package/dist/mcp/primitives/essential/tools/tagActions/index.js +0 -6
- package/dist/mcp/primitives/essential/tools/tagActions/index.js.map +0 -1
- package/dist/mcp/primitives/essential/tools/tagActions/tagActions.tool.js +0 -153
- package/dist/mcp/primitives/essential/tools/tagActions/tagActions.tool.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankimcp/anki-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Model Context Protocol server for Anki - enables AI assistants to interact with your Anki flashcards",
|
|
5
5
|
"author": "Anatoly Tarnavsky",
|
|
6
6
|
"private": false,
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
},
|
|
13
13
|
"scripts": {
|
|
14
14
|
"build": "nest build",
|
|
15
|
+
"prebuild": "npm run generate:icon",
|
|
16
|
+
"generate:icon": "node scripts/generate-icon.mjs",
|
|
15
17
|
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
16
18
|
"start:dev:stdio": "nest start --watch --entryFile main-stdio",
|
|
17
19
|
"start:dev:http": "nest start --watch --entryFile main-http",
|
|
@@ -51,14 +53,14 @@
|
|
|
51
53
|
"prepare": "husky"
|
|
52
54
|
},
|
|
53
55
|
"dependencies": {
|
|
54
|
-
"@modelcontextprotocol/sdk": "1.
|
|
55
|
-
"@nestjs/common": "^11.1.
|
|
56
|
-
"@nestjs/config": "^4.0.
|
|
57
|
-
"@nestjs/core": "
|
|
56
|
+
"@modelcontextprotocol/sdk": "1.29.0",
|
|
57
|
+
"@nestjs/common": "^11.1.19",
|
|
58
|
+
"@nestjs/config": "^4.0.4",
|
|
59
|
+
"@nestjs/core": "11.1.19",
|
|
58
60
|
"@nestjs/jwt": "^11.0.2",
|
|
59
61
|
"@nestjs/passport": "^11.0.5",
|
|
60
|
-
"@nestjs/platform-express": "^11.1.
|
|
61
|
-
"@rekog/mcp-nest": "^1.9.
|
|
62
|
+
"@nestjs/platform-express": "^11.1.19",
|
|
63
|
+
"@rekog/mcp-nest": "^1.9.9",
|
|
62
64
|
"commander": "^14.0.3",
|
|
63
65
|
"ipaddr.js": "^2.3.0",
|
|
64
66
|
"jsonwebtoken": "^9.0.3",
|
|
@@ -81,32 +83,33 @@
|
|
|
81
83
|
"@anthropic-ai/mcpb": "^2.1.2",
|
|
82
84
|
"@eslint/eslintrc": "^3.3.5",
|
|
83
85
|
"@eslint/js": "^10.0.1",
|
|
84
|
-
"@modelcontextprotocol/inspector": "^0.21.
|
|
85
|
-
"@nestjs/cli": "^11.0.
|
|
86
|
-
"@nestjs/schematics": "^11.0
|
|
87
|
-
"@nestjs/testing": "^11.1.
|
|
86
|
+
"@modelcontextprotocol/inspector": "^0.21.2",
|
|
87
|
+
"@nestjs/cli": "^11.0.21",
|
|
88
|
+
"@nestjs/schematics": "^11.1.0",
|
|
89
|
+
"@nestjs/testing": "^11.1.19",
|
|
88
90
|
"@types/express": "^5.0.6",
|
|
89
91
|
"@types/jest": "^30.0.0",
|
|
90
92
|
"@types/jsonwebtoken": "^9.0.10",
|
|
91
93
|
"@types/mdast": "^4.0.4",
|
|
92
|
-
"@types/node": "^25.
|
|
94
|
+
"@types/node": "^25.6.0",
|
|
93
95
|
"@types/supertest": "^7.2.0",
|
|
94
96
|
"@types/update-notifier": "^6.0.8",
|
|
95
|
-
"eslint": "^10.1
|
|
97
|
+
"eslint": "^10.2.1",
|
|
96
98
|
"eslint-config-prettier": "^10.1.8",
|
|
97
99
|
"eslint-plugin-prettier": "^5.5.5",
|
|
98
|
-
"globals": "^17.
|
|
100
|
+
"globals": "^17.5.0",
|
|
99
101
|
"husky": "^9.1.7",
|
|
100
102
|
"jest": "^30.3.0",
|
|
101
|
-
"prettier": "^3.8.
|
|
103
|
+
"prettier": "^3.8.3",
|
|
104
|
+
"sharp": "^0.34.5",
|
|
102
105
|
"source-map-support": "^0.5.21",
|
|
103
106
|
"supertest": "^7.2.2",
|
|
104
|
-
"ts-jest": "^29.4.
|
|
105
|
-
"ts-loader": "^9.5.
|
|
107
|
+
"ts-jest": "^29.4.9",
|
|
108
|
+
"ts-loader": "^9.5.7",
|
|
106
109
|
"ts-node": "^10.9.2",
|
|
107
110
|
"tsconfig-paths": "^4.2.0",
|
|
108
111
|
"typescript": "^5.9.3",
|
|
109
|
-
"typescript-eslint": "^8.
|
|
112
|
+
"typescript-eslint": "^8.59.0"
|
|
110
113
|
},
|
|
111
114
|
"jest": {
|
|
112
115
|
"moduleFileExtensions": [
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
var DeckActionsTool_1;
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.DeckActionsTool = void 0;
|
|
14
|
-
const common_1 = require("@nestjs/common");
|
|
15
|
-
const mcp_nest_1 = require("@rekog/mcp-nest");
|
|
16
|
-
const zod_1 = require("zod");
|
|
17
|
-
const anki_connect_client_1 = require("../../../../clients/anki-connect.client");
|
|
18
|
-
const anki_utils_1 = require("../../../../utils/anki.utils");
|
|
19
|
-
const changeDeck_action_1 = require("./actions/changeDeck.action");
|
|
20
|
-
const listDecks_action_1 = require("./actions/listDecks.action");
|
|
21
|
-
const createDeck_action_1 = require("./actions/createDeck.action");
|
|
22
|
-
const deckStats_action_1 = require("./actions/deckStats.action");
|
|
23
|
-
let DeckActionsTool = DeckActionsTool_1 = class DeckActionsTool {
|
|
24
|
-
ankiClient;
|
|
25
|
-
logger = new common_1.Logger(DeckActionsTool_1.name);
|
|
26
|
-
constructor(ankiClient) {
|
|
27
|
-
this.ankiClient = ankiClient;
|
|
28
|
-
}
|
|
29
|
-
async execute(params, context) {
|
|
30
|
-
try {
|
|
31
|
-
this.logger.log(`Executing deck action: ${params.action}`);
|
|
32
|
-
let result;
|
|
33
|
-
switch (params.action) {
|
|
34
|
-
case "listDecks":
|
|
35
|
-
await context.reportProgress({ progress: 10, total: 100 });
|
|
36
|
-
result = await (0, listDecks_action_1.listDecks)({ includeStats: params.includeStats }, this.ankiClient);
|
|
37
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
38
|
-
break;
|
|
39
|
-
case "createDeck":
|
|
40
|
-
if (!params.deckName) {
|
|
41
|
-
throw new Error("deckName is required for createDeck action");
|
|
42
|
-
}
|
|
43
|
-
await context.reportProgress({ progress: 25, total: 100 });
|
|
44
|
-
result = await (0, createDeck_action_1.createDeck)({ deckName: params.deckName }, this.ankiClient);
|
|
45
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
46
|
-
break;
|
|
47
|
-
case "deckStats":
|
|
48
|
-
if (!params.deck) {
|
|
49
|
-
throw new Error("deck name is required for deckStats action");
|
|
50
|
-
}
|
|
51
|
-
await context.reportProgress({ progress: 10, total: 100 });
|
|
52
|
-
result = await (0, deckStats_action_1.deckStats)({
|
|
53
|
-
deck: params.deck,
|
|
54
|
-
easeBuckets: params.easeBuckets,
|
|
55
|
-
intervalBuckets: params.intervalBuckets,
|
|
56
|
-
}, this.ankiClient, async (progress) => {
|
|
57
|
-
await context.reportProgress({ progress, total: 100 });
|
|
58
|
-
});
|
|
59
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
60
|
-
break;
|
|
61
|
-
case "changeDeck":
|
|
62
|
-
if (!params.cards || params.cards.length === 0) {
|
|
63
|
-
throw new Error("cards array is required for changeDeck action");
|
|
64
|
-
}
|
|
65
|
-
if (!params.deck) {
|
|
66
|
-
throw new Error("deck name is required for changeDeck action");
|
|
67
|
-
}
|
|
68
|
-
await context.reportProgress({ progress: 25, total: 100 });
|
|
69
|
-
result = await (0, changeDeck_action_1.changeDeck)({ cards: params.cards, deck: params.deck }, this.ankiClient);
|
|
70
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
71
|
-
break;
|
|
72
|
-
default: {
|
|
73
|
-
const _exhaustive = params.action;
|
|
74
|
-
throw new Error(`Unknown action: ${_exhaustive}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
this.logger.log(`Successfully executed ${params.action}`);
|
|
78
|
-
return result;
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
this.logger.error(`Failed to execute ${params.action}`, error);
|
|
82
|
-
return (0, anki_utils_1.createErrorResponse)(error, {
|
|
83
|
-
action: params.action,
|
|
84
|
-
hint: "Make sure Anki is running and the deck name/card IDs are valid",
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
exports.DeckActionsTool = DeckActionsTool;
|
|
90
|
-
__decorate([
|
|
91
|
-
(0, mcp_nest_1.Tool)({
|
|
92
|
-
name: "deckActions",
|
|
93
|
-
description: `Manage Anki deck operations. Supports four actions:
|
|
94
|
-
- listDecks: List all decks, optionally with statistics (includeStats: boolean)
|
|
95
|
-
- createDeck: Create a new empty deck (deckName: string, max 2 levels like "Parent::Child")
|
|
96
|
-
- deckStats: Get comprehensive statistics for a single deck including card counts, ease and interval distributions (deck: string, optional easeBuckets/intervalBuckets arrays)
|
|
97
|
-
- changeDeck: Move cards to a different deck (cards: number[], deck: string)
|
|
98
|
-
|
|
99
|
-
Remember to sync first at the start of a session for latest data.`,
|
|
100
|
-
parameters: zod_1.z.object({
|
|
101
|
-
action: zod_1.z
|
|
102
|
-
.enum(["listDecks", "createDeck", "deckStats", "changeDeck"])
|
|
103
|
-
.describe("The deck action to perform"),
|
|
104
|
-
includeStats: zod_1.z
|
|
105
|
-
.boolean()
|
|
106
|
-
.optional()
|
|
107
|
-
.describe("[listDecks] Include card count statistics for each deck"),
|
|
108
|
-
deckName: zod_1.z
|
|
109
|
-
.string()
|
|
110
|
-
.optional()
|
|
111
|
-
.describe('[createDeck] The name of the deck to create. Use "::" for parent::child structure (max 2 levels)'),
|
|
112
|
-
deck: zod_1.z
|
|
113
|
-
.string()
|
|
114
|
-
.optional()
|
|
115
|
-
.describe('[deckStats/changeDeck] Deck name (e.g., "Japanese::JLPT N5")'),
|
|
116
|
-
easeBuckets: zod_1.z
|
|
117
|
-
.array(zod_1.z.number().positive())
|
|
118
|
-
.max(20)
|
|
119
|
-
.optional()
|
|
120
|
-
.describe("[deckStats] Bucket boundaries for ease factor distribution. Default: [2.0, 2.5, 3.0]"),
|
|
121
|
-
intervalBuckets: zod_1.z
|
|
122
|
-
.array(zod_1.z.number().positive())
|
|
123
|
-
.max(20)
|
|
124
|
-
.optional()
|
|
125
|
-
.describe("[deckStats] Bucket boundaries for interval distribution in days. Default: [7, 21, 90]"),
|
|
126
|
-
cards: zod_1.z
|
|
127
|
-
.array(zod_1.z.number())
|
|
128
|
-
.optional()
|
|
129
|
-
.describe("[changeDeck] Array of card IDs to move"),
|
|
130
|
-
}),
|
|
131
|
-
outputSchema: zod_1.z.object({
|
|
132
|
-
success: zod_1.z.boolean(),
|
|
133
|
-
decks: zod_1.z
|
|
134
|
-
.array(zod_1.z.object({
|
|
135
|
-
name: zod_1.z.string(),
|
|
136
|
-
stats: zod_1.z
|
|
137
|
-
.object({
|
|
138
|
-
deck_id: zod_1.z.number(),
|
|
139
|
-
name: zod_1.z.string(),
|
|
140
|
-
new_count: zod_1.z.number(),
|
|
141
|
-
learn_count: zod_1.z.number(),
|
|
142
|
-
review_count: zod_1.z.number(),
|
|
143
|
-
total_new: zod_1.z.number(),
|
|
144
|
-
total_cards: zod_1.z.number(),
|
|
145
|
-
})
|
|
146
|
-
.optional(),
|
|
147
|
-
}))
|
|
148
|
-
.optional(),
|
|
149
|
-
total: zod_1.z.number().optional(),
|
|
150
|
-
summary: zod_1.z
|
|
151
|
-
.object({
|
|
152
|
-
total_cards: zod_1.z.number(),
|
|
153
|
-
new_cards: zod_1.z.number(),
|
|
154
|
-
learning_cards: zod_1.z.number(),
|
|
155
|
-
review_cards: zod_1.z.number(),
|
|
156
|
-
})
|
|
157
|
-
.optional(),
|
|
158
|
-
message: zod_1.z.string().optional(),
|
|
159
|
-
deckId: zod_1.z.number().optional(),
|
|
160
|
-
deckName: zod_1.z.string().optional(),
|
|
161
|
-
created: zod_1.z.boolean().optional(),
|
|
162
|
-
exists: zod_1.z.boolean().optional(),
|
|
163
|
-
parentDeck: zod_1.z.string().optional(),
|
|
164
|
-
childDeck: zod_1.z.string().optional(),
|
|
165
|
-
deck: zod_1.z.string().optional(),
|
|
166
|
-
counts: zod_1.z
|
|
167
|
-
.object({
|
|
168
|
-
total: zod_1.z.number(),
|
|
169
|
-
new: zod_1.z.number(),
|
|
170
|
-
learning: zod_1.z.number(),
|
|
171
|
-
review: zod_1.z.number(),
|
|
172
|
-
})
|
|
173
|
-
.optional(),
|
|
174
|
-
ease: zod_1.z
|
|
175
|
-
.object({
|
|
176
|
-
mean: zod_1.z.number(),
|
|
177
|
-
median: zod_1.z.number(),
|
|
178
|
-
min: zod_1.z.number(),
|
|
179
|
-
max: zod_1.z.number(),
|
|
180
|
-
count: zod_1.z.number(),
|
|
181
|
-
buckets: zod_1.z.record(zod_1.z.string(), zod_1.z.number()),
|
|
182
|
-
})
|
|
183
|
-
.optional(),
|
|
184
|
-
intervals: zod_1.z
|
|
185
|
-
.object({
|
|
186
|
-
mean: zod_1.z.number(),
|
|
187
|
-
median: zod_1.z.number(),
|
|
188
|
-
min: zod_1.z.number(),
|
|
189
|
-
max: zod_1.z.number(),
|
|
190
|
-
count: zod_1.z.number(),
|
|
191
|
-
buckets: zod_1.z.record(zod_1.z.string(), zod_1.z.number()),
|
|
192
|
-
})
|
|
193
|
-
.optional(),
|
|
194
|
-
cardsAffected: zod_1.z.number().optional(),
|
|
195
|
-
targetDeck: zod_1.z.string().optional(),
|
|
196
|
-
}),
|
|
197
|
-
annotations: {
|
|
198
|
-
readOnlyHint: false,
|
|
199
|
-
destructiveHint: false,
|
|
200
|
-
},
|
|
201
|
-
}),
|
|
202
|
-
__metadata("design:type", Function),
|
|
203
|
-
__metadata("design:paramtypes", [Object, Object]),
|
|
204
|
-
__metadata("design:returntype", Promise)
|
|
205
|
-
], DeckActionsTool.prototype, "execute", null);
|
|
206
|
-
exports.DeckActionsTool = DeckActionsTool = DeckActionsTool_1 = __decorate([
|
|
207
|
-
(0, common_1.Injectable)(),
|
|
208
|
-
__metadata("design:paramtypes", [anki_connect_client_1.AnkiConnectClient])
|
|
209
|
-
], DeckActionsTool);
|
|
210
|
-
//# sourceMappingURL=deckActions.tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deckActions.tool.js","sourceRoot":"","sources":["../../../../../../src/mcp/primitives/essential/tools/deckActions/deckActions.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { DeckActionsTool } from "./deckActions.tool";
|
|
2
|
-
export type { ChangeDeckParams, ChangeDeckResult, } from "./actions/changeDeck.action";
|
|
3
|
-
export type { ListDecksParams, ListDecksResult, } from "./actions/listDecks.action";
|
|
4
|
-
export type { CreateDeckParams, CreateDeckResult, } from "./actions/createDeck.action";
|
|
5
|
-
export type { DeckStatsParams, DeckStatsResult, AnkiDeckStatsResponse, } from "./actions/deckStats.action";
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DeckActionsTool = void 0;
|
|
4
|
-
var deckActions_tool_1 = require("./deckActions.tool");
|
|
5
|
-
Object.defineProperty(exports, "DeckActionsTool", { enumerable: true, get: function () { return deckActions_tool_1.DeckActionsTool; } });
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/mcp/primitives/essential/tools/deckActions/index.ts"],"names":[],"mappings":";;;AAIA,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { MediaActionsTool } from "./mediaActions.tool";
|
|
2
|
-
export type { StoreMediaFileParams, StoreMediaFileResult, } from "./actions/storeMediaFile.action";
|
|
3
|
-
export type { RetrieveMediaFileParams, RetrieveMediaFileResult, } from "./actions/retrieveMediaFile.action";
|
|
4
|
-
export type { GetMediaFilesNamesParams, GetMediaFilesNamesResult, } from "./actions/getMediaFilesNames.action";
|
|
5
|
-
export type { DeleteMediaFileParams, DeleteMediaFileResult, } from "./actions/deleteMediaFile.action";
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MediaActionsTool = void 0;
|
|
4
|
-
var mediaActions_tool_1 = require("./mediaActions.tool");
|
|
5
|
-
Object.defineProperty(exports, "MediaActionsTool", { enumerable: true, get: function () { return mediaActions_tool_1.MediaActionsTool; } });
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/mcp/primitives/essential/tools/mediaActions/index.ts"],"names":[],"mappings":";;;AAIA,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA"}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
var MediaActionsTool_1;
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.MediaActionsTool = void 0;
|
|
14
|
-
const common_1 = require("@nestjs/common");
|
|
15
|
-
const mcp_nest_1 = require("@rekog/mcp-nest");
|
|
16
|
-
const zod_1 = require("zod");
|
|
17
|
-
const anki_connect_client_1 = require("../../../../clients/anki-connect.client");
|
|
18
|
-
const anki_utils_1 = require("../../../../utils/anki.utils");
|
|
19
|
-
const storeMediaFile_action_1 = require("./actions/storeMediaFile.action");
|
|
20
|
-
const retrieveMediaFile_action_1 = require("./actions/retrieveMediaFile.action");
|
|
21
|
-
const getMediaFilesNames_action_1 = require("./actions/getMediaFilesNames.action");
|
|
22
|
-
const deleteMediaFile_action_1 = require("./actions/deleteMediaFile.action");
|
|
23
|
-
let MediaActionsTool = MediaActionsTool_1 = class MediaActionsTool {
|
|
24
|
-
ankiClient;
|
|
25
|
-
logger = new common_1.Logger(MediaActionsTool_1.name);
|
|
26
|
-
constructor(ankiClient) {
|
|
27
|
-
this.ankiClient = ankiClient;
|
|
28
|
-
}
|
|
29
|
-
async execute(params, context) {
|
|
30
|
-
try {
|
|
31
|
-
this.logger.log(`Executing media action: ${params.action}`);
|
|
32
|
-
let result;
|
|
33
|
-
switch (params.action) {
|
|
34
|
-
case "storeMediaFile":
|
|
35
|
-
if (!params.filename) {
|
|
36
|
-
throw new Error("filename is required for storeMediaFile action");
|
|
37
|
-
}
|
|
38
|
-
await context.reportProgress({ progress: 25, total: 100 });
|
|
39
|
-
result = await (0, storeMediaFile_action_1.storeMediaFile)({
|
|
40
|
-
filename: params.filename,
|
|
41
|
-
data: params.data,
|
|
42
|
-
path: params.path,
|
|
43
|
-
url: params.url,
|
|
44
|
-
deleteExisting: params.deleteExisting,
|
|
45
|
-
}, this.ankiClient);
|
|
46
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
47
|
-
break;
|
|
48
|
-
case "retrieveMediaFile":
|
|
49
|
-
if (!params.filename) {
|
|
50
|
-
throw new Error("filename is required for retrieveMediaFile action");
|
|
51
|
-
}
|
|
52
|
-
await context.reportProgress({ progress: 50, total: 100 });
|
|
53
|
-
result = await (0, retrieveMediaFile_action_1.retrieveMediaFile)({ filename: params.filename }, this.ankiClient);
|
|
54
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
55
|
-
break;
|
|
56
|
-
case "getMediaFilesNames":
|
|
57
|
-
await context.reportProgress({ progress: 50, total: 100 });
|
|
58
|
-
result = await (0, getMediaFilesNames_action_1.getMediaFilesNames)({ pattern: params.pattern }, this.ankiClient);
|
|
59
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
60
|
-
break;
|
|
61
|
-
case "deleteMediaFile":
|
|
62
|
-
if (!params.filename) {
|
|
63
|
-
throw new Error("filename is required for deleteMediaFile action");
|
|
64
|
-
}
|
|
65
|
-
await context.reportProgress({ progress: 50, total: 100 });
|
|
66
|
-
result = await (0, deleteMediaFile_action_1.deleteMediaFile)({ filename: params.filename }, this.ankiClient);
|
|
67
|
-
await context.reportProgress({ progress: 100, total: 100 });
|
|
68
|
-
break;
|
|
69
|
-
default: {
|
|
70
|
-
const _exhaustive = params.action;
|
|
71
|
-
throw new Error(`Unknown action: ${_exhaustive}`);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
this.logger.log(`Successfully executed ${params.action}`);
|
|
75
|
-
return result;
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
this.logger.error(`Failed to execute ${params.action}`, error);
|
|
79
|
-
return (0, anki_utils_1.createErrorResponse)(error, {
|
|
80
|
-
action: params.action,
|
|
81
|
-
hint: "Make sure Anki is running and the media file/path is valid",
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
exports.MediaActionsTool = MediaActionsTool;
|
|
87
|
-
__decorate([
|
|
88
|
-
(0, mcp_nest_1.Tool)({
|
|
89
|
-
name: "mediaActions",
|
|
90
|
-
description: `Manage Anki media files (audio/images). Supports four actions:
|
|
91
|
-
- storeMediaFile: Upload media to Anki (supports base64 data, file paths, or URLs)
|
|
92
|
-
- retrieveMediaFile: Download media from Anki as base64
|
|
93
|
-
- getMediaFilesNames: List media files (optionally filter by pattern)
|
|
94
|
-
- deleteMediaFile: Remove media file from Anki
|
|
95
|
-
|
|
96
|
-
Perfect for workflows like ElevenLabs TTS → Anki audio flashcards.`,
|
|
97
|
-
parameters: zod_1.z.object({
|
|
98
|
-
action: zod_1.z
|
|
99
|
-
.enum([
|
|
100
|
-
"storeMediaFile",
|
|
101
|
-
"retrieveMediaFile",
|
|
102
|
-
"getMediaFilesNames",
|
|
103
|
-
"deleteMediaFile",
|
|
104
|
-
])
|
|
105
|
-
.describe("The media action to perform"),
|
|
106
|
-
filename: zod_1.z
|
|
107
|
-
.string()
|
|
108
|
-
.optional()
|
|
109
|
-
.describe("Filename (required for storeMediaFile, retrieveMediaFile, deleteMediaFile)"),
|
|
110
|
-
data: zod_1.z
|
|
111
|
-
.string()
|
|
112
|
-
.optional()
|
|
113
|
-
.describe("[storeMediaFile only] Base64-encoded file content"),
|
|
114
|
-
path: zod_1.z
|
|
115
|
-
.string()
|
|
116
|
-
.optional()
|
|
117
|
-
.describe("[storeMediaFile only] Absolute path to a local media file (images, audio, video only)"),
|
|
118
|
-
url: zod_1.z
|
|
119
|
-
.string()
|
|
120
|
-
.optional()
|
|
121
|
-
.describe("[storeMediaFile only] URL to download file from"),
|
|
122
|
-
deleteExisting: zod_1.z
|
|
123
|
-
.boolean()
|
|
124
|
-
.optional()
|
|
125
|
-
.default(true)
|
|
126
|
-
.describe("[storeMediaFile only] Overwrite existing file (default: true)"),
|
|
127
|
-
pattern: zod_1.z
|
|
128
|
-
.string()
|
|
129
|
-
.optional()
|
|
130
|
-
.describe('[getMediaFilesNames only] Filter pattern (e.g., "*.mp3")'),
|
|
131
|
-
}),
|
|
132
|
-
outputSchema: zod_1.z.object({
|
|
133
|
-
success: zod_1.z.boolean(),
|
|
134
|
-
filename: zod_1.z.string().optional(),
|
|
135
|
-
message: zod_1.z.string(),
|
|
136
|
-
prefixedWithUnderscore: zod_1.z.boolean().optional(),
|
|
137
|
-
data: zod_1.z.string().nullable().optional(),
|
|
138
|
-
found: zod_1.z.boolean().optional(),
|
|
139
|
-
files: zod_1.z.array(zod_1.z.string()).optional(),
|
|
140
|
-
count: zod_1.z.number().optional(),
|
|
141
|
-
pattern: zod_1.z.string().optional(),
|
|
142
|
-
}),
|
|
143
|
-
annotations: {
|
|
144
|
-
readOnlyHint: false,
|
|
145
|
-
destructiveHint: true,
|
|
146
|
-
},
|
|
147
|
-
}),
|
|
148
|
-
__metadata("design:type", Function),
|
|
149
|
-
__metadata("design:paramtypes", [Object, Object]),
|
|
150
|
-
__metadata("design:returntype", Promise)
|
|
151
|
-
], MediaActionsTool.prototype, "execute", null);
|
|
152
|
-
exports.MediaActionsTool = MediaActionsTool = MediaActionsTool_1 = __decorate([
|
|
153
|
-
(0, common_1.Injectable)(),
|
|
154
|
-
__metadata("design:paramtypes", [anki_connect_client_1.AnkiConnectClient])
|
|
155
|
-
], MediaActionsTool);
|
|
156
|
-
//# sourceMappingURL=mediaActions.tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mediaActions.tool.js","sourceRoot":"","sources":["../../../../../../src/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { TagActionsTool } from "./tagActions.tool";
|
|
2
|
-
export type { AddTagsParams, AddTagsResult } from "./actions/addTags.action";
|
|
3
|
-
export type { RemoveTagsParams, RemoveTagsResult, } from "./actions/removeTags.action";
|
|
4
|
-
export type { ReplaceTagsParams, ReplaceTagsResult, } from "./actions/replaceTags.action";
|
|
5
|
-
export type { ClearUnusedTagsParams, ClearUnusedTagsResult, } from "./actions/clearUnusedTags.action";
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TagActionsTool = void 0;
|
|
4
|
-
var tagActions_tool_1 = require("./tagActions.tool");
|
|
5
|
-
Object.defineProperty(exports, "TagActionsTool", { enumerable: true, get: function () { return tagActions_tool_1.TagActionsTool; } });
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/mcp/primitives/essential/tools/tagActions/index.ts"],"names":[],"mappings":";;;AAIA,qDAAmD;AAA1C,iHAAA,cAAc,OAAA"}
|