mcpField
E
EngrAmo

EngrAmo

远程服务
engramo.app科研与教育22 天前更新

关于 EngrAmo

EngrAmo MCP 将 AI 客户端连接到 EngrAmo 间隔重复闪卡平台。它支持托管 OAuth 接入或本地配置;配置本地语音合成后,还可使用卡片音频工具。

主要功能

  1. 01创建并学习间隔重复闪卡
  2. 02通过托管 OAuth 或本地配置连接
  3. 03使用配置的 Gemini 密钥生成卡片音频
  4. 04支持多种 MCP 客户端

适用场景

  1. 01根据学习内容创建复习卡片
  2. 02通过 AI 客户端学习已有 EngrAmo 卡片
  3. 03在本地配置中为卡片生成音频

MCP 相关

该服务向 MCP 客户端开放 EngrAmo 闪卡功能,可作为托管 HTTP 服务或通过 stdio 在本地运行;本地配置可启用语音合成工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.engramo.app/
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npm@engramo/mcp1.2.15
mcpbengramo.mcpb

工具

详细介绍

npm version CI License: MIT

engramo-mcp

适用于 EngrAmo 间隔重复闪卡平台的 MCP 服务。

托管服务

托管服务 https://mcp.engramo.app/ 无需安装。它支持使用动态客户端注册的 OAuth 2.0:客户端会将你引导至 EngrAmo 登录页面,你使用 EngrAmo 邮箱和密码登录并授权即可——无需粘贴 API 令牌。该页面不提供注册功能,因此请先在 EngrAmo 应用中创建账户。EngrAmo 已收录于 Claude Connectors Directory。设置指南:Claude 和 ChatGPT;公开文档位于 https://engramo.app/connect/。你可以随时在 EngrAmo 应用的“设置”→“已连接的应用”中撤销访问权限。

前置条件

  • 一个 EngrAmo 账户
  • 一个 EngrAmo API 令牌——在账户的“设置”→“API 令牌”页面生成。仅以下本地 (stdio) 配置和不使用 OAuth 的远程客户端需要;托管连接器使用 OAuth。

环境

engramo-mcp 与环境无关——二进制文件本身没有内置“开发”或“生产”环境。它连接到哪个服务,完全由你在客户端配置中设置的 ENGRAMO_API_URL 决定,同时需搭配从同一环境生成的令牌:

环境ENGRAMO_API_URLMCP 服务 URL(仅限 http 传输)适用对象
生产环境(以下所有示例中的默认值)https://api.engramo.apphttps://mcp.engramo.app真实账户——除非有特殊原因,否则请使用此环境
开发环境https://api-engram.volmyr.comhttps://mcp-engramo.volmyr.com仅供 EngrAmo 团队/内部测试

开发环境和生产环境是彼此独立的后端,账户也相互独立。 在一个环境中生成的令牌无法通过另一个环境的身份验证——如果切换 ENGRAMO_API_URL,也必须换成从同一环境的“设置”→“API 令牌”页面生成的令牌。

ENGRAMO_API_URL 与 MCP 服务 URL 不可互换。 ENGRAMO_API_URL 是 EngrAmo 后端的普通地址;客户端永远不会直接连接到它。在 stdio 配置中(下文的 Claude Desktop、 Claude Code、Codex、VS Code、Cursor、Windsurf、Gemini CLI、Antigravity stdio),客户端会同时设置 ENGRAMO_API_URL 和 ENGRAMO_API_TOKEN,因为本地启动的二进制文件会自行调用后端。在 http/远程配置中(Antigravity remote、ChatGPT), 客户端则将 serverUrl 指向 MCP 服务自己的 URL(上文的 mcp.engramo.app/mcp-engramo.volmyr.com),并在每个会话中单独进行身份验证——默认使用 OAuth;如果你想跳过登录提示,也可以使用静态的 Authorization: Bearer 标头。ENGRAMO_API_URL 在 http 模式下仍然重要,但它只是由部署 engramo-mcp http 的人员设置的环境变量——客户端不会设置它。

安装

全局安装 MCP 服务,使其可作为系统命令使用:

npm install -g @engramo/mcp

