Skip to main content
Glama

@lifeng688/anki-mcp

MCP stdio server for controlling local Anki via AnkiConnect. Enables LLMs (Claude, Cursor, Cline) to manage Anki decks and notes through a standardized tool interface.

v0.2.0 — Controlled write operations with safe defaults (dryRun), tag management, and explicit sync confirmation.

Quick Install

npm install @lifeng688/anki-mcp

Or try it instantly:

npx @lifeng688/anki-mcp

Related MCP server: TalkToAnki

Prerequisites

  1. Anki desktop installed

  2. AnkiConnect add-on (code 2055492159) — install via Tools → Add-ons → Get Add-ons

  3. Node.js >= 18.0.0

Verify AnkiConnect is running:

curl -X POST http://127.0.0.1:8765 \
  -H "Content-Type: application/json" \
  -d '{"action":"version","version":6}'
# Expected: {"result":6,"error":null}

Core Features

  • Deck management — List and create decks (including hierarchical :: decks)

  • Note operations — Add, search, update, delete, and inspect notes

  • Tag management — Add and remove tags on notes by ID or search query

  • Batch operations — Add multiple notes with per-item result tracking

  • Safe note deletion — Delete notes with dryRun preview and explicit confirmation

  • Explicit sync — Trigger AnkiCloud sync with confirmation guard

  • Controlled writes — All mutation tools default to dryRun=true

  • Safety firstdryRun support for batch writes, duplicate prevention, field validation

  • Unified responses — Consistent success/error envelope across all tools

  • Security-focused — Localhost only, no DB access, no card content logging

Available Tools

Tool

Description

Side Effects

ping

Server health check

None

check_anki_connection

Verify AnkiConnect reachable

None

list_decks

List all decks

None

create_deck

Create a new deck

Creates deck

list_note_models

List note models

None

get_note_model_fields

Get model fields

None

add_note

Add single note

Creates note

add_notes

Batch add notes

Creates notes

search_notes

Search notes

None

get_notes_info

Get note details

None

update_note_fields

Update note fields

Modifies note

delete_notes

Delete notes by ID or query

Deletes notes (requires confirm)

add_tags

Add tags to notes

Modifies note tags

remove_tags

Remove tags from notes

Modifies note tags

sync_anki

Trigger AnkiCloud sync

Triggers network sync (requires confirm)

See Tool Schema Reference for full input/output specs.

MCP Client Configuration

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "anki": {
      "command": "node",
      "args": ["$(npm root)/@lifeng688/anki-mcp/dist/index.js"]
    }
  }
}

With environment variables:

{
  "mcpServers": {
    "anki": {
      "command": "node",
      "args": ["$(npm root)/@lifeng688/anki-mcp/dist/index.js"],
      "env": {
        "ANKI_CONNECT_URL": "http://127.0.0.1:8765",
        "ANKI_CONNECT_VERSION": "6",
        "ANKI_DEFAULT_DECK": "Default::MCP",
        "ANKI_DEFAULT_MODEL": "Basic",
        "ANKI_LOG_LEVEL": "warn"
      }
    }
  }
}

Note: Replace $(npm root)/@lifeng688/anki-mcp/dist/index.js with the actual resolved path. You can find it with:

npm root -g
# or
npm root

Cursor / Cline

Same JSON format — add to your MCP server configuration. Point args to the installed dist/index.js inside the @lifeng688/anki-mcp package directory.

Global Install

npm install -g @lifeng688/anki-mcp

Then configure your client to point to:

<global-npm-root>/@lifeng688/anki-mcp/dist/index.js

Environment Variables

Variable

Default

Description

ANKI_CONNECT_URL

(none)

Full AnkiConnect HTTP endpoint (highest priority). Overrides HOST:PORT.

ANKI_CONNECT_HOST

127.0.0.1

Host part, used when ANKI_CONNECT_URL is not set.

ANKI_CONNECT_PORT

8765

Port part, used when ANKI_CONNECT_URL is not set.

