Skip to main content
Glama

안키-MCP

대장간 배지

Anki용 MCP 서버입니다. 이 서버는 모델 컨텍스트 프로토콜(MCP)을 통해 Anki와 상호 작용할 수 있도록 합니다. 사용자는 플래시카드, 데크, 복습 과정을 프로그래밍 방식으로 관리할 수 있습니다.

필수 조건

  • Node.js와 npm이 설치되었습니다.

  • Anki에 AnkiConnect 플러그인이 설치되어 실행 중입니다.

Related MCP server: Anki MCP Server

설정 및 실행

Anki Connect는 로컬에서만 작동하므로 로컬에서 실행하는 것이 좋습니다.

로컬로 실행하려면:

  1. 저장소를 복제합니다.

    지엑스피1

  2. 종속성 설치:

    npm install
  3. 프로젝트 빌드: package.json 의 prepare 스크립트는 설치 시 자동으로 빌드를 실행합니다. 수동으로 빌드해야 하는 경우:

    npm run build

    이 명령은 TypeScript 코드를 컴파일하고 클라이언트 스크립트를 실행 가능하게 만듭니다.

  4. Windows용 커서 설정과 통합

    "anki": {
          "command": "cmd",
          "args": [
            "/c",
            "node",
            "c:/Users/-/Downloads/anki-mcp/build/client.js"
          ]
        }

사용 가능한 도구

도구를 디버깅하려면 다음을 사용하세요.

npm run inspector

