@ankimcp/anki-mcp-server 0.12.1 → 0.13.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.
Files changed (55) hide show
  1. package/README.md +53 -5
  2. package/bin/ankimcp.js +16 -0
  3. package/dist/anki-config.service.d.ts +1 -0
  4. package/dist/anki-config.service.js +4 -0
  5. package/dist/anki-config.service.js.map +1 -1
  6. package/dist/cli.d.ts +1 -0
  7. package/dist/cli.js +12 -3
  8. package/dist/cli.js.map +1 -1
  9. package/dist/main-http.js +1 -0
  10. package/dist/main-http.js.map +1 -1
  11. package/dist/main-stdio.js +28 -1
  12. package/dist/main-stdio.js.map +1 -1
  13. package/dist/mcp/clients/anki-connect.client.d.ts +5 -0
  14. package/dist/mcp/clients/anki-connect.client.js +35 -1
  15. package/dist/mcp/clients/anki-connect.client.js.map +1 -1
  16. package/dist/mcp/config/anki-config.interface.d.ts +1 -0
  17. package/dist/mcp/config/anki-config.interface.js.map +1 -1
  18. package/dist/mcp/primitives/essential/index.d.ts +4 -8
  19. package/dist/mcp/primitives/essential/index.js +6 -13
  20. package/dist/mcp/primitives/essential/index.js.map +1 -1
  21. package/dist/mcp/primitives/essential/tools/add-note.tool.js +22 -9
  22. package/dist/mcp/primitives/essential/tools/add-note.tool.js.map +1 -1
  23. package/dist/mcp/primitives/essential/tools/deckActions/actions/changeDeck.action.d.ts +12 -0
  24. package/dist/mcp/primitives/essential/tools/deckActions/actions/changeDeck.action.js +24 -0
  25. package/dist/mcp/primitives/essential/tools/deckActions/actions/changeDeck.action.js.map +1 -0
  26. package/dist/mcp/primitives/essential/tools/deckActions/actions/createDeck.action.d.ts +15 -0
  27. package/dist/mcp/primitives/essential/tools/deckActions/actions/createDeck.action.js +44 -0
  28. package/dist/mcp/primitives/essential/tools/deckActions/actions/createDeck.action.js.map +1 -0
  29. package/dist/mcp/primitives/essential/tools/{deck-stats/deck-stats.types.d.ts → deckActions/actions/deckStats.action.d.ts} +5 -2
  30. package/dist/mcp/primitives/essential/tools/deckActions/actions/deckStats.action.js +78 -0
  31. package/dist/mcp/primitives/essential/tools/deckActions/actions/deckStats.action.js.map +1 -0
  32. package/dist/mcp/primitives/essential/tools/deckActions/actions/listDecks.action.d.ts +18 -0
  33. package/dist/mcp/primitives/essential/tools/deckActions/actions/listDecks.action.js +63 -0
  34. package/dist/mcp/primitives/essential/tools/deckActions/actions/listDecks.action.js.map +1 -0
  35. package/dist/mcp/primitives/essential/tools/{deck-stats/deck-stats.tool.d.ts → deckActions/deckActions.tool.d.ts} +8 -4
  36. package/dist/mcp/primitives/essential/tools/deckActions/deckActions.tool.js +138 -0
  37. package/dist/mcp/primitives/essential/tools/deckActions/deckActions.tool.js.map +1 -0
  38. package/dist/mcp/primitives/essential/tools/deckActions/index.d.ts +5 -0
  39. package/dist/mcp/primitives/essential/tools/deckActions/index.js +6 -0
  40. package/dist/mcp/primitives/essential/tools/deckActions/index.js.map +1 -0
  41. package/dist/tsconfig.build.tsbuildinfo +1 -1
  42. package/package.json +23 -23
  43. package/dist/mcp/primitives/essential/tools/create-deck.tool.d.ts +0 -105
  44. package/dist/mcp/primitives/essential/tools/create-deck.tool.js +0 -121
  45. package/dist/mcp/primitives/essential/tools/create-deck.tool.js.map +0 -1
  46. package/dist/mcp/primitives/essential/tools/deck-stats/deck-stats.tool.js +0 -165
  47. package/dist/mcp/primitives/essential/tools/deck-stats/deck-stats.tool.js.map +0 -1
  48. package/dist/mcp/primitives/essential/tools/deck-stats/deck-stats.types.js +0 -3
  49. package/dist/mcp/primitives/essential/tools/deck-stats/deck-stats.types.js.map +0 -1
  50. package/dist/mcp/primitives/essential/tools/deck-stats/index.d.ts +0 -2
  51. package/dist/mcp/primitives/essential/tools/deck-stats/index.js +0 -6
  52. package/dist/mcp/primitives/essential/tools/deck-stats/index.js.map +0 -1
  53. package/dist/mcp/primitives/essential/tools/list-decks.tool.d.ts +0 -105
  54. package/dist/mcp/primitives/essential/tools/list-decks.tool.js +0 -117
  55. package/dist/mcp/primitives/essential/tools/list-decks.tool.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"add-note.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/add-note.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add-note.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/add-note.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