ANKI_CONNECT_VERSION

6

AnkiConnect API version

ANKI_CONNECT_KEY

(empty)

AnkiConnect API key (if configured)

ANKI_DEFAULT_DECK

Default

Default deck for note operations

ANKI_DEFAULT_MODEL

Basic

Default note model

ANKI_REQUEST_TIMEOUT_MS

10000

HTTP request timeout in milliseconds

ANKI_LOG_LEVEL

info

Log verbosity: error / warn / info / debug

URL Resolution Priority:

  1. ANKI_CONNECT_URL — if set, used as-is (must point to localhost)

  2. ANKI_CONNECT_HOST + ANKI_CONNECT_PORT — composed as http://{HOST}:{PORT}

  3. http://127.0.0.1:8765 — hardcoded default

Security

  • This server only connects to http://127.0.0.1:8765 (localhost)

  • It does not read/write Anki SQLite databases directly

  • It does not upload any data externally

  • ANKI_CONNECT_KEY is never logged

  • delete_notes defaults to dryRun=true; real deletion requires confirm="DELETE_NOTES"

  • sync_anki defaults to dryRun=true; real sync requires confirm="SYNC_ANKI"

  • add_tags / remove_tags default to dryRun=true

  • import/export are not in v0.2.0

First-Time Setup

  1. Create a Test::MCP deck before making real changes

  2. Run ping and check_anki_connection to verify connectivity

  3. Use add_notes with dryRun: true to preview before writing

  4. Before deleting notes, always run delete_notes with dryRun: true first

  5. Before batch tag operations, run add_tags / remove_tags with dryRun: true first

  6. sync_anki requires explicit confirm="SYNC_ANKI" for real sync

  7. Never expose port 8765 to the network

Documentation

License

MIT — See LICENSE for details.

Available Tools

11 tools
add_noteA

Add a single note (flashcard) to Anki.

ParametersJSON Schema
NameRequiredDescriptionDefault
deckNameYesTarget deck name.
modelNameYesNote model name.
fieldsYesField values as key-value pairs.
tagsNoTags to assign to the note.
allowDuplicateNoWhether to allow duplicates. Default false.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states 'add' (mutation) but lacks details on permissions, side effects, or what happens on duplicate—even though an 'allowDuplicate' parameter exists. The description does not compensate for the missing annotation context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no unnecessary words. Every word earns its place by stating the action, object, and context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The parameter schema is complete, but there is no output schema and the description lacks behavioral context (e.g., duplicate handling, error scenarios). For a mutation tool, this is minimally adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% parameter description coverage, so the baseline is 3. The description adds no extra meaning beyond the tool's purpose; all parameter semantics are already covered in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Add', the resource 'single note (flashcard)', and the destination 'Anki'. It distinctly separates from sibling add_notes (plural) and update_note_fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for a single note, but provides no explicit guidance on when to use this tool versus alternatives like add_notes or when duplicates are allowed. No context about prerequisites or excluded use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_notesB

Batch add multiple notes to Anki. Supports dryRun for preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
deckNameYesTarget deck name.
modelNameYesNote model name.
notesYesArray of note objects with fields and optional tags.
allowDuplicateNoWhether to allow duplicates. Default false.
dryRunNoIf true, only validate and preview without writing.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It mentions dryRun for preview, but fails to disclose behavioral traits like side effects (creation), error handling, or performance implications for batch operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with one sentence. It is front-loaded with the core purpose. However, it could be slightly longer to include essential usage guidance without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a batch operation with 5 parameters and no output schema, the description is insufficient. It omits details on return values, error behavior, and performance considerations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema; it merely restates 'dryRun' which is already described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: batch adding multiple notes to Anki. The verb 'add' and resource 'notes' are specific, and it distinguishes from the sibling 'add_note' by indicating batch operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not specify when to use this tool versus alternatives (like 'add_note' for single notes) or any prerequisites or constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_anki_connectionA

