@ankimcp/anki-mcp-server 0.22.3 → 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.
@@ -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 BLOCKED_RANGES = new Set([
89
- "private",
90
- "loopback",
91
- "linkLocal",
92
- "reserved",
93
- "unspecified",
94
- "uniqueLocal",
95
- "carrierGradeNat",
96
- "multicast",
97
- "broadcast",
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 resolvedIp;
161
+ let resolved;
140
162
  try {
141
- const result = await dns.promises.lookup(hostnameForLookup);
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 isAllowed = config.allowedHosts.some((allowed) => allowed === hostname || allowed === resolvedIp);
149
- if (isAllowed) {
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
- let addr;
154
- try {
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":"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"}
1
+ {"version":3,"file":"media-validation.utils.js","sourceRoot":"","sources":["../../../src/mcp/utils/media-validation.utils.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.3",
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.27",
60
+ "@nestjs/common": "^11.1.28",
61
61
  "@nestjs/config": "^4.0.4",
62
- "@nestjs/core": "11.1.27",
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.27",
66
- "@rekog/mcp-nest": "^1.9.10",
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.0",
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.5",
89
+ "@eslint/eslintrc": "^3.3.6",
90
90
  "@eslint/js": "^10.0.1",
91
- "@modelcontextprotocol/inspector": "^0.22.0",
92
- "@nestjs/cli": "^11.0.23",
91
+ "@modelcontextprotocol/inspector": "^1.0.0",
92
+ "@nestjs/cli": "^11.0.24",
93
93
  "@nestjs/schematics": "^11.1.0",
94
- "@nestjs/testing": "^11.1.27",
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.0.1",
100
- "@types/supertest": "^7.2.0",
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.6.0",
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.1",
110
- "sharp": "^0.35.2",
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.62.0"
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@11.17.0",
171
+ "packageManager": "npm@12.0.1",
172
172
  "engines": {
173
173
  "node": ">=22.12.0"
174
174
  },