2
+ export interface ChangeDeckParams {
3
+ cards: number[];
4
+ deck: string;
5
+ }
6
+ export interface ChangeDeckResult {
7
+ success: boolean;
8
+ message: string;
9
+ cardsAffected: number;
10
+ targetDeck: string;
11
+ }
12
+ export declare function changeDeck(params: ChangeDeckParams, client: AnkiConnectClient): Promise<ChangeDeckResult>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.changeDeck = changeDeck;
4
+ async function changeDeck(params, client) {
5
+ const { cards, deck } = params;
6
+ if (!cards || cards.length === 0) {
7
+ throw new Error("cards array cannot be empty");
8
+ }
9
+ if (!deck || deck.trim() === "") {
10
+ throw new Error("deck name cannot be empty");
11
+ }
12
+ const trimmedDeck = deck.trim();
13
+ await client.invoke("changeDeck", {
14
+ cards,
15
+ deck: trimmedDeck,
16
+ });
17
+ return {
18
+ success: true,
19
+ message: `Successfully moved ${cards.length} card(s) to deck "${trimmedDeck}"`,
20
+ cardsAffected: cards.length,
21
+ targetDeck: trimmedDeck,
22
+ };
23
+ }
24
+ //# sourceMappingURL=changeDeck.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changeDeck.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/deckActions/actions/changeDeck.action.ts"],"names":[],"mappings":";;AA+BA,gCA8BC;AA9BM,KAAK,UAAU,UAAU,CAC9B,MAAwB,EACxB,MAAyB;IAEzB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAG/B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAGD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAGhC,MAAM,MAAM,CAAC,MAAM,CAAO,YAAY,EAAE;QACtC,KAAK;QACL,IAAI,EAAE,WAAW;KAClB,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,sBAAsB,KAAK,CAAC,MAAM,qBAAqB,WAAW,GAAG;QAC9E,aAAa,EAAE,KAAK,CAAC,MAAM;QAC3B,UAAU,EAAE,WAAW;KACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
2
+ export interface CreateDeckParams {
3
+ deckName: string;
4
+ }
5
+ export interface CreateDeckResult {
6
+ success: boolean;
7
+ deckId?: number;
8
+ deckName: string;
9
+ message: string;
10
+ created: boolean;
11
+ exists?: boolean;
12
+ parentDeck?: string;
13
+ childDeck?: string;
14
+ }
15
+ export declare function createDeck(params: CreateDeckParams, client: AnkiConnectClient): Promise<CreateDeckResult>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDeck = createDeck;
4
+ async function createDeck(params, client) {
5
+ const { deckName } = params;
6
+ const parts = deckName.split("::");
7
+ if (parts.length > 2) {
8
+ throw new Error("Deck name can have maximum 2 levels (parent::child)");
9
+ }
10
+ if (parts.some((part) => part.trim() === "")) {
11
+ throw new Error("Deck name parts cannot be empty");
12
+ }
13
+ const deckId = await client.invoke("createDeck", {
14
+ deck: deckName,
15
+ });
16
+ if (!deckId) {
17
+ const existingDecks = await client.invoke("deckNames");
18
+ const deckExists = existingDecks.includes(deckName);
19
+ if (deckExists) {
20
+ return {
21
+ success: true,
22
+ message: `Deck "${deckName}" already exists`,
23
+ deckName: deckName,
24
+ created: false,
25
+ exists: true,
26
+ };
27
+ }
28
+ throw new Error("Failed to create deck - unknown error");
29
+ }
30
+ const result = {
31
+ success: true,
32
+ deckId: deckId,
33
+ deckName: deckName,
34
+ message: `Successfully created deck "${deckName}"`,
35
+ created: true,
36
+ };
37
+ if (parts.length === 2) {
38
+ result.parentDeck = parts[0];
39
+ result.childDeck = parts[1];
40
+ result.message = `Successfully created parent deck "${parts[0]}" and child deck "${parts[1]}"`;
41
+ }
42
+ return result;
43
+ }
44
+ //# sourceMappingURL=createDeck.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDeck.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/deckActions/actions/createDeck.action.ts"],"names":[],"mappings":";;AAiCA,gCAwDC;AAxDM,KAAK,UAAU,UAAU,CAC9B,MAAwB,EACxB,MAAyB;IAEzB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAG5B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAGD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAGD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAS,YAAY,EAAE;QACvD,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,CAAC;QAEZ,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,MAAM,CAAW,WAAW,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS,QAAQ,kBAAkB;gBAC5C,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,GAAqB;QAC/B,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,8BAA8B,QAAQ,GAAG;QAClD,OAAO,EAAE,IAAI;KACd,CAAC;IAGF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,OAAO,GAAG,qCAAqC,KAAK,CAAC,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IACjG,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
1
2
  import { DistributionMetrics } from "@/mcp/utils/stats.utils";
