@ankimcp/anki-mcp-server 0.8.2 → 0.8.4
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
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Anki MCP Server
|
|
2
2
|
|
|
3
|
+
> **⚠️ IMPORTANT: Project Renamed (v0.8.2+)**
|
|
4
|
+
>
|
|
5
|
+
> This project has been renamed and moved:
|
|
6
|
+
> - **Package**: `anki-mcp-http` → `@ankimcp/anki-mcp-server`
|
|
7
|
+
> - **Commands**: `anki-mcp-http` → `ankimcp` or `anki-mcp-server`
|
|
8
|
+
> - **Repository**: `anki-mcp/anki-mcp-desktop` → `ankimcp/anki-mcp-server`
|
|
9
|
+
>
|
|
10
|
+
> The old `anki-mcp-http` package continues to be published for backward compatibility but is deprecated. Please migrate to the new package.
|
|
11
|
+
>
|
|
12
|
+
> **[Read more about this change →](https://ankimcp.ai/blog/organization-and-naming-update/)**
|
|
13
|
+
|
|
3
14
|
[](https://github.com/ankimcp/anki-mcp-server/actions/workflows/test.yml)
|
|
4
15
|
[](https://www.npmjs.com/package/@ankimcp/anki-mcp-server)
|
|
5
16
|
|
|
@@ -124,7 +135,7 @@ Then configure:
|
|
|
124
135
|
{
|
|
125
136
|
"mcpServers": {
|
|
126
137
|
"anki-mcp": {
|
|
127
|
-
"command": "
|
|
138
|
+
"command": "ankimcp",
|
|
128
139
|
"args": ["--stdio"],
|
|
129
140
|
"env": {
|
|
130
141
|
"ANKI_CONNECT_URL": "http://localhost:8765"
|
|
@@ -176,14 +187,14 @@ npx @ankimcp/anki-mcp-server --anki-connect http://localhost:8765
|
|
|
176
187
|
npm install -g @ankimcp/anki-mcp-server
|
|
177
188
|
|
|
178
189
|
# Run the server
|
|
179
|
-
|
|
190
|
+
ankimcp
|
|
180
191
|
|
|
181
192
|
# With ngrok tunnel (recommended for web-based AI)
|
|
182
|
-
|
|
193
|
+
ankimcp --ngrok
|
|
183
194
|
|
|
184
195
|
# With custom options
|
|
185
|
-
|
|
186
|
-
|
|
196
|
+
ankimcp --port 8080 --host 0.0.0.0
|
|
197
|
+
ankimcp --anki-connect http://localhost:8765
|
|
187
198
|
```
|
|
188
199
|
|
|
189
200
|
**Method 3: Install from source (for development)**
|
|
@@ -197,7 +208,7 @@ npm run start:prod:http
|
|
|
197
208
|
**CLI Options:**
|
|
198
209
|
|
|
199
210
|
```bash
|
|
200
|
-
|
|
211
|
+
ankimcp [options]
|
|
201
212
|
|
|
202
213
|
Options:
|
|
203
214
|
--stdio Run in STDIO mode (for MCP clients)
|
|
@@ -215,10 +226,10 @@ Usage with npx (no installation needed):
|
|
|
215
226
|
|
|
216
227
|
Usage with global installation:
|
|
217
228
|
npm install -g @ankimcp/anki-mcp-server # Install once
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
229
|
+
ankimcp # HTTP mode
|
|
230
|
+
ankimcp --port 8080 # Custom port
|
|
231
|
+
ankimcp --stdio # STDIO mode
|
|
232
|
+
ankimcp --ngrok # HTTP mode with ngrok tunnel
|
|
222
233
|
```
|
|
223
234
|
|
|
224
235
|
**Using with ngrok:**
|
|
@@ -231,7 +242,7 @@ npm install -g ngrok
|
|
|
231
242
|
ngrok config add-authtoken <your-token> # Get token from https://dashboard.ngrok.com
|
|
232
243
|
|
|
233
244
|
# Start server with ngrok tunnel in one command:
|
|
234
|
-
|
|
245
|
+
ankimcp --ngrok
|
|
235
246
|
|
|
236
247
|
# The tunnel URL will be displayed in the startup banner
|
|
237
248
|
# Example output:
|
|
@@ -242,7 +253,7 @@ ngrok config add-authtoken <your-token> # Get token from https://dashboard.ngro
|
|
|
242
253
|
|
|
243
254
|
```bash
|
|
244
255
|
# Terminal 1: Start the server
|
|
245
|
-
|
|
256
|
+
ankimcp
|
|
246
257
|
|
|
247
258
|
# Terminal 2: Create tunnel
|
|
248
259
|
ngrok http 3000
|
|
@@ -255,7 +266,7 @@ ngrok http 3000
|
|
|
255
266
|
- ✅ One command instead of two terminals
|
|
256
267
|
- ✅ Automatic cleanup when you press Ctrl+C
|
|
257
268
|
- ✅ URL displayed directly in the startup banner
|
|
258
|
-
- ✅ Works with custom ports:
|
|
269
|
+
- ✅ Works with custom ports: `ankimcp --port 8080 --ngrok`
|
|
259
270
|
|
|
260
271
|
**Security note:** Anyone with your ngrok URL can access your Anki, so keep that URL private!
|
|
261
272
|
|
|
@@ -358,11 +369,26 @@ The `findNotes` tool supports Anki's powerful query syntax:
|
|
|
358
369
|
- Each note model has its own CSS styling - use `modelStyling` to get model-specific CSS
|
|
359
370
|
|
|
360
371
|
#### Update Warning
|
|
361
|
-
⚠️ **IMPORTANT**: When using `updateNoteFields`, do NOT view the note in Anki's browser while updating, or the fields will not update properly. Close the browser or switch to a different note before updating.
|
|
372
|
+
⚠️ **IMPORTANT**: When using `updateNoteFields`, do NOT view the note in Anki's browser while updating, or the fields will not update properly. Close the browser or switch to a different note before updating. See [Known Issues](#known-issues) for more details.
|
|
362
373
|
|
|
363
374
|
#### Deletion Safety
|
|
364
375
|
The `deleteNotes` tool requires explicit confirmation (`confirmDeletion: true`) to prevent accidental deletions. Deleting a note removes ALL associated cards permanently.
|
|
365
376
|
|
|
377
|
+
## Known Issues
|
|
378
|
+
|
|
379
|
+
For a comprehensive list of known issues and limitations, please visit our documentation:
|
|
380
|
+
|
|
381
|
+
**[Known Issues Documentation](https://ankimcp.ai/docs/known-issues/)**
|
|
382
|
+
|
|
383
|
+
### Critical Limitations
|
|
384
|
+
|
|
385
|
+
#### Note Updates Fail When Viewed in Browser
|
|
386
|
+
⚠️ **IMPORTANT**: When updating notes using `updateNoteFields`, the update will silently fail if the note is currently being viewed in Anki's browser window. This is an upstream AnkiConnect limitation.
|
|
387
|
+
|
|
388
|
+
**Workaround**: Always close the browser or navigate to a different note before updating.
|
|
389
|
+
|
|
390
|
+
For more details and other known issues, see the [full documentation](https://ankimcp.ai/docs/known-issues/).
|
|
391
|
+
|
|
366
392
|
## Development
|
|
367
393
|
|
|
368
394
|
### Transport Modes
|
|
@@ -40,7 +40,11 @@ class NgrokService {
|
|
|
40
40
|
}
|
|
41
41
|
async isNgrokInstalled() {
|
|
42
42
|
return new Promise((resolve) => {
|
|
43
|
-
const
|
|
43
|
+
const isWindows = process.platform === "win32";
|
|
44
|
+
const command = isWindows ? "where" : "which";
|
|
45
|
+
const check = (0, child_process_1.spawn)(command, ["ngrok"], {
|
|
46
|
+
shell: isWindows,
|
|
47
|
+
});
|
|
44
48
|
check.on("close", (code) => resolve(code === 0));
|
|
45
49
|
check.on("error", () => resolve(false));
|
|
46
50
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngrok.service.js","sourceRoot":"","sources":["../../src/services/ngrok.service.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAoD;AACpD,gDAAwB;AAOxB,MAAa,YAAY;IACf,OAAO,GAAwB,IAAI,CAAC;IACpC,yBAAyB,GAAG,KAAK,CAAC;IAQ1C,KAAK,CAAC,KAAK,CAAC,IAAY;QAEtB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,2BAA2B;gBACzB,yCAAyC;gBACzC,gDAAgD;gBAChD,0DAA0D,CAC7D,CAAC;QACJ,CAAC;QAGD,IAAI,CAAC,OAAO,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;YACvD,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAGH,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACpC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACxC,CAAC;QAGD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACxC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;QAGH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE5C,OAAO;YACL,SAAS;YACT,MAAM,EAAE,uBAAuB;SAChC,CAAC;IACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"ngrok.service.js","sourceRoot":"","sources":["../../src/services/ngrok.service.ts"],"names":[],"mappings":"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"}
|