我们提供适用于 macOS(arm64、x64)、Linux(arm64、x64)和 Windows(x64)的预编译二进制文件。在其他平台上,请通过 cargo build --release 从源代码构建。

验证安装:

engramo-mcp --version

也可以完全跳过安装,在客户端配置中使用 npx -y @engramo/mcp——npm 会在首次使用时自动下载二进制文件。

选择客户端

任何 MCP 客户端都可以。本地文本转语音需要通过 stdio (本地启动)连接,因此仅支持远程连接的客户端无法使用此功能。

客户端模型本地 TTS设置
Claude(claude.ai、Desktop、mobile)Claude❌ — 仅支持托管连接器;有意不提供本地 TTSClaude(托管连接器) — 推荐:从 Connectors Directory 安装,无需下载
Claude Desktop 扩展Claude✅Claude Desktop — 用于卡片音频:一键安装扩展,无需 Node.js 或编辑配置;免费计划支持本地扩展
Claude CodeClaude✅Claude Code
Codex(CLI / IDE 扩展)OpenAI 模型 — 使用 ChatGPT 账号登录✅Codex
VS Code(GitHub Copilot)GPT / Claude / Gemini✅VS Code
CursorGPT / Claude / Gemini✅Cursor
WindsurfGPT / Claude / Gemini✅Windsurf
Gemini CLIGemini✅Gemini CLI
AntigravityGemini / Claude / GPT✅ stdio / ❌ 远程Antigravity
ChatGPTOpenAI 模型❌ — 仅支持远程连接器(OAuth);有意不提供本地 TTSChatGPT

Claude Desktop

大多数 Claude Desktop 用户应改为从 Connectors Directory 添加托管连接器: 无需下载、无需粘贴令牌,而且也适用于 claude.ai 和 mobile。如果要使用卡片音频,请使用下方的扩展;只有本地服务才能提供此功能。

一键安装扩展(用于卡片音频)
  1. 从最新版本中下载 engramo.mcpb (支持 macOS Intel 和 Apple Silicon、Windows x64、Linux x64 和 arm64)。
  2. 双击该文件(或将其拖到 Claude Desktop 上),然后点击 Install。Claude Desktop 会显示红色警告,提示该扩展可访问你电脑上的所有内容,且 Anthropic 尚未验证开发者。所有从文件安装的扩展都会显示此警告——Connectors Directory 已不再列出桌面扩展——而且警告内容属实:该扩展会以你的用户权限运行 engramo-mcp 二进制文件。
  3. 粘贴你的 EngrAmo API 令牌,并可选择填写 Gemini API 密钥(以逗号分隔)以启用 卡片音频。Claude Desktop 会将两者存储在操作系统钥匙串中。

无需 Node.js,也无需配置文件。之后可在 Settings → Extensions → EngrAmo → Configure 中更改令牌或密钥。该扩展不会自动更新:安装新版 engramo.mcpb 即可升级。扩展的工具可在 Chat 对话中使用,不能在 Claude Desktop 的 Code 模式中使用。此安装包由发布工作流根据 mcpb/manifest.json 构建。请使用 gh attestation verify engramo.mcpb -R engramo-developer/engramo-mcp --signer-workflow engramo-developer/engramo-mcp/.github/workflows/release.yml --source-ref refs/tags/vX.Y.Z (将版本号替换为对应的发布标签)验证下载文件,或将其与发布版本中的 engramo.mcpb.sha256 进行比对。

手动配置

打开 设置 → 开发者 → 编辑配置,或直接编辑文件: ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):

使用 npx(无需预先安装):

{
  "mcpServers": {
    "engramo": {
      "command": "npx",
      "args": ["-y", "@engramo/mcp"],
      "env": {
        "ENGRAMO_API_URL": "https://api.engramo.app",
        "ENGRAMO_API_TOKEN": "your-token",
        "ENGRAMO_TTS_GEMINI_API_KEYS": "your-gemini-key"
      }
    }
  }
}

ENGRAMO_TTS_GEMINI_API_KEYS 是可选项——启用后,可使用你自己的 Gemini 配额运行 list_tts_voices/generate_card_audio;省略此行即可禁用。参见文本转语音。