Check if AnkiConnect is reachable and return the connection status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavior. It states it checks reachability and returns status, which is adequate for a simple read operation. However, it does not specify the format of the status (e.g., boolean or JSON) or potential errors, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is front-loaded with the core action and is extremely concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no parameters and no output schema, the description is mostly adequate but falls short on explaining the return value in detail. 'Connection status' is vague; the agent might need to know if it returns a boolean, string, or structured object.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is 100%. According to the guidelines, the baseline for zero parameters is 4. The description does not add parameter-specific meaning, which is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'check' and the specific resource 'AnkiConnect', and mentions the return value 'connection status'. It is precise and distinguishes from sibling tools like 'ping' by naming the service.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool vs alternatives (e.g., 'ping' or other connectivity checks). It lacks any context about prerequisites or ideal scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_deckB

Create a new Anki deck. Supports hierarchical decks using :: separator.

ParametersJSON Schema
NameRequiredDescriptionDefault
deckNameYesName of the deck to create. Supports hierarchy with ::.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. It mentions creation and hierarchy but does not disclose behavior if deck already exists, error handling, or mutation details. Insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with front-loaded purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with one parameter and no output schema; description covers basic purpose and hierarchy but omits return value or error conditions. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter description already explaining hierarchy. Tool description adds 'new' and 'Anki' but not substantial extra meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'create' and resource 'Anki deck', and distinguishes from sibling tools like list_decks or add_note. It also mentions hierarchical support via '::'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus other tools. No mention of prerequisites or context. The description is self-evident for a creation tool but lacks explicit alternatives or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_note_model_fieldsB

Get the field names for a specific note model.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNameYesName of the note model (e.g. "Basic").

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavior. It implies a read-only operation but does not specify what happens if the model does not exist, error handling, or output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no unnecessary words. However, it could include more useful detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is adequate but lacks details on return values or error cases. It is minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for the parameter 'modelName'. The tool description adds no extra meaning beyond the schema, so baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'field names for a specific note model'. It is specific and distinguishes from sibling tools like 'add_note' or 'get_notes_info'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. No mention of prerequisites, context, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_notes_infoB

Get detailed information about specific notes by their IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteIdsYesArray of positive integer note IDs to retrieve.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility for behavioral disclosure. It mentions 'detailed information' but does not specify what fields or structure are returned, nor does it discuss authorization, rate limits, or side effects (likely a read operation). This is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, direct sentence that conveys the core function without any redundant or extraneous information. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one required parameter and no output schema, the description is nearly complete. However, it lacks any hint about the return format (e.g., fields, objects), which would enhance completeness. Still, it adequately covers the tool's purpose and input.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; the schema's description already explains the 'noteIds' parameter clearly. The tool description adds no semantic depth beyond the schema, earning a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get', the resource 'notes', and the method 'by their IDs'. It effectively distinguishes from sibling tools like 'search_notes' (which searches across notes) and 'add_note' (which creates notes). No ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The sibling 'search_notes' exists for broader queries, but the description does not mention this distinction or any prerequisites. A score of 2 reflects minimal usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_decksA

List all available Anki decks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It correctly identifies a read-only operation, but does not disclose potential issues like performance with many decks, authentication requirements, or error handling. The description is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a single sentence of 5 words. No unnecessary information, perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema, no nested objects), the description fully covers what the agent needs to know. It states the scope ('all available decks') adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%. The description does not need to add parameter details. Per guidelines, 0 parameters yields a baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool lists all available Anki decks, using a specific verb ('list') and resource ('decks'). It is unambiguous and immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. There is no mention of when to use this tool versus alternatives like search_notes or create_deck. The agent is given no context about typical use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_note_modelsA

List all available note models (card types).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description carries full burden. Adequately states it lists models, but doesn't mention any potential details like return format or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While simple, the description lacks details about the output format (e.g., names, IDs). No output schema provided, so more context would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so no additional parameter info needed. Schema coverage is trivially 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists all available note models (card types), using a specific verb and resource. Distinguishes from siblings like add_note, get_note_model_fields, and search_notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Lacks context such as 'use to find model IDs before adding notes' or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pingA