서버는 Anki와 상호작용하기 위한 다음과 같은 도구를 제공합니다.

  • update_cards :

    • 설명: 사용자가 퀴즈를 낸 카드에 답한 후, 이 도구를 사용하여 답한 카드를 표시하고 난이도를 업데이트합니다.

    • 입력: cardId (숫자)와 ease (숫자, 1-4)를 갖는 답변의 배열입니다.

  • add_card :

    • 설명: Anki에서 새 플래시카드를 만듭니다. 참고: 콘텐츠는 HTML을 사용합니다.

      • 줄바꿈: <br>

      • 코드: <pre style="background-color: transparent; padding: 10px; border-radius: 5px;">

      • 목록: <ol> 및 <li>

      • 굵게: <strong>

      • 이탤릭체: <em>

    • 입력:

      • fields : (객체) 키가 필드 이름(예: "한자", "병음")이고 값이 HTML 콘텐츠인 객체입니다.

      • modelName : (문자열) 사용할 Anki 노트 유형(모델)의 이름입니다.

      • deckName : (선택 문자열) 카드를 추가할 덱의 이름입니다. 기본값은 현재 덱 또는 '기본값'입니다.

      • tags : (문자열의 선택적 배열) 메모에 추가할 태그 목록입니다.

  • get_due_cards :

    • 설명: 검토가 필요한 지정된 수의 카드를 반환합니다.

    • 입력: num (숫자).

  • get_new_cards :

    • 설명: 주어진 수의 새 카드와 아직 보지 못한 카드를 반환합니다.

    • 입력: num (숫자).

  • get-deck-names :

    • 설명: 모든 Anki 덱 이름 목록을 가져옵니다.

    • 입력: 없음.

  • find-cards :

    • 설명: Anki 원시 검색 쿼리를 사용하여 카드를 찾습니다. 필드를 포함한 자세한 카드 정보를 반환합니다.

    • 입력: query (문자열, 예: 'deck:Default -tag:test' 또는 '"deck:My Deck" tag:important' ). 빈 필드를 필터링하려면 '-FieldName:_*' (예: '-Hanzi:_*' )를 사용하세요.

  • update-note-fields :

    • 설명: 주어진 Anki 노트의 특정 필드를 업데이트합니다.

    • 입력: noteId (숫자), fields (객체, 예: {"Front": "New Q", "Back": "New A"} ).

  • create_deck :

    • 설명: 새로운 Anki 덱을 만듭니다.

    • 입력: deckName (문자열).

  • bulk_update_notes :

    • 설명: 여러 Anki 노트의 특정 필드를 업데이트합니다.

    • 입력: notes 배열, 각 notes에는 noteId (숫자)와 fields (객체)가 있습니다.

  • get_model_names :

    • 설명: 사용 가능한 모든 Anki 노트 유형/모델 이름을 나열합니다.

    • 입력: 없음.

  • get_model_details :

    • 설명: 지정된 메모 유형에 대한 필드, 카드 템플릿 및 CSS 스타일을 검색합니다.

    • 입력: modelName (문자열).

  • get_deck_model_info :

    • 설명: 지정된 데크에서 사용된 노트 유형(모델)에 대한 정보를 검색합니다. 단일 모델이 사용되었는지, 여러 모델이 사용되었는지, 또는 데크가 비어 있거나 존재하지 않는지 확인하는 데 도움이 됩니다.

    • 입력: deckName (문자열).

    • 출력: deckName , status (예: "single_model_found", "multiple_models_found", "no_notes_found", "deck_not_found"), 그리고 조건에 따라 modelName (문자열) 또는 modelNames (문자열 배열)가 있는 객체입니다.

  • add_note_type_field :

    • 설명: 메모 유형에 새 필드를 추가합니다.

    • 입력: modelName (문자열), fieldName (문자열).

  • 노트_유형 remove_note_type_field :

    • 설명: 메모 유형에서 기존 필드를 제거합니다.

    • 입력: modelName (문자열), fieldName (문자열).

  • rename_note_type_field :

    • 설명: 메모 유형의 필드 이름을 바꿉니다.

    • 입력: modelName (문자열), oldFieldName (문자열), newFieldName (문자열).

  • reposition_note_type_field :

    • 설명: 메모 유형의 필드 순서(색인)를 변경합니다.

    • 입력: modelName (문자열), fieldName (문자열), index (숫자).

  • update_note_type_templates :

    • 설명: 노트 유형의 카드에 대한 HTML 템플릿(예: 앞면 및 뒷면)을 업데이트합니다.

    • 입력: modelName (문자열), templates (객체, 예: {"Card 1": {"Front": "html", "Back": "html"}} ).

  • update_note_type_styling 스타일링:

    • 설명: 메모 유형에 대한 CSS 스타일을 업데이트합니다.

    • 입력: modelName (문자열), css (문자열).

  • create_model :

    • 설명: 새로운 Anki 노트 유형(모델)을 만듭니다.

    • 입력: modelName (문자열), fieldNames (문자열 배열), cardTemplates (객체 배열, 각각 Name , Front , Back HTML 문자열 포함), css (선택적 문자열), isCloze (선택적 부울, 기본값은 false), modelType (선택적 문자열, 기본값은 'Standard').

  • add_bulk :

    • 설명: 한 번의 작업으로 Anki에 여러 개의 플래시카드를 추가합니다. 메모 콘텐츠는 HTML을 사용합니다. 이 도구는 여러 개의 메모(카드)를 한 번에 추가하는 데 사용됩니다.

    • 입력: 각 노트 객체가 포함하는 notes 배열:

      • fields : (객체) 키가 필드 이름이고 값이 HTML 콘텐츠인 객체입니다.

      • modelName : (문자열) 이 노트에 사용할 Anki 노트 유형(모델)의 이름입니다.

      • deckName : (선택 문자열) 이 노트의 덱 이름입니다. 기본값은 'Default'입니다.

      • tags : (문자열의 선택적 배열) 이 노트에 대한 태그 목록입니다.

자세한 내용은 여기에서 확인할 수 있습니다. Anki 통합 | Smithery

Available Tools

3 tools
anki_add_noteC

Add a flashcard to an Anki deck

ParametersJSON Schema
NameRequiredDescriptionDefault
backYesBack of the flashcard
deckNameYesThe target deck name
frontYesFront of the flashcard

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Add') which implies a write/mutation operation, but doesn't disclose any behavioral traits like whether it requires specific permissions, what happens if the deck doesn't exist, error conditions, or how the system responds to successful addition. The description is minimal and lacks operational 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?

The description is extremely concise with a single, clear sentence that communicates the core purpose without any wasted words. It's appropriately sized for a straightforward tool and gets directly to the point with no unnecessary elaboration.

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?

For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what happens after adding the flashcard, potential error conditions, or how to verify success. Given the tool's complexity as a write operation and the lack of structured behavioral information, more context about the operation's behavior and outcomes would be valuable.

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?