使用全局安装(npm install -g @engramo/mcp):

{
  "mcpServers": {
    "engramo": {
      "command": "engramo-mcp",
      "env": {
        "ENGRAMO_API_URL": "https://api.engramo.app",
        "ENGRAMO_API_TOKEN": "your-token"
      }
    }
  }
}

编辑后,完全退出 Claude Desktop(macOS 上按 ⌘Q——仅关闭窗口并不足够),然后重新打开。 如果未显示该服务,请检查日志:~/Library/Logs/Claude/mcp-server-engramo.log(macOS)或 %APPDATA%\Claude\logs\(Windows)。Gemini 密钥绝不会写入日志。

Claude(托管连接器)

通过 claude.ai、Claude Desktop 或 Claude 移动应用使用托管服务——无需安装,也无需令牌:

  1. 打开连接器目录中的 EngrAmo(或前往设置 → 连接器 → 浏览并搜索 EngrAmo)。
  2. 连接,使用你的 EngrAmo 账户登录并批准。

这是一个社区连接器:Anthropic 进行了自动审核,但尚未验证该连接器,因此连接前 Claude 会显示一条简短提示。 如果无法通过目录添加——例如,你所在的组织对此有限制——也可以通过 URL 添加:前往设置 → 连接器 → 添加自定义连接器,粘贴 https://mcp.engramo.app/,然后点击连接。

之后即可使用所有托管工具。与所有远程连接一样,它不支持本地文本转语音;如需此功能,请使用 Claude Desktop 扩展。

Claude Code

注册一次,即可用于你的所有项目(--scope user):

claude mcp add engramo --scope user \
  -e ENGRAMO_API_URL=https://api.engramo.app \
  -e ENGRAMO_API_TOKEN=your-token \
  -e ENGRAMO_TTS_GEMINI_API_KEYS=your-gemini-key \
  -- npx -y @engramo/mcp

ENGRAMO_TTS_GEMINI_API_KEYS 是可选项——启用后,可使用你自己的 Gemini 配额运行 list_tts_voices/generate_card_audio;省略 -e ENGRAMO_TTS_GEMINI_API_KEYS=… 这一行即可禁用。参见 文本转语音。

如果已全局安装,请将 npx -y @engramo/mcp 替换为 engramo-mcp。

Codex

OpenAI Codex CLI 和 Codex IDE 扩展共用一个配置文件 ~/.codex/config.toml。如果要将 ChatGPT 账户的模型与本地 TTS 搭配使用,请采用此配置方式(ChatGPT 应用的远程连接器不支持本地 TTS):

使用 npx(无需预先安装):

[mcp_servers.engramo]
command = "npx"
args = ["-y", "@engramo/mcp"]
tool_timeout_sec = 300  # default 60s; a 20-card generate_card_audio batch can take longer
env = { ENGRAMO_API_URL = "https://api.engramo.app", ENGRAMO_API_TOKEN = "your-token", ENGRAMO_TTS_GEMINI_API_KEYS = "your-gemini-key" }

ENGRAMO_TTS_GEMINI_API_KEYS 是可选项——启用后,可使用你自己的 Gemini 配额运行 list_tts_voices/generate_card_audio;从 env 中省略该项即可禁用。参见文本转语音。

使用全局安装(npm install -g @engramo/mcp):

[mcp_servers.engramo]
command = "engramo-mcp"
env = { ENGRAMO_API_URL = "https://api.engramo.app", ENGRAMO_API_TOKEN = "your-token" }

VS Code(GitHub Copilot Agent 模式)

将配置添加到 .vscode/mcp.json(工作区),或从命令面板运行 MCP: Open User Configuration 以进行用户级配置。使用 inputs 和 "password": true,让 VS Code 提示输入密钥并自行保存,而不是由你将密钥写入文件。请注意,顶层键为 servers(而非 mcpServers):

使用 npx(无需预先安装):

