MCP server
Connect Claude, Cursor, VS Code or any other MCP client to your Anki collection. The agent can then search your notes, add flashcards, organise decks and tags, and run a review session, with the same rules as the REST API. Every SDK function is a tool.
Connect#
The server is at https://ankinize.com/mcp. Most clients only need that address: they open a browser window, you sign in to Ankinize and approve, and the agent is connected. Nothing is copied or pasted.
Then ask in plain language: "Make ten cards from this article in my Languages deck", or "What is due today?". The agent starts by reading your decks and note types, so it uses the right fields.
Connect ChatGPT#
ChatGPT on the web takes a custom MCP server in a few clicks. It signs in with OAuth, so there is no key to copy.
- Open chatgpt.com/plugins (Plugins in the sidebar), choose Add, then Add custom MCP server.
- Name:
Ankinize. The description is optional. - Connection: leave Server URL selected and paste
https://ankinize.com/mcp. - Authentication: leave OAuth. Skip Advanced OAuth settings: ChatGPT finds the sign-in details and registers itself.
- Read the risk warning, tick I understand and want to continue, then choose Create as a plugin.
- Sign in to Ankinize if asked and approve on the consent screen. Untick
writethere for read-only access. - Start a new chat, type
@and pick Ankinize, then ask, for example "What is due today?".
Your plan or workspace may limit custom MCP servers; if Add custom MCP server is missing, ask your workspace admin. If you run Ankinize yourself and the server is not reachable from the internet, choose Tunnel instead of Server URL (see OpenAI's Secure MCP Tunnel guide). After the server's tools change, open the plugin and choose Refresh.
What you approve#
MCP clients register themselves with Ankinize the first time, so there is nothing to set up in the dashboard. The approval screen shows the name the client gave itself, where it will send you back to, and what it asks for. Approve only a connection you started.
- Read and write is asked for by default. Untick
writeto give read-only access: the agent can look at your collection but the tools that change it are not even offered to it. - The connection works only with this server. It cannot call the REST API and it cannot sync: the
syncscope is never offered. - You can disconnect an app at any time under API keys > Connected apps. It stops working at once and has to ask you again to come back.
- Access is renewed automatically while the client stays connected. Each call in the activity log is labelled
MCP · name of the client.
Using an API key instead#
For a script or a server with no browser, send an API key as a Bearer token. It is the same key the REST API takes, with the same scopes: read for looking, write for changing. A key that only has sync is refused.
What the agent can do#
One tool per SDK function, named in snake_case: listNotes is list_notes. A tool takes the same arguments as the function and returns the same answer as JSON. The API reference describes each one. A read-only connection is offered only the tools without Changes data.
Start here#
Decks#
Notes#
Note types#
Cards and review#
Tags#
Statistics#
Media#
The agent is also given a short guide it can read (ankinize://guide, ankinize://guide/search) and three prompts your client may show as commands: make_cards, quiz_me and tidy_up.
What is not a tool#
The SDK also has helpers that only make sense inside a program: pipe, flow, iter, indexBy, groupBy, nest, the paging streams and the q search builders. An agent does not need them. A search is the string in q (for example deck:Languages is:due), and a list continues with its cursor.