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 +1 -1
- 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 +48 -10
- 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 +10 -0
- package/package.json +13 -13
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.
|
|
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
|
|
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 {
|
|
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: ${
|
|
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: ${
|
|
35
|
-
const reviews =
|
|
36
|
-
|
|
37
|
-
|
|
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:
|
|
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
|
|
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
|
-
.
|
|
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":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AACvC,6BAAwB;AACxB,iFAAsE;AACtE,6DAA6D;AAC7D,+DAA4E;
|
|
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.
|
|
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.
|
|
60
|
+
"@nestjs/common": "^11.1.27",
|
|
61
61
|
"@nestjs/config": "^4.0.4",
|
|
62
|
-
"@nestjs/core": "11.1.
|
|
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.
|
|
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.
|
|
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": "^
|
|
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.
|
|
103
|
+
"eslint": "^10.6.0",
|
|
104
104
|
"eslint-config-prettier": "^10.1.8",
|
|
105
105
|
"eslint-plugin-prettier": "^5.5.6",
|
|
106
|
-
"globals": "^17.
|
|
106
|
+
"globals": "^17.7.0",
|
|
107
107
|
"husky": "^9.1.7",
|
|
108
108
|
"jest": "^30.4.2",
|
|
109
|
-
"prettier": "^3.
|
|
110
|
-
"sharp": "^0.35.
|
|
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.
|
|
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.
|
|
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.
|
|
171
|
+
"packageManager": "npm@11.17.0",
|
|
172
172
|
"engines": {
|
|
173
173
|
"node": ">=22.12.0"
|
|
174
174
|
},
|