# ujisati
## 基本信息
- Slug: `ujisati-anki-mcp`
- Source: modelscope
- Publisher: @ujisati/anki-mcp
- Categories: education-and-learning-tools / app-automation / note-taking
- Hosted: No
- License: MIT License
- Source URL: https://www.modelscope.cn/mcp/servers/@ujisati/anki-mcp
## 简介
暂无描述。
## MCP Server 详情

# anki-mcp

一个用于通过 AnkiConnect 插件与 Anki 卡片交互的 Model Context Protocol (MCP) 服务器。该服务器将 AnkiConnect 操作作为 MCP 工具暴露出来，并按逻辑服务进行组织。

## 前提条件

- Anki 桌面应用程序
- 在 Anki 中安装并配置了 AnkiConnect 插件
- Python 3.8+
- `uv`（用于运行和安装依赖项，可选但推荐）

## 安装

bash
# 克隆仓库
git clone https://github.com/ujisati/anki-mcp.git
cd anki-mcp

# 安装依赖项（使用 uv）
uv pip install -e .


## 使用

要运行 MCP 服务器：

bash
uv run anki-mcp


服务器将启动并监听 MCP 请求，通常会通过 `http://127.0.0.1:8765` 与 AnkiConnect 通信。

### 检查服务器

您可以使用 MCP Inspector 查看可用工具：

bash
npx @modelcontextprotocol/inspector uv run anki-mcp


## MCP 客户端配置

如果您将其与 MCP 客户端（如 AI 助手框架）集成，则需要配置客户端以找到此服务器。以下是一个配置示例片段：

json
{
    "mcpServers": {
        "anki": {
            "command": "uv",
            "args": [
                "run", // 如果从项目根目录运行，uv 将找到 anki-mcp
                "anki-mcp"
            ],
            // 如果从项目目录之外运行，请指定路径：
            // "args": [
            //     "--directory",
            //     "/ABSOLUTE/PATH/TO/anki-mcp", // 替换为实际路径
            //     "run",
            //     "anki-mcp"
            // ]
        }
    }
}


## 可用的 MCP 工具

此 MCP 服务器通过按服务分组的工具提供对 Anki 功能的访问。工具名称直接对应于 AnkiConnect 操作。

### 牌组服务 (`deck.*`)
- **`deck.deckNamesAndIds`**: 获取完整的牌组名称及其对应的 ID 列表。
- **`deck.getDeckConfig`**: 获取给定牌组名称的配置组对象。
- **`deck.deckNames`**: 获取当前用户的完整牌组名称列表。
- **`deck.createDeck`**: 创建一个新的空牌组。
- **`deck.deleteDecks`**: 删除指定的牌组。
- **`deck.changeDeck`**: 将卡片移动到不同的牌组。
- **`deck.saveDeckConfig`**: 保存牌组配置组。

### 笔记服务 (`note.*`)
- **`note.findNotes`**: 根据给定的 Anki 搜索查询返回笔记 ID。
- **`note.notesInfo`**: 返回指定笔记 ID 的信息。
- **`note.getNoteTags`**: 获取特定笔记 ID 的标签。
- **`note.addNote`**: 创建一个新的笔记。
- **`note.updateNoteFields`**: 修改现有笔记的字段。
- **`note.deleteNotes`**: 删除指定的笔记。
- **`note.addNotes`**: 创建多个笔记。
- **`note.addTags`**: 为指定的笔记添加标签。
- **`note.removeTags`**: 从指定的笔记中移除标签。
- **`note.updateNote`**: 修改现有笔记的字段和/或标签。

### 卡片服务 (`card.*`)
- **`card.findCards`**: 根据给定的 Anki 搜索查询返回卡片 ID。
- **`card.cardsInfo`**: 返回指定卡片 ID 的信息。
- **`card.cardsToNotes`**: 返回给定卡片 ID 的笔记 ID。
- **`card.areSuspended`**: 检查指定的卡片是否被暂停。
- **`card.cardsModTime`**: 返回指定卡片 ID 的修改时间。
- **`card.suspended`**: 检查单个卡片是否被暂停。
- **`card.suspend`**: 暂停指定的卡片。
- **`card.unsuspend`**: 取消暂停指定的卡片。
- **`card.setSpecificValueOfCard`**: 设置单个卡片的特定值（谨慎使用）。

### 模型服务 (`model.*`)（笔记类型）
- **`model.modelNamesAndIds`**: 获取完整的模型（笔记类型）名称及其 ID 列表。
- **`model.findModelsByName`**: 获取提供的模型名称的模型定义。
- **`model.modelFieldNames`**: 获取给定模型名称的字段名称。
- **`model.modelTemplates`**: 获取指定模型每个卡片的模板内容。- **`model.modelStyling`**: 获取给定模型名称的CSS样式。
- **`model.createModel`**: 创建一个新的模型（笔记类型）。
- **`model.updateModelTemplates`**: 修改现有模型的模板。
- **`model.updateModelStyling`**: 修改现有模型的CSS样式。
- **`model.modelFieldAdd`**: 向现有模型添加一个新字段。
- **`model.modelFieldRemove`**: 从现有模型中移除一个字段。

### 媒体服务 (`media.*`)
- **`media.retrieveMediaFile`**: 检索媒体文件的base64编码内容。
- **`media.getMediaFilesNames`**: 获取与glob模式匹配的媒体文件名。
- **`media.storeMediaFile`**: 存储媒体文件（来自base64、路径或URL）。
- **`media.deleteMediaFile`**: 删除指定的媒体文件。

## 开发

要设置开发环境：

bash
uv sync
source .venv/bin/activate

uv pip install -e .


### 运行测试

bash
pytest


## 待办事项

- [ ] 完成所有AnkiConnect工具的添加