The description adds no parameter information beyond what's already in the schema, which has 100% coverage with clear descriptions for all three parameters. The baseline score of 3 reflects adequate schema documentation, but the description doesn't provide additional context about parameter relationships, constraints, or usage patterns.

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 action ('Add') and resource ('flashcard to an Anki deck'), making the purpose immediately understandable. It distinguishes from sibling 'anki_add_notes' by specifying singular 'flashcard' vs. plural 'notes', but doesn't explicitly differentiate from 'anki_create_deck' which creates decks rather than flashcards.

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 versus alternatives. It doesn't mention when to choose this over 'anki_add_notes' (for single vs. multiple cards) or 'anki_create_deck' (for creating decks before adding cards). No prerequisites or contextual usage information is provided.

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

anki_add_notesC

Add multiple flashcards to an Anki deck

ParametersJSON Schema
NameRequiredDescriptionDefault
cardsYes
deckNameYesThe target deck name

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Add multiple flashcards') but doesn't cover critical aspects like whether this is a write operation (implied but not confirmed), error handling (e.g., if the deck doesn't exist), or response format. This leaves significant gaps for an agent to understand the tool's 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, clear sentence that efficiently conveys the core purpose without unnecessary words. It's front-loaded and appropriately sized for the tool's complexity, with no wasted information.

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 lack of annotations, no output schema, and incomplete parameter documentation (50% coverage), the description is insufficient. It doesn't address key contextual elements like mutation effects, error scenarios, or return values, making it inadequate for safe and effective tool invocation.

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?

The description mentions 'multiple flashcards' and 'Anki deck', which loosely maps to the 'cards' array and 'deckName' parameters. However, with 50% schema description coverage (only 'deckName' has a description), the description doesn't add meaningful details about parameter formats, constraints, or the structure of card objects (front/back fields). It partially compensates but not fully.

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 action ('Add multiple flashcards') and resource ('to an Anki deck'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from the sibling tool 'anki_add_note' (singular vs. plural), which could cause confusion about when to use each.

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 versus alternatives like 'anki_add_note' (for single cards) or 'anki_create_deck' (for deck creation). There's no mention of prerequisites, such as whether the deck must already exist, or any contextual limitations.

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

anki_create_deckC

Create a new Anki deck

ParametersJSON Schema
NameRequiredDescriptionDefault
deckNameYesThe name of the deck to create

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits such as error handling (e.g., what happens if the deck already exists), permission requirements, side effects, or response format, which are critical for a creation 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?

The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration.

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?

For a creation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavior, error cases, and output, leaving gaps that could hinder an agent's ability to use the tool effectively in complex scenarios.

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 description coverage is 100%, with the parameter 'deckName' clearly documented in the schema. The description doesn't add any meaning beyond the schema, such as naming conventions or constraints, but the schema provides adequate baseline information.

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 action ('Create') and resource ('new Anki deck'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'anki_add_note' or 'anki_add_notes', which are about adding content rather than creating deck structure.

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 description doesn't mention prerequisites (e.g., whether the deck must not already exist), constraints, or relationships to sibling tools, leaving the agent to infer usage context.

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. 3 tool updatesv1.0.0
    • First observedanki_add_note
    • First observedanki_add_notes
    • First observedanki_create_deck

TDQS

C2.9/5.0

Scored across 3 tools

Disambiguation3/5

The tools have overlapping purposes, as 'anki_add_note' and 'anki_add_notes' both handle adding flashcards, which could cause confusion for an agent deciding between single vs. batch operations. However, the descriptions clarify the distinction (single vs. multiple), mitigating some ambiguity. The 'anki_create_deck' tool is clearly distinct, focusing on deck management rather than note addition.

Naming Consistency5/5

All tool names follow a consistent 'anki_' prefix and snake_case pattern (e.g., anki_add_note, anki_add_notes, anki_create_deck), with clear verb_noun structures. This predictability makes it easy for agents to understand and navigate the tool set without confusion from mixed conventions.

Tool Count2/5

With only 3 tools, the server feels thin for managing Anki flashcards, a domain that typically involves operations like updating, deleting, reviewing, or searching notes and decks. The count is too low for the apparent scope, lacking essential CRUD lifecycle coverage beyond basic creation, which may limit agent functionality.

Completeness2/5

The tool set is severely incomplete for Anki management, covering only note addition and deck creation. Obvious gaps include updating or deleting notes/decks, listing or searching existing content, and handling reviews or scheduling—core aspects of flashcard workflows. This will likely cause agent failures when trying to perform common tasks beyond initial setup.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers