anki-mcp-http 0.21.0 → 0.22.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/README.md CHANGED
@@ -935,7 +935,7 @@ This project follows [Semantic Versioning](https://semver.org/) with a pre-1.0 d
935
935
  - Will be released when the API is stable and tested
936
936
  - Breaking changes will require major version bumps (2.0.0, etc.)
937
937
 
938
- **Current Status**: `0.20.0` - Active beta development. Recent features include model field management (`addModelField`, `removeModelField`, `renameModelField`, `repositionModelField`), batch note creation (`addNotes`), integrated ngrok tunneling (`--ngrok` flag), media file management, model/template management, and comprehensive deck statistics. APIs may change based on feedback and testing.
938
+ **Current Status**: `0.22.0` - Active beta development. Recent features include collection-wide review analysis (`review_stats` now aggregates across all decks when `deck` is omitted), model field management (`addModelField`, `removeModelField`, `renameModelField`, `repositionModelField`), batch note creation (`addNotes`), integrated ngrok tunneling (`--ngrok` flag), media file management, model/template management, and comprehensive deck statistics. APIs may change based on feedback and testing.
939
939
 
940
940
  ### MCPB spec evolution
941
941
 
@@ -5,7 +5,7 @@ export declare class ReviewStatsTool {
5
5
  private readonly logger;
6
6
  constructor(ankiClient: AnkiConnectClient);
7
7
  execute(params: {
8
- deck: string;
8
+ deck?: string;
9
9
  start_date: string;
10
10
  end_date?: string;
11
11
  }): Promise<{
@@ -105,5 +105,6 @@ export declare class ReviewStatsTool {
105
105
  } | undefined;
106
106
  isError?: boolean | undefined;
107
107
  } | ReviewStatsResult>;
108
+ private fetchCollectionReviews;
108
109
  private getTodayISO;
109
110
  }
@@ -26,16 +26,20 @@ let ReviewStatsTool = ReviewStatsTool_1 = class ReviewStatsTool {
26
26
  }
27
27
  async execute(params) {
28
28
  try {
29
- const { deck, start_date } = params;
29
+ const { start_date } = params;
30
+ const deck = params.deck && params.deck.length > 0 ? params.deck : undefined;
31
+ const deckLabel = deck ?? "All Decks";
30
32
  const end_date = params.end_date || this.getTodayISO();
31
- this.logger.log(`Getting review statistics from ${start_date} to ${end_date} for deck: ${deck}`);
33
+ this.logger.log(`Getting review statistics from ${start_date} to ${end_date} for deck: ${deckLabel}`);
32
34
  const startTimestamp = new Date(start_date).getTime();
33
35
  const endTimestamp = new Date(end_date).getTime() + MS_PER_DAY;
34
- this.logger.log(`Fetching detailed review data for deck: ${deck}...`);
35
- const reviews = await this.ankiClient.invoke("cardReviews", {
36
- startID: startTimestamp,
37
- deck: deck,
38
- });
36
+ this.logger.log(`Fetching detailed review data for deck: ${deckLabel}...`);
37
+ const reviews = deck
38
+ ? await this.ankiClient.invoke("cardReviews", {
39
+ startID: startTimestamp,
40
+ deck,
41
+ })
42
+ : await this.fetchCollectionReviews(startTimestamp);
39
43
  const filteredReviews = reviews.filter((review) => review[0] <= endTimestamp);
40
44
  this.logger.log("Calculating daily review counts from reviews...");
41
45
  const reviewsByDayMap = new Map();
@@ -66,7 +70,7 @@ let ReviewStatsTool = ReviewStatsTool_1 = class ReviewStatsTool {
66
70
  start: start_date,
67
71
  end: end_date,
68
72
  },
69
- deck: deck,
73
+ deck: deckLabel,
70
74
  reviews_by_day: reviewsByDay,
71
75
  summary: {
72
76
  total_reviews: totalReviews,
@@ -90,6 +94,36 @@ let ReviewStatsTool = ReviewStatsTool_1 = class ReviewStatsTool {
90
94
  });
91
95
  }
92
96
  }
97
+ async fetchCollectionReviews(startTimestamp) {
98
+ const cardIds = await this.ankiClient.invoke("findCards", {
99
+ query: "deck:*",
100
+ });
101
+ if (!cardIds || cardIds.length === 0) {
102
+ return [];
103
+ }
104
+ const reviewsByCard = await this.ankiClient.invoke("getReviewsOfCards", { cards: cardIds });
105
+ const tuples = [];
106
+ for (const [cardId, cardReviews] of Object.entries(reviewsByCard)) {
107
+ const cid = Number(cardId);
108
+ for (const r of cardReviews) {
109
+ if (r.id <= startTimestamp) {
110
+ continue;
111
+ }
112
+ tuples.push([
113
+ r.id,
114
+ cid,
115
+ r.usn,
116
+ r.ease,
117
+ r.ivl,
118
+ r.lastIvl,
119
+ r.factor,
120
+ r.time,
121
+ r.type,
122
+ ]);
123
+ }
124
+ }
125
+ return tuples;
126
+ }
93
127
  getTodayISO() {
94
128
  const today = new Date();
95
129
  return today.toISOString().split("T")[0];
@@ -101,12 +135,16 @@ __decorate([
101
135
  name: "review_stats",
102
136
  description: "Get review history analysis including temporal patterns, retention metrics, and study streak information. " +
103
137
  "Use this to analyze learning progress over time, identify review patterns, and track consistency. " +
104
- "Requires a start date and deck name; end date defaults to today.",
138
+ "Requires a start date; the deck is optional - omit it to analyze the entire collection (all decks). " +
139
+ "End date defaults to today.",
105
140
  parameters: zod_1.z
106
141
  .object({
107
142
  deck: zod_1.z
108
143
  .string()
109
- .describe("Deck name to filter reviews (REQUIRED - AnkiConnect API requires a deck)"),
144
+ .optional()
145
+ .describe("Deck name to filter reviews. Matches the EXACT deck only - subdecks are NOT included, " +
146
+ "so a parent deck still returns reviews for cards assigned directly to it (but not its subdecks' cards). " +
147
+ "Omit (or pass an empty string) to analyze the entire collection (all decks)."),
110
148
  start_date: zod_1.z
111
149
  .string()
112
150
  .regex(/^\d{4}-\d{2}-\d{2}$/, "Must be ISO date format: YYYY-MM-DD")
@@ -1 +1 @@
1
- {"version":3,"file":"review-stats.tool.js","sourceRoot":"","sources":["../../../../../../src/mcp/primitives/essential/tools/review-stats/review-stats.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-stats.tool.js","sourceRoot":"","sources":["../../../../../../src/mcp/primitives/essential/tools/review-stats/review-stats.tool.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,16 @@ export interface CardReviewsParams {
8
8
  startID: number;
9
9
  deck?: string;
10
10
  }
11
+ export interface CardReviewObject {
12
+ id: number;
13
+ usn: number;
14
+ ease: number;
15
+ ivl: number;
16
+ lastIvl: number;
17
+ factor: number;
18
+ time: number;
19
+ type: number;
20
+ }
11
21
  export type CardReviewTuple = [
12
22
  timestamp: number,
13
23
  cardId: number,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "anki-mcp-http",
3
3
  "mcpName": "ai.ankimcp/anki-mcp-server",
4
- "version": "0.21.0",
4
+ "version": "0.22.0",
5
5
  "description": "Model Context Protocol server for Anki - enables AI assistants to interact with your Anki flashcards",
6
6
  "author": "Anatoly Tarnavsky",
7
7
  "private": false,
@@ -57,12 +57,12 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "@modelcontextprotocol/sdk": "1.29.0",
60
- "@nestjs/common": "^11.1.26",
60
+ "@nestjs/common": "^11.1.27",
61
61
  "@nestjs/config": "^4.0.4",
62
- "@nestjs/core": "11.1.26",
62
+ "@nestjs/core": "11.1.27",
63
63
  "@nestjs/jwt": "^11.0.2",
64
64
  "@nestjs/passport": "^11.0.5",
65
- "@nestjs/platform-express": "^11.1.26",
65
+ "@nestjs/platform-express": "^11.1.27",
66
66
  "@rekog/mcp-nest": "^1.9.10",
67
67
  "async-mutex": "^0.5.0",
68
68
  "commander": "^15.0.0",
@@ -91,31 +91,31 @@
91
91
  "@modelcontextprotocol/inspector": "^0.22.0",
92
92
  "@nestjs/cli": "^11.0.23",
93
93
  "@nestjs/schematics": "^11.1.0",
94
- "@nestjs/testing": "^11.1.26",
94
+ "@nestjs/testing": "^11.1.27",
95
95
  "@types/express": "^5.0.6",
96
96
  "@types/jest": "^30.0.0",
97
97
  "@types/jsonwebtoken": "^9.0.10",
98
98
  "@types/mdast": "^4.0.4",
99
- "@types/node": "^25.9.3",
99
+ "@types/node": "^26.0.1",
100
100
  "@types/supertest": "^7.2.0",
101
101
  "@types/update-notifier": "^6.0.8",
102
102
  "@types/ws": "^8.18.1",
103
- "eslint": "^10.4.1",
103
+ "eslint": "^10.6.0",
104
104
  "eslint-config-prettier": "^10.1.8",
105
105
  "eslint-plugin-prettier": "^5.5.6",
106
- "globals": "^17.6.0",
106
+ "globals": "^17.7.0",
107
107
  "husky": "^9.1.7",
108
108
  "jest": "^30.4.2",
109
- "prettier": "^3.8.4",
110
- "sharp": "^0.35.0",
109
+ "prettier": "^3.9.1",
110
+ "sharp": "^0.35.2",
111
111
  "source-map-support": "^0.5.21",
112
112
  "supertest": "^7.2.2",
113
113
  "ts-jest": "^29.4.11",
114
- "ts-loader": "^9.6.0",
114
+ "ts-loader": "^9.6.2",
115
115
  "ts-node": "^10.9.2",
116
116
  "tsconfig-paths": "^4.2.0",
117
117
  "typescript": "^6.0.3",
118
- "typescript-eslint": "^8.61.0"
118
+ "typescript-eslint": "^8.62.0"
119
119
  },
120
120
  "jest": {
121
121
  "moduleFileExtensions": [
@@ -168,7 +168,7 @@
168
168
  ],
169
169
  "forceExit": true
170
170
  },
171
- "packageManager": "npm@11.16.0",
171
+ "packageManager": "npm@11.17.0",
172
172
  "engines": {
173
173
  "node": ">=22.12.0"
174
174
  },