{
  "inputs": [
    { "type": "promptString", "id": "engramo-token", "description": "EngrAmo API token", "password": true },
    { "type": "promptString", "id": "gemini-key", "description": "Gemini API key (for TTS)", "password": true }
  ],
  "servers": {
    "engramo": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@engramo/mcp"],
      "env": {
        "ENGRAMO_API_URL": "https://api.engramo.app",
        "ENGRAMO_API_TOKEN": "${input:engramo-token}",
        "ENGRAMO_TTS_GEMINI_API_KEYS": "${input:gemini-key}"
      }
    }
  }
}

ENGRAMO_TTS_GEMINI_API_KEYS 是可选项——启用后,可使用你自己的 Gemini 配额运行 list_tts_voices/generate_card_audio;省略该行(以及 gemini-key 输入项)即可禁用。参见 文本转语音。

如果已全局安装,请使用 "command": "engramo-mcp" 并删除 args。

Cursor

添加到 ~/.cursor/mcp.json:

使用 npx(无需预先安装):

{
  "mcpServers": {
    "engramo": {
      "command": "npx",
      "args": ["-y", "@engramo/mcp"],
      "env": {
        "ENGRAMO_API_URL": "https://api.engramo.app",
        "ENGRAMO_API_TOKEN": "your-token",
        "ENGRAMO_TTS_GEMINI_API_KEYS": "your-gemini-key"
      }
    }
  }
}

ENGRAMO_TTS_GEMINI_API_KEYS 是可选项——启用后,可使用你自己的 Gemini 配额运行 list_tts_voices/generate_card_audio;省略该行即可禁用。参见文本转语音。

使用全局安装(npm install -g @engramo/mcp):

{
  "mcpServers": {
    "engramo": {
      "command": "engramo-mcp",
      "env": {
        "ENGRAMO_API_URL": "https://api.engramo.app",
        "ENGRAMO_API_TOKEN": "your-token"
      }
    }
  }
}

Windsurf

添加到 ~/.codeium/windsurf/mcp_config.json:

使用 npx(无需预先安装):

{
  "mcpServers": {
    "engramo": {
      "command": "npx",
      "args": ["-y", "@engramo/mcp"],
      "env": {
        "ENGRAMO_API_URL": "https://api.engramo.app",
        "ENGRAMO_API_TOKEN": "your-token",
        "ENGRAMO_TTS_GEMINI_API_KEYS": "your-gemini-key"
      }
    }
  }
}

ENGRAMO_TTS_GEMINI_API_KEYS 是可选项 — 设置后,可使用你自己的 Gemini 配额调用 list_tts_voices/generate_card_audio;省略此行即可禁用。请参阅文本转语音。

使用全局安装(npm install -g @engramo/mcp):

{
  "mcpServers": {
    "engramo": {
      "command": "engramo-mcp",
      "env": {
        "ENGRAMO_API_URL": "https://api.engramo.app",
        "ENGRAMO_API_TOKEN": "your-token"
      }
    }
  }
}

Gemini CLI

添加到 ~/.gemini/settings.json:

使用 npx(无需预先安装):

{
  "mcpServers": {
    "engramo": {
      "command": "npx",
      "args": ["-y", "@engramo/mcp"],
      "env": {
        "ENGRAMO_API_URL": "https://api.engramo.app",
        "ENGRAMO_API_TOKEN": "your-token",
        "ENGRAMO_TTS_GEMINI_API_KEYS": "your-gemini-key"
      }
    }
  }
}

ENGRAMO_TTS_GEMINI_API_KEYS 是可选项 — 设置后,可使用你自己的 Gemini 配额调用 list_tts_voices/generate_card_audio;省略此行即可禁用。请参阅文本转语音。

使用全局安装(npm install -g @engramo/mcp):

{
  "mcpServers": {
    "engramo": {
      "command": "engramo-mcp",
      "env": {
        "ENGRAMO_API_URL": "https://api.engramo.app",
        "ENGRAMO_API_TOKEN": "your-token"
      }
    }
  }
}

Antigravity

Antigravity 可通过自己的配置文件直接支持这两种传输方式 — 无需像 ChatGPT 那样使用单独的远程连接器界面。添加到 ~/.gemini/config/mcp_config.json(全局)或 .agents/mcp_config.json (工作区本地):

stdio,通过 npx(无需预先安装):

