anki-mcp-http 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,117 +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 ListDecksTool_1;
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.ListDecksTool = 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
- let ListDecksTool = ListDecksTool_1 = class ListDecksTool {
20
- ankiClient;
21
- logger = new common_1.Logger(ListDecksTool_1.name);
22
- constructor(ankiClient) {
23
- this.ankiClient = ankiClient;
24
- }
25
- async listDecks({ include_stats }, context) {
26
- try {
27
- const includeStats = include_stats || false;
28
- this.logger.log(`Listing Anki decks with stats: ${includeStats}`);
29
- await context.reportProgress({ progress: 10, total: 100 });
30
- const deckNames = await this.ankiClient.invoke("deckNames");
31
- if (!deckNames || deckNames.length === 0) {
32
- this.logger.log("No decks found");
33
- await context.reportProgress({ progress: 100, total: 100 });
34
- return (0, anki_utils_1.createSuccessResponse)({
35
- success: true,
36
- message: "No decks found in Anki",
37
- decks: [],
38
- });
39
- }
40
- await context.reportProgress({ progress: 50, total: 100 });
41
- let decks;
42
- let summary;
43
- if (includeStats) {
44
- const deckStatsResponse = await this.ankiClient.invoke("getDeckStats", {
45
- decks: deckNames,
46
- });
47
- const statsArray = Object.values(deckStatsResponse);
48
- decks = deckNames.map((name) => {
49
- const stats = statsArray.find((s) => s.name === name);
50
- if (stats) {
51
- return {
52
- name,
53
- stats: {
54
- deck_id: stats.deck_id || 0,
55
- name,
56
- new_count: stats.new_count || 0,
57
- learn_count: stats.learn_count || 0,
58
- review_count: stats.review_count || 0,
59
- total_new: stats.new_count || 0,
60
- total_cards: stats.total_in_deck || 0,
61
- },
62
- };
63
- }
64
- return { name };
65
- });
66
- summary = decks.reduce((acc, deck) => {
67
- if (deck.stats) {
68
- acc.total_cards += deck.stats.total_cards;
69
- acc.new_cards += deck.stats.new_count;
70
- acc.learning_cards += deck.stats.learn_count;
71
- acc.review_cards += deck.stats.review_count;
72
- }
73
- return acc;
74
- }, { total_cards: 0, new_cards: 0, learning_cards: 0, review_cards: 0 });
75
- }
76
- else {
77
- decks = deckNames.map((name) => ({ name }));
78
- }
79
- await context.reportProgress({ progress: 100, total: 100 });
80
- this.logger.log(`Found ${decks.length} decks`);
81
- const response = {
82
- success: true,
83
- decks,
84
- total: decks.length,
85
- };
86
- if (summary) {
87
- response.summary = summary;
88
- }
89
- return (0, anki_utils_1.createSuccessResponse)(response);
90
- }
91
- catch (error) {
92
- this.logger.error("Failed to list decks", error);
93
- return (0, anki_utils_1.createErrorResponse)(error);
94
- }
95
- }
96
- };
97
- exports.ListDecksTool = ListDecksTool;
98
- __decorate([
99
- (0, mcp_nest_1.Tool)({
100
- name: "list_decks",
101
- description: "List all available Anki decks, optionally with statistics. Remember to sync first at the start of a review session for latest data.",
102
- parameters: zod_1.z.object({
103
- include_stats: zod_1.z
104
- .boolean()
105
- .default(false)
106
- .describe("Include card count statistics for each deck"),
107
- }),
108
- }),
109
- __metadata("design:type", Function),
110
- __metadata("design:paramtypes", [Object, Object]),
111
- __metadata("design:returntype", Promise)
112
- ], ListDecksTool.prototype, "listDecks", null);
113
- exports.ListDecksTool = ListDecksTool = ListDecksTool_1 = __decorate([
114
- (0, common_1.Injectable)(),
115
- __metadata("design:paramtypes", [anki_connect_client_1.AnkiConnectClient])
116
- ], ListDecksTool);
117
- //# sourceMappingURL=list-decks.tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-decks.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/list-decks.tool.ts"],"names":[],"mappings":"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"}