@ankimcp/anki-mcp-server 0.22.2 → 0.22.5
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 +2 -0
- package/dist/mcp/primitives/essential/tools/get-cards.tool.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/get-cards.tool.js +3 -3
- package/dist/mcp/primitives/essential/tools/get-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js +3 -3
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/present-card.tool.js +3 -3
- package/dist/mcp/primitives/essential/tools/present-card.tool.js.map +1 -1
- package/dist/mcp/utils/anki.utils.d.ts +1 -1
- package/dist/mcp/utils/anki.utils.js +24 -36
- package/dist/mcp/utils/anki.utils.js.map +1 -1
- package/dist/mcp/utils/media-validation.utils.js +52 -32
- package/dist/mcp/utils/media-validation.utils.js.map +1 -1
- package/dist/test-fixtures/mock-data.d.ts +38 -0
- package/dist/test-fixtures/mock-data.js +40 -2
- package/dist/test-fixtures/mock-data.js.map +1 -1
- package/package.json +17 -17
package/README.md
CHANGED
|
@@ -46,6 +46,8 @@ The server exposes **42 MCP tools** — 31 essential tools for everyday Anki ope
|
|
|
46
46
|
- `present_card` - Show a card for review with its question/front side
|
|
47
47
|
- `rate_card` - Rate card performance (Again, Hard, Good, Easy) and schedule the next review
|
|
48
48
|
|
|
49
|
+
> **Note:** Card `front`/`back` content is rendered per card from its own template (as Anki shows it), so reversed and cloze cards display the correct direction. Static text added by your card templates appears in the output as well.
|
|
50
|
+
|
|
49
51
|
#### Deck Management
|
|
50
52
|
- `listDecks` - List all decks, optionally with per-deck card-count statistics
|
|
51
53
|
- `deckStats` - Get comprehensive statistics for a single deck (counts, ease/interval distributions)
|
|
@@ -2,9 +2,9 @@ import { z } from "zod";
|
|
|
2
2
|
import { AnkiConnectClient } from "../../../clients/anki-connect.client";
|
|
3
3
|
import { SimplifiedCard } from "../../../types/anki.types";
|
|
4
4
|
declare const CardStateEnum: z.ZodEnum<{
|
|
5
|
+
due: "due";
|
|
5
6
|
new: "new";
|
|
6
7
|
learning: "learning";
|
|
7
|
-
due: "due";
|
|
8
8
|
suspended: "suspended";
|
|
9
9
|
buried: "buried";
|
|
10
10
|
}>;
|
|
@@ -58,11 +58,11 @@ let GetCardsTool = GetCardsTool_1 = class GetCardsTool {
|
|
|
58
58
|
cards: selectedCardIds,
|
|
59
59
|
});
|
|
60
60
|
const cards = cardsInfo.map((card) => {
|
|
61
|
-
const { front, back } = (0, anki_utils_1.
|
|
61
|
+
const { front, back } = (0, anki_utils_1.extractRenderedCardContent)(card);
|
|
62
62
|
return {
|
|
63
63
|
cardId: card.cardId,
|
|
64
|
-
front
|
|
65
|
-
back
|
|
64
|
+
front,
|
|
65
|
+
back,
|
|
66
66
|
deckName: card.deckName,
|
|
67
67
|
modelName: card.modelName,
|
|
68
68
|
due: card.due || 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-cards.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/get-cards.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AACvC,6BAAwB;AACxB,8EAAsE;AAEtE,0DAGgC;AAKhC,MAAM,aAAa,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAMhF,MAAM,oBAAoB,GAA8B;IACtD,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,cAAc;IACzB,MAAM,EAAE,WAAW;CACpB,CAAC;AAMK,IAAM,YAAY,oBAAlB,MAAM,YAAY;IAGM;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,cAAY,CAAC,IAAI,CAAC,CAAC;IAExD,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAgDxD,AAAN,KAAK,CAAC,QAAQ,CAAC,EACb,SAAS,EACT,UAAU,GAAG,KAAK,EAClB,KAAK,GAKN;QACC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAE5C,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,WAAW,UAAU,qBAAqB,SAAS,IAAI,KAAK,YAAY,SAAS,EAAE,CACpF,CAAC;YAGF,MAAM,UAAU,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAEpD,MAAM,gBAAgB,GACpB,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,IAAI,KAAK,GAAG,GAAG,gBAAgB,GAAG,UAAU,EAAE,CAAC;YAE/C,IAAI,SAAS,EAAE,CAAC;gBAEd,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvD,KAAK,GAAG,SAAS,eAAe,KAAK,KAAK,EAAE,CAAC;YAC/C,CAAC;YAGD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAW,WAAW,EAAE;gBAClE,KAAK;aACN,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,UAAU,cAAc,CAAC,CAAC;gBAChD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,MAAM,UAAU,cAAc;oBACvC,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,CAAC;iBACT,CAAC;YACJ,CAAC;YAGD,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAGpD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAa,WAAW,EAAE;gBACtE,KAAK,EAAE,eAAe;aACvB,CAAC,CAAC;YAGH,MAAM,KAAK,GAAqB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA
|
|
1
|
+
{"version":3,"file":"get-cards.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/get-cards.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,11 +75,11 @@ let GetDueCardsTool = GetDueCardsTool_1 = class GetDueCardsTool {
|
|
|
75
75
|
cards: selectedCardIds,
|
|
76
76
|
});
|
|
77
77
|
const dueCards = cardsInfo.map((card) => {
|
|
78
|
-
const { front, back } = (0, anki_utils_1.
|
|
78
|
+
const { front, back } = (0, anki_utils_1.extractRenderedCardContent)(card);
|
|
79
79
|
return {
|
|
80
80
|
cardId: card.cardId,
|
|
81
|
-
front
|
|
82
|
-
back
|
|
81
|
+
front,
|
|
82
|
+
back,
|
|
83
83
|
deckName: card.deckName,
|
|
84
84
|
modelName: card.modelName,
|
|
85
85
|
due: card.due || 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-due-cards.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/get-due-cards.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"get-due-cards.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/get-due-cards.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,11 +34,11 @@ let PresentCardTool = PresentCardTool_1 = class PresentCardTool {
|
|
|
34
34
|
return (0, anki_utils_1.createErrorResponse)(new Error(`Card with ID ${card_id} not found`), { cardId: card_id });
|
|
35
35
|
}
|
|
36
36
|
const card = cardsInfo[0];
|
|
37
|
-
const { front, back } = (0, anki_utils_1.
|
|
37
|
+
const { front, back } = (0, anki_utils_1.extractRenderedCardContent)(card);
|
|
38
38
|
const cardType = (0, anki_utils_1.getCardType)(card.type);
|
|
39
39
|
const presentation = {
|
|
40
40
|
cardId: card.cardId,
|
|
41
|
-
front
|
|
41
|
+
front,
|
|
42
42
|
deckName: card.deckName,
|
|
43
43
|
modelName: card.modelName,
|
|
44
44
|
tags: card.tags || [],
|
|
@@ -50,7 +50,7 @@ let PresentCardTool = PresentCardTool_1 = class PresentCardTool {
|
|
|
50
50
|
noteId: card.note,
|
|
51
51
|
};
|
|
52
52
|
if (showAnswer) {
|
|
53
|
-
presentation.back = back
|
|
53
|
+
presentation.back = back;
|
|
54
54
|
}
|
|
55
55
|
this.logger.log(`Retrieved card ${card_id} for presentation`);
|
|
56
56
|
const instruction = !showAnswer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"present-card.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/present-card.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AACvC,6BAAwB;AACxB,8EAAsE;AAEtE,0DAIgC;AAMzB,IAAM,eAAe,uBAArB,MAAM,eAAe;IAGG;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IAE3D,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAsCxD,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,OAAO,EACP,WAAW,GAIZ;QACC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,WAAW,IAAI,KAAK,CAAC;YAExC,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,mBAAmB,OAAO,mCAAmC,UAAU,GAAG,CAC3E,CAAC;YAGF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAa,WAAW,EAAE;gBACtE,KAAK,EAAE,CAAC,OAAO,CAAC;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;gBAC/C,OAAO,IAAA,gCAAmB,EACxB,IAAI,KAAK,CAAC,gBAAgB,OAAO,YAAY,CAAC,EAC9C,EAAE,MAAM,EAAE,OAAO,EAAE,CACpB,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA
|
|
1
|
+
{"version":3,"file":"present-card.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/present-card.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
2
2
|
import { AnkiCard } from "../types/anki.types";
|
|
3
3
|
export declare function cleanHtml(html: string): string;
|
|
4
|
-
export declare function
|
|
4
|
+
export declare function extractRenderedCardContent(card: Pick<AnkiCard, "question" | "answer">): {
|
|
5
5
|
front: string;
|
|
6
6
|
back: string;
|
|
7
7
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.cleanHtml = cleanHtml;
|
|
4
|
-
exports.
|
|
4
|
+
exports.extractRenderedCardContent = extractRenderedCardContent;
|
|
5
5
|
exports.getCardType = getCardType;
|
|
6
6
|
exports.getNoteType = getNoteType;
|
|
7
7
|
exports.getRatingDescription = getRatingDescription;
|
|
@@ -11,50 +11,38 @@ exports.formatInterval = formatInterval;
|
|
|
11
11
|
exports.parseDeckStats = parseDeckStats;
|
|
12
12
|
const anki_types_1 = require("../types/anki.types");
|
|
13
13
|
const anki_connect_client_1 = require("../clients/anki-connect.client");
|
|
14
|
+
const ANSWER_SEPARATOR_REGEX = /<hr\b[^>]*\bid=["']?answer["']?[^>]*>/i;
|
|
14
15
|
function cleanHtml(html) {
|
|
15
|
-
|
|
16
|
+
if (!html) {
|
|
17
|
+
return "";
|
|
18
|
+
}
|
|
19
|
+
return (html
|
|
20
|
+
.replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi, "")
|
|
21
|
+
.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi, "")
|
|
22
|
+
.replace(/<br\s*\/?>/gi, "\n")
|
|
23
|
+
.replace(/<\/(?:div|p)>/gi, "\n")
|
|
16
24
|
.replace(/<[^>]*>/g, "")
|
|
17
25
|
.replace(/ /g, " ")
|
|
18
|
-
.replace(/&/g, "&")
|
|
19
26
|
.replace(/</g, "<")
|
|
20
27
|
.replace(/>/g, ">")
|
|
21
28
|
.replace(/"/g, '"')
|
|
22
29
|
.replace(/'/g, "'")
|
|
23
|
-
.replace(
|
|
24
|
-
.
|
|
30
|
+
.replace(/&/g, "&")
|
|
31
|
+
.replace(/[ \t]+/g, " ")
|
|
32
|
+
.replace(/ *\n */g, "\n")
|
|
33
|
+
.replace(/\n{2,}/g, "\n")
|
|
34
|
+
.trim());
|
|
25
35
|
}
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const backFieldNames = ["Back", "背面", "Answer", "Extra", "Back Extra"];
|
|
34
|
-
for (const fieldName of frontFieldNames) {
|
|
35
|
-
if (fields[fieldName]) {
|
|
36
|
-
front = fields[fieldName].value;
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
for (const fieldName of backFieldNames) {
|
|
41
|
-
if (fields[fieldName]) {
|
|
42
|
-
back = fields[fieldName].value;
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (!front && !back) {
|
|
47
|
-
const fieldEntries = Object.entries(fields).sort((a, b) => a[1].order - b[1].order);
|
|
48
|
-
if (fieldEntries.length > 0) {
|
|
49
|
-
front = fieldEntries[0][1].value;
|
|
50
|
-
}
|
|
51
|
-
if (fieldEntries.length > 1) {
|
|
52
|
-
back = fieldEntries[1][1].value;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
36
|
+
function extractRenderedCardContent(card) {
|
|
37
|
+
const question = card.question ?? "";
|
|
38
|
+
const answer = card.answer ?? "";
|
|
39
|
+
const separatorMatch = answer.match(ANSWER_SEPARATOR_REGEX);
|
|
40
|
+
const backHtml = separatorMatch && separatorMatch.index !== undefined
|
|
41
|
+
? answer.slice(separatorMatch.index + separatorMatch[0].length)
|
|
42
|
+
: answer;
|
|
55
43
|
return {
|
|
56
|
-
front: cleanHtml(
|
|
57
|
-
back: cleanHtml(
|
|
44
|
+
front: cleanHtml(question),
|
|
45
|
+
back: cleanHtml(backHtml),
|
|
58
46
|
};
|
|
59
47
|
}
|
|
60
48
|
function getCardType(type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anki.utils.js","sourceRoot":"","sources":["../../../src/mcp/utils/anki.utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"anki.utils.js","sourceRoot":"","sources":["../../../src/mcp/utils/anki.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,17 +85,39 @@ class MediaUrlInvalidError extends Error {
|
|
|
85
85
|
}
|
|
86
86
|
exports.MediaUrlInvalidError = MediaUrlInvalidError;
|
|
87
87
|
const DEFAULT_ALLOWED_PREFIXES = ["image/", "audio/", "video/"];
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
]);
|
|
88
|
+
const ALLOWED_RANGE = "unicast";
|
|
89
|
+
function isPublicUnicast(addr) {
|
|
90
|
+
return addr.range() === ALLOWED_RANGE;
|
|
91
|
+
}
|
|
92
|
+
function isIPv4CompatibleAddress(ipv6) {
|
|
93
|
+
return ipv6.parts.slice(0, 6).every((part) => part === 0);
|
|
94
|
+
}
|
|
95
|
+
function extractEmbeddedIPv4(ipv6) {
|
|
96
|
+
const high = ipv6.parts[6];
|
|
97
|
+
const low = ipv6.parts[7];
|
|
98
|
+
return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);
|
|
99
|
+
}
|
|
100
|
+
function parseTargetAddress(ip) {
|
|
101
|
+
if (!ipaddr.isValid(ip))
|
|
102
|
+
return null;
|
|
103
|
+
let addr = ipaddr.parse(ip);
|
|
104
|
+
if (addr instanceof ipaddr.IPv6) {
|
|
105
|
+
if (addr.isIPv4MappedAddress())
|
|
106
|
+
addr = addr.toIPv4Address();
|
|
107
|
+
else if (isIPv4CompatibleAddress(addr))
|
|
108
|
+
addr = extractEmbeddedIPv4(addr);
|
|
109
|
+
}
|
|
110
|
+
return addr;
|
|
111
|
+
}
|
|
112
|
+
function assertAddressAllowed(ip) {
|
|
113
|
+
const addr = parseTargetAddress(ip);
|
|
114
|
+
if (!addr || !isPublicUnicast(addr)) {
|
|
115
|
+
throw new MediaUrlBlockedError();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function normalizeIp(value) {
|
|
119
|
+
return parseTargetAddress(value)?.toString() ?? null;
|
|
120
|
+
}
|
|
99
121
|
function validateMediaFilePath(filePath, config = {}) {
|
|
100
122
|
if (filePath.includes("\0")) {
|
|
101
123
|
throw new MediaFileTypeError();
|
|
@@ -136,36 +158,34 @@ async function validateMediaUrl(input, config = {}) {
|
|
|
136
158
|
const hostnameForLookup = hostname.startsWith("[") && hostname.endsWith("]")
|
|
137
159
|
? hostname.slice(1, -1)
|
|
138
160
|
: hostname;
|
|
139
|
-
let
|
|
161
|
+
let resolved;
|
|
140
162
|
try {
|
|
141
|
-
|
|
142
|
-
resolvedIp = result.address;
|
|
163
|
+
resolved = await dns.promises.lookup(hostnameForLookup, { all: true });
|
|
143
164
|
}
|
|
144
165
|
catch {
|
|
145
166
|
throw new MediaUrlInvalidError();
|
|
146
167
|
}
|
|
168
|
+
if (resolved.length === 0) {
|
|
169
|
+
throw new MediaUrlInvalidError();
|
|
170
|
+
}
|
|
171
|
+
const resolvedIp = resolved[0].address;
|
|
147
172
|
if (config.allowedHosts && config.allowedHosts.length > 0) {
|
|
148
|
-
const
|
|
149
|
-
|
|
173
|
+
const allowedHosts = config.allowedHosts;
|
|
174
|
+
const hostnameAllowed = allowedHosts.includes(hostname) ||
|
|
175
|
+
allowedHosts.includes(hostnameForLookup);
|
|
176
|
+
const allowedIps = allowedHosts
|
|
177
|
+
.map(normalizeIp)
|
|
178
|
+
.filter((ip) => ip !== null);
|
|
179
|
+
const allIpsAllowed = resolved.every(({ address }) => {
|
|
180
|
+
const normalized = normalizeIp(address);
|
|
181
|
+
return normalized !== null && allowedIps.includes(normalized);
|
|
182
|
+
});
|
|
183
|
+
if (hostnameAllowed || allIpsAllowed) {
|
|
150
184
|
return { hostname, resolvedIp };
|
|
151
185
|
}
|
|
152
186
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
addr = ipaddr.parse(resolvedIp);
|
|
156
|
-
}
|
|
157
|
-
catch {
|
|
158
|
-
throw new MediaUrlBlockedError();
|
|
159
|
-
}
|
|
160
|
-
if (addr.kind() === "ipv6") {
|
|
161
|
-
const ipv6 = addr;
|
|
162
|
-
if (ipv6.isIPv4MappedAddress()) {
|
|
163
|
-
addr = ipv6.toIPv4Address();
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
const range = addr.range();
|
|
167
|
-
if (BLOCKED_RANGES.has(range)) {
|
|
168
|
-
throw new MediaUrlBlockedError();
|
|
187
|
+
for (const { address } of resolved) {
|
|
188
|
+
assertAddressAllowed(address);
|
|
169
189
|
}
|
|
170
190
|
return { hostname, resolvedIp };
|
|
171
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-validation.utils.js","sourceRoot":"","sources":["../../../src/mcp/utils/media-validation.utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"media-validation.utils.js","sourceRoot":"","sources":["../../../src/mcp/utils/media-validation.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,6 +111,44 @@ export declare const mockCards: {
|
|
|
111
111
|
css: string;
|
|
112
112
|
note: number;
|
|
113
113
|
};
|
|
114
|
+
reversedForward: {
|
|
115
|
+
cardId: number;
|
|
116
|
+
noteId: number;
|
|
117
|
+
deckName: string;
|
|
118
|
+
question: string;
|
|
119
|
+
answer: string;
|
|
120
|
+
due: number;
|
|
121
|
+
interval: number;
|
|
122
|
+
factor: number;
|
|
123
|
+
reviews: number;
|
|
124
|
+
lapses: number;
|
|
125
|
+
type: number;
|
|
126
|
+
queue: number;
|
|
127
|
+
modelName: string;
|
|
128
|
+
fieldOrder: number;
|
|
129
|
+
ord: number;
|
|
130
|
+
css: string;
|
|
131
|
+
note: number;
|
|
132
|
+
};
|
|
133
|
+
reversedBackward: {
|
|
134
|
+
cardId: number;
|
|
135
|
+
noteId: number;
|
|
136
|
+
deckName: string;
|
|
137
|
+
question: string;
|
|
138
|
+
answer: string;
|
|
139
|
+
due: number;
|
|
140
|
+
interval: number;
|
|
141
|
+
factor: number;
|
|
142
|
+
reviews: number;
|
|
143
|
+
lapses: number;
|
|
144
|
+
type: number;
|
|
145
|
+
queue: number;
|
|
146
|
+
modelName: string;
|
|
147
|
+
fieldOrder: number;
|
|
148
|
+
ord: number;
|
|
149
|
+
css: string;
|
|
150
|
+
note: number;
|
|
151
|
+
};
|
|
114
152
|
};
|
|
115
153
|
export declare const mockQueries: {
|
|
116
154
|
valid: {
|
|
@@ -63,7 +63,7 @@ exports.mockCards = {
|
|
|
63
63
|
noteId: 1502298033753,
|
|
64
64
|
deckName: "Spanish",
|
|
65
65
|
question: "¿Cómo estás?",
|
|
66
|
-
answer: "
|
|
66
|
+
answer: "¿Cómo estás?\n\n<hr id=answer>\n\nHow are you?",
|
|
67
67
|
due: 1,
|
|
68
68
|
interval: 1,
|
|
69
69
|
factor: 2500,
|
|
@@ -82,7 +82,7 @@ exports.mockCards = {
|
|
|
82
82
|
noteId: 1502298033757,
|
|
83
83
|
deckName: "Japanese::JLPT N5",
|
|
84
84
|
question: "こんにちは",
|
|
85
|
-
answer: "
|
|
85
|
+
answer: "こんにちは\n\n<hr id=answer>\n\nHello",
|
|
86
86
|
due: 0,
|
|
87
87
|
interval: 0,
|
|
88
88
|
factor: 2500,
|
|
@@ -96,6 +96,44 @@ exports.mockCards = {
|
|
|
96
96
|
css: "",
|
|
97
97
|
note: 1502298033757,
|
|
98
98
|
},
|
|
99
|
+
reversedForward: {
|
|
100
|
+
cardId: 1502298033758,
|
|
101
|
+
noteId: 1502298033757,
|
|
102
|
+
deckName: "Japanese::JLPT N5",
|
|
103
|
+
question: "こんにちは",
|
|
104
|
+
answer: "こんにちは\n\n<hr id=answer>\n\nHello",
|
|
105
|
+
due: 1,
|
|
106
|
+
interval: 1,
|
|
107
|
+
factor: 2500,
|
|
108
|
+
reviews: 2,
|
|
109
|
+
lapses: 0,
|
|
110
|
+
type: 2,
|
|
111
|
+
queue: 2,
|
|
112
|
+
modelName: "Basic (and reversed card)",
|
|
113
|
+
fieldOrder: 0,
|
|
114
|
+
ord: 0,
|
|
115
|
+
css: "",
|
|
116
|
+
note: 1502298033757,
|
|
117
|
+
},
|
|
118
|
+
reversedBackward: {
|
|
119
|
+
cardId: 1502298033759,
|
|
120
|
+
noteId: 1502298033757,
|
|
121
|
+
deckName: "Japanese::JLPT N5",
|
|
122
|
+
question: "Hello",
|
|
123
|
+
answer: "Hello\n\n<hr id=answer>\n\nこんにちは",
|
|
124
|
+
due: 1,
|
|
125
|
+
interval: 1,
|
|
126
|
+
factor: 2500,
|
|
127
|
+
reviews: 2,
|
|
128
|
+
lapses: 0,
|
|
129
|
+
type: 2,
|
|
130
|
+
queue: 2,
|
|
131
|
+
modelName: "Basic (and reversed card)",
|
|
132
|
+
fieldOrder: 1,
|
|
133
|
+
ord: 1,
|
|
134
|
+
css: "",
|
|
135
|
+
note: 1502298033757,
|
|
136
|
+
},
|
|
99
137
|
};
|
|
100
138
|
exports.mockQueries = {
|
|
101
139
|
valid: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-data.js","sourceRoot":"","sources":["../../src/test-fixtures/mock-data.ts"],"names":[],"mappings":";;;AAIa,QAAA,SAAS,GAAG;IACvB,OAAO,EAAE;QACP,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE;SAC1C;QACD,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;QAC9B,KAAK,EAAE,CAAC,aAAa,CAAC;QACtB,GAAG,EAAE,UAAU;KAChB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,2BAA2B;QACtC,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;YACnC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;SACnC;QACD,IAAI,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;QAC/B,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;QACrC,GAAG,EAAE,UAAU;KAChB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,CAAC,EAAE;YAChE,IAAI,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,CAAC,EAAE;SACrE;QACD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,CAAC,aAAa,CAAC;QACtB,GAAG,EAAE,UAAU;KAChB;CACF,CAAC;AAEW,QAAA,SAAS,GAAG;IACvB,SAAS,EAAE;QACT,eAAe,EAAE;YACf,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,GAAG;SACnB;QACD,eAAe,EAAE;YACf,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,GAAG;SACnB;KACF;IACD,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,kBAAkB,CAAC;CACvE,CAAC;
|
|
1
|
+
{"version":3,"file":"mock-data.js","sourceRoot":"","sources":["../../src/test-fixtures/mock-data.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankimcp/anki-mcp-server",
|
|
3
3
|
"mcpName": "ai.ankimcp/anki-mcp-server",
|
|
4
|
-
"version": "0.22.
|
|
4
|
+
"version": "0.22.5",
|
|
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,13 +57,13 @@
|
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
60
|
-
"@nestjs/common": "^11.1.
|
|
60
|
+
"@nestjs/common": "^11.1.28",
|
|
61
61
|
"@nestjs/config": "^4.0.4",
|
|
62
|
-
"@nestjs/core": "11.1.
|
|
62
|
+
"@nestjs/core": "11.1.28",
|
|
63
63
|
"@nestjs/jwt": "^11.0.2",
|
|
64
64
|
"@nestjs/passport": "^11.0.5",
|
|
65
|
-
"@nestjs/platform-express": "^11.1.
|
|
66
|
-
"@rekog/mcp-nest": "^1.9.
|
|
65
|
+
"@nestjs/platform-express": "^11.1.28",
|
|
66
|
+
"@rekog/mcp-nest": "^1.9.11",
|
|
67
67
|
"async-mutex": "^0.5.0",
|
|
68
68
|
"commander": "^15.0.0",
|
|
69
69
|
"ipaddr.js": "^2.4.0",
|
|
@@ -80,34 +80,34 @@
|
|
|
80
80
|
"unified": "^11.0.5",
|
|
81
81
|
"unist-util-visit": "^5.1.0",
|
|
82
82
|
"update-notifier": "^7.3.1",
|
|
83
|
-
"ws": "^8.21.
|
|
83
|
+
"ws": "^8.21.1",
|
|
84
84
|
"zod": "^4.4.3",
|
|
85
85
|
"zod-to-json-schema": "^3.25.2"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
88
88
|
"@anthropic-ai/mcpb": "^2.1.2",
|
|
89
|
-
"@eslint/eslintrc": "^3.3.
|
|
89
|
+
"@eslint/eslintrc": "^3.3.6",
|
|
90
90
|
"@eslint/js": "^10.0.1",
|
|
91
|
-
"@modelcontextprotocol/inspector": "^0.
|
|
92
|
-
"@nestjs/cli": "^11.0.
|
|
91
|
+
"@modelcontextprotocol/inspector": "^1.0.0",
|
|
92
|
+
"@nestjs/cli": "^11.0.24",
|
|
93
93
|
"@nestjs/schematics": "^11.1.0",
|
|
94
|
-
"@nestjs/testing": "^11.1.
|
|
94
|
+
"@nestjs/testing": "^11.1.28",
|
|
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": "^26.
|
|
100
|
-
"@types/supertest": "^7.2.
|
|
99
|
+
"@types/node": "^26.1.1",
|
|
100
|
+
"@types/supertest": "^7.2.1",
|
|
101
101
|
"@types/update-notifier": "^6.0.8",
|
|
102
102
|
"@types/ws": "^8.18.1",
|
|
103
|
-
"eslint": "^10.
|
|
103
|
+
"eslint": "^10.7.0",
|
|
104
104
|
"eslint-config-prettier": "^10.1.8",
|
|
105
105
|
"eslint-plugin-prettier": "^5.5.6",
|
|
106
106
|
"globals": "^17.7.0",
|
|
107
107
|
"husky": "^9.1.7",
|
|
108
108
|
"jest": "^30.4.2",
|
|
109
|
-
"prettier": "^3.9.
|
|
110
|
-
"sharp": "^0.35.
|
|
109
|
+
"prettier": "^3.9.6",
|
|
110
|
+
"sharp": "^0.35.3",
|
|
111
111
|
"source-map-support": "^0.5.21",
|
|
112
112
|
"supertest": "^7.2.2",
|
|
113
113
|
"ts-jest": "^29.4.11",
|
|
@@ -115,7 +115,7 @@
|
|
|
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.65.0"
|
|
119
119
|
},
|
|
120
120
|
"jest": {
|
|
121
121
|
"moduleFileExtensions": [
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
],
|
|
169
169
|
"forceExit": true
|
|
170
170
|
},
|
|
171
|
-
"packageManager": "npm@
|
|
171
|
+
"packageManager": "npm@12.0.1",
|
|
172
172
|
"engines": {
|
|
173
173
|
"node": ">=22.12.0"
|
|
174
174
|
},
|