{
  "mcpServers": {
    "engramo": {
      "command": "npx",
      "args": ["-y", "@engramo/mcp"],
      "env": {
        "ENGRAMO_API_URL": "https://api.engramo.app",
        "ENGRAMO_API_TOKEN": "your-token"
      }
    }
  }
}

远程,通过 Streamable HTTP(指向正在运行的 engramo-mcp http 部署 — 见下文)。 engramo-mcp 支持 OAuth 2.1 动态客户端注册,因此 Antigravity 可自动处理身份验证 — 无需粘贴或管理令牌:

{
  "mcpServers": {
    "engramo": {
      "serverUrl": "https://mcp.engramo.app/"
    }
  }
}

如果你更想使用静态令牌(不显示 OAuth 登录提示),请手动添加 headers:

{
  "mcpServers": {
    "engramo": {
      "serverUrl": "https://mcp.engramo.app/",
      "headers": {
        "Authorization": "Bearer your-token"
      }
    }
  }
}

远程传输方式不支持文本转语音 — 如果要使用 generate_card_audio,请使用上面的 stdio 配置。

在 ChatGPT 中使用(通过 Streamable HTTP 的远程 MCP)

engramo-mcp 也可以作为远程服务运行,因此可将其作为自定义连接器(开发者模式)添加到 ChatGPT,无需在本地安装任何内容。托管服务 https://mcp.engramo.app/ 已采用这种方式运行。这是同一个二进制文件 — 使用 http 子命令而非默认的 stdio — 因此,一个可自托管的部署即可通过同一代码库同时为 Claude Desktop 用户(stdio)和 ChatGPT 用户(HTTP)提供服务。

ENGRAMO_API_URL=https://api.engramo.app MCP_BIND_ADDR=0.0.0.0:8080 engramo-mcp http

该服务通过 Streamable HTTP 在根路径 POST / 提供 MCP。与 stdio 模式不同,这里没有全局的 ENGRAMO_API_TOKEN — 每个会话都使用自己的 Authorization: Bearer <token> 请求头进行身份验证,因此一个部署可安全地同时为许多用户提供服务(每个会话对 EngrAmo API 的调用只使用该会话自己的令牌)。没有格式正确且非空的 bearer 令牌的请求会在创建会话前被拒绝,并返回 401;会话建立后,该会话上的每个后续请求都必须携带创建会话时使用的相同令牌。

http 模式还提供无需身份验证的 GET /version,返回 {"name","version"}(此二进制文件的构建版本,在编译时从 Cargo.toml 读取) — 可用于部署运行状况和版本探测,无需 MCP 握手。

在 ChatGPT 中,启用开发者模式(设置 → 连接器 → 高级 → 开发者模式),然后添加一个指向 https://mcp.engramo.app/(或你自己的部署地址 https://<host>/)的应用。ChatGPT 会通过 OAuth 为你登录:使用你的 EngrAmo 账户登录并批准即可 — 无需粘贴 API 令牌。(不支持 OAuth 的客户端可以改为发送“设置 → API Tokens”中的 EngrAmo API 令牌,将其作为静态 Authorization: Bearer 请求头。)连接后,像 “为我制作一套包含 10 张卡片的西班牙餐厅主题卡组” 或 “把这段对话转换成抽认卡” 这样的提示词会直接调用 generate_catalog_with_cards;打开 https://study.engramo.app/catalog/<shortId> 即可学习。

通过 ChatGPT 连接器始终无法使用 generate_card_audio — 这是远程连接,而本地文本转语音按设计仅支持 stdio。若要结合本地文本转语音使用 ChatGPT 账户的模型,请改用 Codex。

公开的 ChatGPT 应用目录即将上线;在此之前,请按上述说明在开发者模式下添加应用。

ChatGPT 插件包(维护者)

在 platform.openai.com/plugins 提交目录 listing 时,需上传一个由 chatgpt-plugin/ 构建的插件 ZIP:plugin.json 保存 listing 元数据,mcp.json 指向 https://mcp.engramo.app/,并通过动态客户端注册使用 OAuth(无需客户端 ID 或密钥)。使用以下命令构建:

./chatgpt-plugin/build.sh   # → target/engramo-chatgpt-plugin.zip