2
3
  export interface AnkiDeckStatsResponse {
3
4
  deck_id: number;
@@ -9,8 +10,8 @@ export interface AnkiDeckStatsResponse {
9
10
  }
10
11
  export interface DeckStatsParams {
11
12
  deck: string;
12
- ease_buckets?: number[];
13
- interval_buckets?: number[];
13
+ easeBuckets?: number[];
14
+ intervalBuckets?: number[];
14
15
  }
15
16
  export interface DeckStatsResult {
16
17
  deck: string;
@@ -23,3 +24,5 @@ export interface DeckStatsResult {
23
24
  ease: DistributionMetrics;
24
25
  intervals: DistributionMetrics;
25
26
  }
27
+ export type ProgressCallback = (progress: number) => Promise<void>;
28
+ export declare function deckStats(params: DeckStatsParams, client: AnkiConnectClient, onProgress?: ProgressCallback): Promise<DeckStatsResult>;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deckStats = deckStats;
4
+ const stats_utils_1 = require("../../../../../utils/stats.utils");
5
+ async function deckStats(params, client, onProgress) {
6
+ const { deck, easeBuckets = [2.0, 2.5, 3.0], intervalBuckets = [7, 21, 90], } = params;
7
+ const deckStatsResponse = await client.invoke("getDeckStats", {
8
+ decks: [deck],
9
+ });
10
+ if (!deckStatsResponse || Object.keys(deckStatsResponse).length === 0) {
11
+ throw new Error(`Deck "${deck}" not found`);
12
+ }
13
+ const deckStatsArray = Object.values(deckStatsResponse);
14
+ const deckStatsData = deckStatsArray.find((s) => s.name === deck);
15
+ if (!deckStatsData) {
16
+ throw new Error(`Deck "${deck}" not found in statistics response`);
17
+ }
18
+ const counts = {
19
+ total: deckStatsData.total_in_deck || 0,
20
+ new: deckStatsData.new_count || 0,
21
+ learning: deckStatsData.learn_count || 0,
22
+ review: deckStatsData.review_count || 0,
23
+ };
24
+ await onProgress?.(30);
25
+ if (counts.total === 0) {
26
+ return {
27
+ deck,
28
+ counts,
29
+ ease: (0, stats_utils_1.computeDistribution)([], { boundaries: easeBuckets }),
30
+ intervals: (0, stats_utils_1.computeDistribution)([], {
31
+ boundaries: intervalBuckets,
32
+ unitSuffix: "d",
33
+ }),
34
+ };
35
+ }
36
+ const escapedDeckName = deck.replace(/"/g, '\\"');
37
+ const cardIds = await client.invoke("findCards", {
38
+ query: `"deck:${escapedDeckName}"`,
39
+ });
40
+ if (!cardIds || cardIds.length === 0) {
41
+ return {
42
+ deck,
43
+ counts,
44
+ ease: (0, stats_utils_1.computeDistribution)([], { boundaries: easeBuckets }),
45
+ intervals: (0, stats_utils_1.computeDistribution)([], {
46
+ boundaries: intervalBuckets,
47
+ unitSuffix: "d",
48
+ }),
49
+ };
50
+ }
51
+ await onProgress?.(50);
52
+ const easeFactorsRaw = await client.invoke("getEaseFactors", {
53
+ cards: cardIds,
54
+ });
55
+ const easeValues = easeFactorsRaw
56
+ .map((e) => e / 1000)
57
+ .filter((e) => e > 0);
58
+ await onProgress?.(70);
59
+ const intervalsRaw = await client.invoke("getIntervals", {
60
+ cards: cardIds,
61
+ });
62
+ const intervalValues = intervalsRaw.filter((i) => i > 0);
63
+ await onProgress?.(90);
64
+ const ease = (0, stats_utils_1.computeDistribution)(easeValues, {
65
+ boundaries: easeBuckets,
66
+ });
67
+ const intervals = (0, stats_utils_1.computeDistribution)(intervalValues, {
68
+ boundaries: intervalBuckets,
69
+ unitSuffix: "d",
70
+ });
71
+ return {
72
+ deck,
73
+ counts,
74
+ ease,
75
+ intervals,
76
+ };
77
+ }
78
+ //# sourceMappingURL=deckStats.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deckStats.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/deckActions/actions/deckStats.action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
2
+ import { DeckInfo } from "@/mcp/types/anki.types";
3
+ export interface ListDecksParams {
4
+ includeStats?: boolean;
5
+ }
6
+ export interface ListDecksResult {
7
+ success: boolean;
8
+ decks: DeckInfo[];
9
+ total: number;
10
+ message?: string;
11
+ summary?: {
12
+ total_cards: number;
13
+ new_cards: number;
14
+ learning_cards: number;
15
+ review_cards: number;
16
+ };
17
+ }
18
+ export declare function listDecks(params: ListDecksParams, client: AnkiConnectClient): Promise<ListDecksResult>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listDecks = listDecks;
4
+ async function listDecks(params, client) {
5
+ const { includeStats = false } = params;
6
+ const deckNames = await client.invoke("deckNames");
7
+ if (!deckNames || deckNames.length === 0) {
8
+ return {
9
+ success: true,
10
+ message: "No decks found in Anki",
11
+ decks: [],
12
+ total: 0,
13
+ };
14
+ }
15
+ let decks;
16
+ let summary;
17
+ if (includeStats) {
18
+ const deckStatsResponse = await client.invoke("getDeckStats", {
19
+ decks: deckNames,
20
+ });
21
+ const statsArray = Object.values(deckStatsResponse);
22
+ decks = deckNames.map((name) => {
23
+ const stats = statsArray.find((s) => s.name === name);
24
+ if (stats) {
25
+ return {
26
+ name,
27
+ stats: {
28
+ deck_id: stats.deck_id || 0,
29
+ name,
30
+ new_count: stats.new_count || 0,
31
+ learn_count: stats.learn_count || 0,
32
+ review_count: stats.review_count || 0,
33
+ total_new: stats.new_count || 0,
34
+ total_cards: stats.total_in_deck || 0,
35
+ },
36
+ };
37
+ }
38
+ return { name };
39
+ });
40
+ summary = decks.reduce((acc, deck) => {
41
+ if (deck.stats) {
42
+ acc.total_cards += deck.stats.total_cards;
43
+ acc.new_cards += deck.stats.new_count;
44
+ acc.learning_cards += deck.stats.learn_count;
45
+ acc.review_cards += deck.stats.review_count;
46
+ }
47
+ return acc;
48
+ }, { total_cards: 0, new_cards: 0, learning_cards: 0, review_cards: 0 });
49
+ }
50
+ else {
51
+ decks = deckNames.map((name) => ({ name }));
52
+ }
53
+ const result = {
54
+ success: true,
55
+ decks,
56
+ total: decks.length,
57
+ };
58
+ if (summary) {
59
+ result.summary = summary;
60
+ }
61
+ return result;
62
+ }
63
+ //# sourceMappingURL=listDecks.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listDecks.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/deckActions/actions/listDecks.action.ts"],"names":[],"mappings":";;AAiCA,8BAoFC;AApFM,KAAK,UAAU,SAAS,CAC7B,MAAuB,EACvB,MAAyB;IAEzB,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;IAGxC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAW,WAAW,CAAC,CAAC;IAE7D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC;SACT,CAAC;IACJ,CAAC;IAED,IAAI,KAAiB,CAAC;IACtB,IAAI,OAAmC,CAAC;IAExC,IAAI,YAAY,EAAE,CAAC;QAGjB,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,MAAM,CAC3C,cAAc,EACd;YACE,KAAK,EAAE,SAAS;SACjB,CACF,CAAC;QAIF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEpD,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAE7B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC3D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;oBACL,IAAI;oBACJ,KAAK,EAAE;wBACL,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC;wBAC3B,IAAI;wBACJ,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC;wBAC/B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC;wBACnC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;wBACrC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC;wBAC/B,WAAW,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;qBACzB;iBACf,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAGH,OAAO,GAAG,KAAK,CAAC,MAAM,CACpB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACZ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC1C,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACtC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC7C,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YAC9C,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CACrE,CAAC;IACJ,CAAC;SAAM,CAAC;QAEN,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,MAAM,GAAoB;QAC9B,OAAO,EAAE,IAAI;QACb,KAAK;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;KACpB,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,13 +1,17 @@
1
1
  import type { Context } from "@rekog/mcp-nest";
2
2
  import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
3
- export declare class DeckStatsTool {
3
+ export declare class DeckActionsTool {
4
4
  private readonly ankiClient;
5
5
  private readonly logger;
6
6
  constructor(ankiClient: AnkiConnectClient);
7
7
  execute(params: {
8
- deck: string;
9
- ease_buckets?: number[];
10
- interval_buckets?: number[];
8
+ action: "listDecks" | "createDeck" | "deckStats" | "changeDeck";
9
+ includeStats?: boolean;
10
+ deckName?: string;
11
+ deck?: string;
12
+ easeBuckets?: number[];
13
+ intervalBuckets?: number[];
14
+ cards?: number[];
11
15
  }, context: Context): Promise<{
12
16
  [x: string]: unknown;
13
17
  content: ({
@@ -0,0 +1,138 @@
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 (0, anki_utils_1.createSuccessResponse)(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
+ .optional()
119
+ .describe("[deckStats] Bucket boundaries for ease factor distribution. Default: [2.0, 2.5, 3.0]"),
120
+ intervalBuckets: zod_1.z
121
+ .array(zod_1.z.number().positive())
122
+ .optional()
123
+ .describe("[deckStats] Bucket boundaries for interval distribution in days. Default: [7, 21, 90]"),
124
+ cards: zod_1.z
125
+ .array(zod_1.z.number())
126
+ .optional()
127
+ .describe("[changeDeck] Array of card IDs to move"),
128
+ }),
129
+ }),
130
+ __metadata("design:type", Function),
131
+ __metadata("design:paramtypes", [Object, Object]),
132
+ __metadata("design:returntype", Promise)
133
+ ], DeckActionsTool.prototype, "execute", null);
134
+ exports.DeckActionsTool = DeckActionsTool = DeckActionsTool_1 = __decorate([
135
+ (0, common_1.Injectable)(),
136
+ __metadata("design:paramtypes", [anki_connect_client_1.AnkiConnectClient])
137
+ ], DeckActionsTool);
138
+ //# sourceMappingURL=deckActions.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deckActions.tool.js","sourceRoot":"","sources":["../../../../../../src/mcp/primitives/essential/tools/deckActions/deckActions.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
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";
@@ -0,0 +1,6 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/mcp/primitives/essential/tools/deckActions/index.ts"],"names":[],"mappings":";;;AAIA,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}