Health check for the MCP server. Returns server metadata without requiring Anki to be running.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description adequately discloses that the tool is non-destructive (health check) and returns metadata, implying safe read-only behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words, conveying all necessary information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description is fully complete, covering purpose, scope, and prerequisites (no Anki needed).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so the description's mention of returning 'server metadata' adds sufficient context beyond the empty schema, meeting the baseline for 0-param tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool performs a 'Health check' on the 'MCP server', clearly distinguishing it from siblings like 'check_anki_connection' by noting it does not require Anki to be running.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates use for verifying server health independently of Anki, but does not explicitly state when not to use or provide alternatives, though the context makes it clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_notesB

Search for notes in Anki using Anki search syntax.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesAnki search query.
limitNoMaximum number of results.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It does not state that the tool is read-only, what it returns, or any side effects. The only behavioral clue is 'search' implying no mutation, but this is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no fluff. Every word adds value, specifying the action, resource, and query syntax.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a search function with custom syntax. The description mentions 'Anki search syntax' but doesn't explain that syntax or what fields are searchable. Given no output schema, the description could do more to inform about result format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond what the schema provides, hence baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Search' and resource 'notes', and specifies the use of 'Anki search syntax', which gives a good sense of the tool's functionality. However, it does not explicitly distinguish it from sibling tools like 'get_notes_info', but the mention of search syntax implies a query-based retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as 'get_notes_info' for fetching by ID or 'add_note' for creation. No when-to-use or when-not-to-use information is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_note_fieldsB

Update specific fields of an existing note. Supports dryRun.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteIdYesThe note ID to update.
fieldsYesField name-value pairs to update.
dryRunNoIf true, only preview without writing.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions support for dryRun, which is a key behavioral trait (preview without writing). However, it does not disclose other behaviors like error handling, idempotency, or constraints on fields beyond what the schema provides. Since no annotations exist, the description carries the full burden and is only partially sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, front-loading the core action and a key feature (dryRun). No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters and no output schema, the description is minimal. It lacks context such as return value, failure behavior, or prerequisites. While the schema covers parameter definitions, the description does not round out understanding for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters documented. The description adds minimal extra meaning beyond 'Supports dryRun', which is already in the schema. Thus baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and resource 'specific fields of an existing note'. It distinguishes from sibling tools like add_note (create) and get_notes_info (read), though it doesn't explicitly differentiate from potential other update tools (none listed).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or conditions. The description only mentions dryRun but does not explain when to use it or exclude other scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.1.0
    • First observedadd_note
    • First observedadd_notes
    • First observedcheck_anki_connection
    • First observedcreate_deck
    • First observedget_note_model_fields
    • First observedget_notes_info
    • First observedlist_decks
    • First observedlist_note_models
    • First observedping
    • First observedsearch_notes
    • First observedupdate_note_fields

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: single vs batch note addition, deck vs model listing, search vs info retrieval, etc. No overlapping responsibilities.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (e.g., add_note, list_decks, search_notes). No deviations or mixed conventions.

Tool Count5/5

11 tools provide a well-scoped set for Anki interaction—covering deck creation, note operations, search, and health checks—without being excessive or insufficient.

Completeness3/5

The set covers core note and deck operations, but lacks delete functionality (delete_note, delete_deck) and update deck operations, leaving some lifecycle gaps.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that enables AI assistants to interact with the Anki flashcard application for studying, deck management, and note creation. It supports natural language interaction for reviewing cards, searching content, and managing media files across local and remote environments.
    2,021 npm
    473
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI assistants to seamlessly manage Anki flashcards, decks, and templates through the AnkiConnect API. It supports intelligent querying, batch note creation, and detailed study progress analysis using natural language.
    4
    MIT