脚本会从 mcpb/ 复制图标,并从 Cargo.toml 设置 version。仅当 listing 元数据发生变化时,才上传新的 ZIP(Plugins → EngrAmo → Upload new version);工具和服务的变更通过 Rescan 获取。/.well-known/openai-apps-challenge 提供的域名验证令牌来自门户,并作为 _OPENAI_APPS_CHALLENGE 替换项设置在 prod Cloud Build 触发器上,不在此仓库中。

自带 AI

每个部署都采用自带 AI模式:调用模型(Claude、ChatGPT 等)负责所有生成工作——翻译、词典、措辞等——而 engramo-mcp 仅通过 generate_card / generate_catalog_with_cards / generate_cards 保存结果。除常规存储配额外,这不会给 EngrAmo 账户带来任何费用,也无需付费的 EngrAmo 套餐。

环境变量

变量默认值说明
ENGRAMO_API_URLhttps://api.engramo.appEngrAmo API 的基础 URL
ENGRAMO_API_TOKEN(stdio 必需)你的 EngrAmo API 令牌。在 http 模式下不使用;每个会话通过 Authorization: Bearer 标头提供自己的令牌。
MCP_BIND_ADDR0.0.0.0:8080http 模式的绑定地址
MCP_PUBLIC_URL(未设置)仅限 http 模式——此部署自身的公开 URL(纯源地址,不含路径——端点由 / 提供),例如 https://mcp.engramo.app。同时会将该主机加入入站请求允许列表;未设置时,所有请求都会被拒绝(参见 MCP_ALLOWED_HOSTS)。
MCP_ALLOWED_HOSTS(未设置)仅限 http 模式——除根据 MCP_PUBLIC_URL 派生的主机外,额外允许的、以逗号分隔的主机名或 host:port 值。仅在有额外入口时需要(例如,Cloud Run 服务的自有 *.run.app 回退 URL 与自定义域名并存)。
ENGRAMO_TTS_GEMINI_API_KEYS(未设置 → 不提供 TTS 工具)仅限 stdio。 你自己的 Gemini API 密钥,或以逗号分隔的密钥列表。启用 list_tts_voices / generate_card_audio。在 http 模式下会忽略此项(并在启动时发出警告)——参见下文的文本转语音。
ENGRAMO_TTS_PROVIDERgemini仅限 stdio。 TTS 引擎选择器。目前仅支持 gemini;无法识别的值会导致启动失败。
ENGRAMO_TTS_MODELgemini-3.8-flash-tts仅限 stdio。 Gemini TTS 模型 ID。
ENGRAMO_TTS_VOICEPuck仅限 stdio。 当 generate_card_audio 调用未指定声音时使用的默认声音。

可用工具

服务信息
工具说明
get_server_version获取此 MCP 服务自身的构建版本(不是目录或卡片的 version 字段)
get_subscription_usage查看你的 userId、套餐和功能,以及每项限额的用量、剩余量、是否无限制或不包含在套餐内、限额周期(终身或每月,以及每日/每小时子限额)和重置时间(UTC)。出现“Quota exceeded”或“Not included in your plan”错误后调用此工具。
目录
工具描述
list_catalogs列出所有闪卡目录;filter(own 或 shared)可将结果限制为你拥有的目录或他人与你共享的目录,speaking_only 可将结果限制为已开启跟读练习的目录
get_catalog按 ID 获取单个目录
update_catalog更新目录名称或描述
set_catalog_shadowing开启或关闭目录的跟读练习,或更改其语言
share_catalog按用户 ID(UUID,而非电子邮件)将你拥有的目录共享给其他用户,并授予 viewer(默认)或 editor 权限;重新共享会更改对方的权限级别。返回完整的协作者列表。请向他人索取其用户 ID;他们可以通过 get_subscription_usage 获取
unshare_catalog移除其他用户对你拥有的目录的访问权限。返回剩余协作者
list_catalog_shares列出目录的共享对象及其访问级别(所有者或编辑者)
delete_catalog删除目录
卡片
工具描述
list_cards列出目录中的卡片
get_card按 ID 获取单张卡片
update_card更新卡片内容
delete_card删除卡片
学习
工具描述
get_due_cards获取今天到期需要复习的卡片
get_all_learning_cards获取学习队列中的所有卡片
add_card_to_learning将卡片添加到学习队列
add_catalog_to_learning将目录中的所有卡片添加到学习队列
学习路径
工具描述
list_learning_paths列出所有学习路径
get_learning_path按 ID 获取单个学习路径
create_learning_path创建新的学习路径
activate_learning_path激活学习路径
deactivate_learning_path停用学习路径
搜索
工具描述
search_global对所有内容进行全文搜索
search_catalogs在指定目录中搜索
媒体
工具描述
list_media列出已上传的媒体资源
upload_media上传已有文件(语音录音、图像),并获取可附加到卡片或目录的 media_id
AI 生成(自带 AI)
工具描述
generate_card创建闪卡——调用模型自行完成翻译和措辞
generate_catalog_with_cards一次调用创建包含卡片的目录——同样使用自带 AI 模型
generate_cards向现有目录添加多张卡片——同样使用自带 AI 模型
文本转语音(stdio,可选)

