AnkiMCP Server
AnkiMCP 서버 (애드온)
Model Context Protocol (MCP)를 통해 사용자의 컬렉션을 AI 어시스턴트에 노출하는 Anki 애드온입니다.
이것은 무엇인가요?
AnkiMCP 서버는 Anki 내부에서 로컬 MCP 서버를 실행하여 Claude와 같은 AI 어시스턴트가 사용자의 플래시카드 컬렉션과 상호작용할 수 있도록 합니다. 이를 통해 AI 기반 학습 세션, 카드 생성 및 컬렉션 관리가 가능해집니다.
ankimcp.ai 프로젝트의 일부입니다.
Related MCP server: Anki MCP Server
첫 실행 시 참고 사항
첫 실행 시, 이 애드온은 PyPI에서 pydantic_core(~2MB)를 다운로드합니다. 이는 pydantic_core에 단일 애드온 파일로 번들링할 수 없는 플랫폼별 바이너리(Windows/macOS/Linux)가 포함되어 있기 때문에 필요합니다.
기능
로컬 HTTP 서버 - 기본적으로
http://127.0.0.1:3141/에서 실행MCP 프로토콜 - 모든 MCP 클라이언트(Claude Desktop 등)와 호환
자동 시작 - Anki가 열리면 서버가 자동으로 시작
터널 친화적 - Cloudflare Tunnel, ngrok 등과 함께 작동
크로스 플랫폼 - macOS, Windows 및 Linux(x64 및 ARM)에서 작동
설치
AnkiWeb에서 설치 (권장)
Anki를 열고 *도구 → 애드온 → 애드온 가져오기...*로 이동합니다.
코드 입력:
124672614Anki를 재시작합니다.
GitHub 릴리스에서 설치
릴리스에서
anki_mcp_server.ankiaddon을 다운로드합니다.더블 클릭하여 설치하거나 *도구 → 애드온 → 파일에서 설치...*를 사용합니다.
Anki를 재시작합니다.
NixOS
flakes 사용 (권장)
flake 입력을 추가하고 미리 빌드된 패키지를 사용하세요:
# flake.nix
{
inputs.anki-mcp.url = "github:ankimcp/anki-mcp-server-addon";
outputs = { nixpkgs, anki-mcp, ... }: {
# Option A: Standalone — Anki with the addon pre-installed
environment.systemPackages = [
anki-mcp.packages.${system}.default
];
# Option B: Composable with other addons via overlay
nixpkgs.overlays = [ anki-mcp.overlays.default ];
environment.systemPackages = [
(pkgs.anki.withAddons [ pkgs.ankiAddons.anki-mcp-server ])
];
};
}flakes 미사용
# configuration.nix
{ pkgs, ... }:
let
python3 = pkgs.python3;
ankiMcpPythonDeps = python3.withPackages (ps: with ps; [
mcp pydantic pydantic-settings starlette uvicorn anyio httpx websockets
]);
anki-mcp-server = pkgs.anki-utils.buildAnkiAddon (finalAttrs: {
pname = "anki-mcp-server";
version = "0.13.0";
src = pkgs.fetchFromGitHub {
owner = "ankimcp";
repo = "anki-mcp-server-addon";
rev = "v${finalAttrs.version}";
hash = ""; # nix will tell you the correct hash on first build
};
sourceRoot = "${finalAttrs.src.name}/anki_mcp_server";
});
ankiWithMcp = pkgs.anki.withAddons [ anki-mcp-server ];
ankiWrapped = pkgs.symlinkJoin {
name = "anki-with-mcp";
paths = [ ankiWithMcp ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/anki \
--prefix PYTHONPATH ':' "${ankiMcpPythonDeps}/${python3.sitePackages}"
'';
};
in
{
environment.systemPackages = [ ankiWrapped ];
}사용법
Anki를 열면 서버가 자동으로 시작됩니다. *도구 → AnkiMCP 서버 설정...*을 통해 상태를 확인하세요.
Claude Desktop과 연결
Node.js가 설치되어 있어야 합니다. Claude Desktop 설정(~/Library/Application Support/Claude/claude_desktop_config.json, macOS 기준)에 추가하세요:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["mcp-remote", "http://127.0.0.1:3141"]
}
}
}참고: Claude Desktop은 JSON 설정에서 HTTP 서버를 기본적으로 지원하지 않으므로,
mcp-remote가 stdio를 통해 연결을 브리지합니다.
Claude Code와 연결
claude mcp add anki --transport http http://127.0.0.1:3141/설정
Anki의 도구 → 애드온 → AnkiMCP 서버 → 설정을 통해 편집하세요:
{
"mode": "http",
"http_port": 3141,
"http_host": "127.0.0.1",
"http_path": "",
"cors_origins": [],
"cors_expose_headers": ["mcp-session-id", "mcp-protocol-version"],
"auto_connect_on_startup": true,
"disabled_tools": [],
"media_import_dir": "",
"media_allowed_types": [],
"media_allowed_hosts": []
}도구 비활성화
토큰 사용량을 줄이기 위해 AI 클라이언트에서 특정 도구나 작업을 숨깁니다:
{
"disabled_tools": [
"sync",
"card_management:bury",
"card_management:unbury"
]
}"tool_name"— 전체 도구를 비활성화"tool_name:action"— 다중 작업 도구 내의 특정 작업을 비활성화
비활성화된 도구는 MCP 스키마에서 완전히 제거되므로 AI 클라이언트는 이를 전혀 볼 수 없습니다. 도구/작업 이름에 오타가 있으면 콘솔 경고가 생성됩니다.
사용자 지정 경로
http_path를 설정하여 사용자 지정 경로에서 MCP 엔드포인트를 제공합니다. 터널(Cloudflare, ngrok)을 통해 Anki를 노출할 때 완전히 열린 엔드포인트를 피하는 데 유용합니다:
{
"http_path": "my-secret-path"
}서버는 루트 대신 http://localhost:3141/my-secret-path/에서 액세스할 수 있게 됩니다. 기본 동작을 사용하려면 비워 두세요.
CORS 설정
브라우저 기반 MCP 클라이언트(웹 호스팅 MCP Inspector 등)를 허용하려면 허용된 오리진을 추가하세요:
{
"cors_origins": ["https://inspector.example.com", "http://localhost:5173"]
}모든 오리진을 허용하려면 ["*"]를 사용하세요(프로덕션 환경에서는 권장하지 않음).
cors_expose_headers 설정은 브라우저가 읽을 수 있는 응답 헤더를 제어합니다. 기본값(mcp-session-id, mcp-protocol-version)은 브라우저에서 MCP Streamable HTTP 프로토콜이 작동하는 데 필요합니다.
미디어 보안
미디어 경로 탐색 취약점을 책임감 있게 공개해 주신 Hideaki Takahashi(컬럼비아 대학교)님께 감사드립니다.
store_media_file 도구는 경로 탐색 및 SSRF 공격을 방지하기 위해 모든 입력을 검증합니다:
파일 경로는 MIME 유형 검사를 통해 미디어 파일(이미지, 오디오, 비디오)로만 제한됩니다.
URL은
http://또는https://를 사용해야 하며 비공개/내부 네트워크를 대상으로 할 수 없습니다.파일명은 경로 탐색 시퀀스를 제거하도록 정리됩니다.
설정을 통한 선택적 강화:
{
"media_import_dir": "/Users/me/anki-media",
"media_allowed_types": ["application/pdf"],
"media_allowed_hosts": ["192.168.1.50", "my-nas.local"]
}media_import_dir— 파일 경로 가져오기를 이 디렉토리 트리로 제한(비어 있으면 제한 없음)media_allowed_types— 이미지/오디오/비디오 외에 추가 MIME 유형 허용media_allowed_hosts— 특정 호스트가 비공개 네트워크 차단을 우회하도록 허용
사용 가능한 도구
필수 도구
도구 | 설명 |
| 컬렉션을 AnkiWeb과 동기화 |
| 컬렉션의 모든 덱 나열 |
| 새 덱 생성 |
| Anki 검색 구문을 사용하여 노트 검색 |
| 노트에 대한 상세 정보 가져오기 |
| 덱에 새 노트 추가 |
| 동일한 덱과 모델을 공유하는 최대 100개의 노트를 일괄 추가. 원자적 실행 취소를 위해 Anki의 기본 일괄 API 사용. 부분 성공 지원 — 개별 실패가 다른 노트에 영향을 주지 않음 |
| 9가지 작업으로 카드 관리: |
| 5가지 작업으로 태그 관리: |
| 필터링된 덱 수명 주기: |
| 기존 노트의 필드 업데이트 |
| 컬렉션에서 노트 삭제 |
| 복습할 다음 카드 가져오기 (음성 모드를 위한 |
| 복습할 카드 콘텐츠 가져오기 |
| 복습 후 카드 평가 (Again/Hard/Good/Easy) |
| 사용 가능한 노트 유형 나열 |
| 노트 유형의 필드 이름 및 설명 가져오기 |
| 노트 유형의 CSS 스타일링 가져오기 |
| 노트 유형의 CSS 스타일링 업데이트 |
| 새 노트 유형 생성 |
| base64, 파일 경로 또는 URL을 통해 미디어 파일(이미지/오디오) 저장. 파일 경로는 미디어 유형 허용 목록에 대해 검증되며, URL은 SSRF 검사를 거침 |
| 패턴과 일치하는 미디어 파일 나열 |
| 미디어 파일을 Anki 휴지통으로 이동 (미디어 확인을 통해 복구 가능) |
FSRS 도구
도구 | 설명 |
| 덱 프리셋에 대한 FSRS 스케줄러 매개변수 가져오기 |
| FSRS 매개변수(가중치, 원하는 유지율, 최대 간격) 업데이트 |
| 카드의 FSRS 메모리 상태(안정성, 난이도, 회상 가능성) 가져오기 |
| Anki의 내장 최적화 도구를 사용하여 FSRS 매개변수 최적화 실행 |
GUI 도구
이 도구들은 Anki 사용자 인터페이스와 상호작용합니다:
도구 | 설명 |
| 검색 쿼리로 카드 브라우저 열기 |
| 카드 추가 대화 상자 열기 |
| 특정 노트에 대한 노트 편집기 열기 |
| 현재 표시된 카드에 대한 정보 가져오기 |
| 현재 카드의 질문 면 표시 |
| 현재 카드의 답변 면 표시 |
| 복습기에서 특정 카드 선택 |
| 덱 브라우저로 이동 |
| 마지막 작업 실행 취소 |
리소스
리소스 | URI | 설명 |
|
| Anki 버전, 프로필 및 스케줄러 정보 |
|
| Anki 검색 쿼리 구문 참조 |
|
| 데이터 모델 문서 (엔티티, 필드, 관계) |
|
| 오늘의 학습 통계 |
|
| 30일 복습 예측 |
|
| 전체 컬렉션 통계 |
|
| FSRS 구성 요약 및 매개변수 |
프롬프트
프롬프트 | 설명 |
| 가이드 복습 세션 워크플로우 (대화형, 빠른 모드 또는 음성 모드) |
요구 사항
Anki 25.07 이상 (Python 3.13 포함)
Anki 25.02 이하 버전은 Python 3.9를 포함하며, 지원되지 않음 — MCP SDK는 Python 3.10+가 필요함 (#8)
아키텍처
이 애드온은 HTTP 전송(FastMCP + uvicorn)을 사용하여 백그라운드 스레드에서 MCP 서버를 실행합니다. 모든 Anki 작업은 AnkiConnect와 동일하게 검증된 패턴을 따라 큐 시스템을 통해 메인 Qt 스레드로 브리지됩니다.
자세한 내용은 Anki 애드온 개발 문서를 참조하세요.
개발
E2E 테스트 실행
E2E 테스트는 headless-anki를 사용하여 Docker 내의 실제 Anki 인스턴스에 대해 실행됩니다.
# Install test dependencies
python -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
# Build the addon
./package.sh
# Start Anki container
cd .docker && docker compose up -d && cd ..
# Run tests (waits for server automatically)
pytest tests/e2e/ -v
# Stop container
cd .docker && docker compose down또는 Makefile 바로가기를 사용하세요:
make e2e # Build, start container, run tests, stop
make e2e-up # Just start container
make e2e-test # Just run tests
make e2e-down # Just stop containerCI
E2E 테스트는 모든 브랜치에 대한 푸시 및 main에 대한 PR 시 자동으로 실행됩니다. .github/workflows/e2e.yml을 참조하세요.
라이선스
AGPL-3.0-or-later
링크
ankimcp.ai - 프로젝트 홈페이지
MCP 프로토콜 - Model Context Protocol 사양
Anki 애드온 문서 - 공식 Anki 애드온 개발 문서
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- FlipnemOAuthcom.flipnem
Build and study spaced-repetition flashcards with your agent.
Connect AI to your flomo notes. Search, create, edit notes and manage tags via MCP.
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn 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.1,716467MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Anki flashcard collections by creating, searching, and updating cards through a standardized interface. It supports media handling, batch operations, and review scheduling via the AnkiConnect add-on.62MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Anki flashcard collections through the AnkiConnect add-on, allowing creation, modification, searching, and management of flashcards and decks.2524MIT
- AlicenseNot gradedqualityCmaintenanceEnables LLMs to interact with Anki flashcard collections, including deck management, note search, viewing contents, and editing fields.16MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ankimcp/anki-mcp-server-addon'
If you have feedback or need assistance with the MCP directory API, please join our Discord server