仅在设置了 ENGRAMO_TTS_GEMINI_API_KEYS 时提供(仅限 stdio 模式)——见下文的 文本转语音。

工具描述
list_tts_voices列出已配置的 TTS 引擎、模型、默认语音和可用语音。不会发起网络请求。
generate_card_audio为最多 20 张卡片的 FACE 面合成语音,将其上传到你自己的媒体库并附加到卡片——使用你自己的 Gemini 密钥和配额

富媒体卡片:词典、样式、图片、音频

除了纯文本外,卡片的 face/back 还可以包含:

字段作用
dictionary单词 → 翻译映射,在应用中显示为可点击的高亮内容
rich_text文本中的样式片段(粗体、颜色、等宽字体)
style为整个正面或背面设置字体、颜色、背景和对齐方式
audio_id你自己的音频(录音、自己使用 TTS 生成的片段)——先使用 upload_media 上传,或调用 generate_card_audio 自动设置(仅限 stdio,见下文)
visual_id + visual_type你自己的图片/视频,方式与 audio_id 相同

也可以用同样的方式为目录设置 image_id(封面图片)。以上功能都不需要付费的 EngrAmo 计划——词典/翻译由调用模型完成;图片完全由你自行提供,通过 upload_media 上传(每个文件最大约 10MB);正面音频则可以用同样的方式自行提供,或使用自己的 TTS 密钥通过 generate_card_audio 在本地生成。完整架构和四个示例请参阅 engramo://card-schema;涵盖以上完整流程、可直接粘贴使用的提示词请参阅 docs/prompt-examples.md。

要一次添加大量卡片/媒体吗? upload_media 每次调用处理一个文件,通过聊天客户端上传少量文件很方便。批量导入(在一个请求中导入多张卡片、多个音频文件)请参阅 docs/bulk-import.md——这是供 CLI/脚本使用的直接 API 操作指南(Claude Code、终端、脚本),并非由聊天驱动的 MCP 工具。

文本转语音(自带密钥)

设置 ENGRAMO_TTS_GEMINI_API_KEYS 后,会出现两个额外工具:list_tts_voices 和 generate_card_audio。给定一组卡片 ID,generate_card_audio 会使用 Gemini TTS 为每张 卡片的正面文本合成语音,将其编码为 MP3,上传到你自己的 EngrAmo 媒体库,并将其附加为该卡片的 audio_id——位置与手动录制后通过 upload_media 上传的文件相同,只是这些步骤由工具代劳。

仅限 stdio,这是有意为之。 密钥只从你自己的机器环境中本地读取一次,绝不会发送到 EngrAmo,也不会记录到日志中。在 http 模式下,服务是一个供多个租户共享的部署——没有可供密钥留在调用方机器上的会话级位置——因此 ENGRAMO_TTS_GEMINI_API_KEYS 仅由 stdio 读取;在 http 模式下会被完全忽略(启动时会显示包含变量名、但不含其值的警告),并且不会注册这两个工具。

为什么使用带命名空间的变量,而不是标准的 GEMINI_API_KEY? GEMINI_API_KEY 是 Gemini CLI、Google 自家的 SDK 以及许多开发者的 shell 配置文件所设置的事实标准名称。如果 engramo-mcp 也读取它,那么环境中已有的、用于其他工具的密钥可能会在你运行 engramo-mcp stdio 时悄悄开始被消耗。engramo-mcp 绝不会读取 GEMINI_API_KEY——只有明确设置带命名空间的 ENGRAMO_TTS_GEMINI_API_KEYS 才会启用此功能。

消耗的是谁的配额? 是你的配额,不是 EngrAmo 的。这与付费工具 generate_tts_for_cards(ENGRAMO_ENABLE_PAID_AI)使用的机制不同;后者消耗 EngrAmo 自己的计量式 TTS 配额,而 generate_card_audio 只消耗你自己的 Gemini API 配额/费用,就像你直接调用 Gemini 一样。

多个密钥/轮换。 ENGRAMO_TTS_GEMINI_API_KEYS 接受以逗号分隔的密钥列表。每次合成调用都会以随机顺序尝试这些密钥;如果某个密钥受到速率限制、被拒绝(无效或已撤销)或遇到暂时性错误,就会跳过它并尝试下一个,因此列表中一个有问题的密钥不会导致整个调用失败。

限制。 每次 generate_card_audio 调用最多处理 20 张卡片,每张卡片的正面文本最多 500 个字符(更长的卡片会被跳过,不会截断)。已有正面音频的卡片会被跳过,除非你传入 overwrite: true;此时不会删除原有音频——它会保留在你的 EngrAmo 媒体存储中,并继续显示在 list_media 的结果中。请先调用 list_tts_voices,查看已配置的模型和语音目录。

获取密钥。 在 Google AI Studio 免费创建密钥。

密钥应放在哪里。 上文每个 stdio 客户端章节都展示了 ENGRAMO_TTS_GEMINI_API_KEYS 的确切设置位置——请参阅选择客户端。它始终是在服务的 env 中、ENGRAMO_API_TOKEN 旁边再添加一项:

"env": {
  "ENGRAMO_API_URL": "https://api.engramo.app",
  "ENGRAMO_API_TOKEN": "your-token",
  "ENGRAMO_TTS_GEMINI_API_KEYS": "your-gemini-key"
}

快速检查。 请助手调用 list_tts_voices。如果缺少此工具,说明尚未设置密钥(或客户端尚未重启),或者客户端正在使用远程连接。

第三方许可证

通过 npm 分发的预构建二进制文件会静态链接 LAME(LGPL-2.0),以供 generate_card_audio 使用的 MP3 编码。完整声明和源代码可用性条款请参阅 THIRD_PARTY_LICENSES。

资源和提示词

该服务还会公开 MCP 资源(可作为上下文读取的实时数据):

URI描述
engramo://card-schemaCardContent JSON 架构,包含验证规则和示例
engramo://catalogs所有目录(id、name、card_count)
engramo://learning/due今天到期需要复习的卡片
engramo://learning/stats学习统计数据(due_count、total_count)
engramo://learning-paths所有学习路径(id、name)
engramo://subscription您的 userId、plan、limits 和 usage(与 get_subscription_usage 中的视图相同)

以及 MCP 提示词(引导式工作流):

提示词描述
review_session开始引导式间隔重复复习
create_flashcard为某个主题创建高质量的闪卡
create_language_deck创建经过样式设计、翻译并附有词典注释的语言学习卡组 — 参见 docs/prompt-examples.md
explain_card通过示例深入讲解一张闪卡
study_plan根据您的目录制定结构化学习计划

发布到 npm

git tag vx.y.z                                                                                                                                                                                                      
git push origin vx.y.z

发布工作流还会在 GitHub 发布版本和 npm 包发布后,将 server.json 发布到官方 MCP Registry,名称为 app.engramo/mcp。一次性设置、密钥轮换以及升级固定版本的 mcp-publisher,请参阅 docs/mcp-registry.md。

参与贡献

欢迎通过 github.com/engramo-developer/engramo-mcp/issues 提交 Bug 报告和拉取请求。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。