list_languages
Languages
The 60 languages Ordkort teaches and explains in, with their codes.
無需輸入參數。

com.ordkort由 ordkort.com 發布官方發布者v1.0.0更新於 Nov 6, 2026
Flashcard decks with pictures and card designs for a free vocabulary site in 60 languages.
Ordkort 的遠端 MCP 伺服器,這是一個免費詞彙學習網站:助理可產生含圖片與卡片設計的 60 種語言單字卡牌組,並回傳加入連結。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/com.ordkort%2Fordkort/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"ordkort": {
"type": "http",
"url": "https://ordkort.com/mcp"
}
}
}Flashcards, a real dictionary and grammar for 60 languages.
Free · no sign-up · no ads · no tracking · works offline
Open ordkort.com → · About · Contributing · Report a problem
[Tests] [License: AGPL-3.0] [Languages]
[A study session: a Norwegian card turns over to its translation and an example, then the next card comes in]Anki is powerful but starts empty, and you build every deck yourself. Most other apps want an account, a subscription or your data. Ordkort gives you ready word lists for 29 topics and levels A1–C1 with the same FSRS scheduler that Anki offers, plus a dictionary, a grammar book and a translator that explains every word. AI writes the cards, and they are checked against real dictionaries: the official Norwegian dictionaries at ordbokene.no, and for other languages Wiktionary with the free dictionaries Wikidata Lexemes, BÍN and SALDO. Everything stays in your browser; devices sync without an account, end-to-end encrypted.
Ordkort is a lightweight site for learning almost any language from almost any other one:
.apkg from any Anki (the current format too) with its pictures, its recordings
(the speaker button then plays the card's own audio) and, if you want, its progress; export your decks as an
.apkg Anki opens, with progress (FSRS memory state included), pictures and recordings. CSV in and out, and
sharing a deck by link or QR code — only the words, never your progress.Jeg {{bor}} i Oslo, {{c1::bor::verb}}) and
the card is studied as a gap; any card can carry up to eight named fields. Anki cloze notes and a note's other
fields come in this way and go back out to Anki.PIXABAY_KEY is set) and Openverse's, which is searched in English.cover_url).{{term}}, {{image}}, {{#example}}…{{/example}}…) with
ready ones to start from and a live preview, and CSS for the whole site. Scripts never run.https://ordkort.com/mcp and ask it
for a deck with pictures or a look for your cards; it answers with a link that adds it (see MCP).Ordkort is also an MCP server, so your own AI can make decks and looks for it.
Address: https://ordkort.com/mcp (Streamable HTTP; no account, no key).
It is in the official MCP Registry as com.ordkort/ordkort.
[Install in VS Code] [Install in Cursor]
claude mcp add --transport http ordkort https://ordkort.com/mcpThe address, these steps and example requests are also in the app, under Settings → Your own AI (MCP).
Then ask, for example: “Make me an A2 Norwegian deck about the kitchen with pictures” or “Design a dark, calm card with the picture on top”. The AI gets a link; opening it shows the deck or the look and adds it only when you agree. It never sees or changes your cards.
Scripts in a design never run. Pictures a design names by https address (a background photo, say) are fetched
once through the site's picture proxy, all at once, so CSS cannot report what is on the page; the card's own
picture is <img src="{{image}}"> or var(--card-image). The AI is asked to end its answer with
"Powered by ordkort.com". Calls count against an hourly limit per client.
User data — cards, progress, settings — lives in the browser’s IndexedDB (localStorage in a browser without it; a state from before is moved over once), as do the history of every answer (what “What goes wrong” reads) and pictures and recordings for cards. The history stays on that device; a picture found on the web is fetched again by each device, and photos of your own and recordings from Anki reach linked devices file by file, encrypted like the rest. Only AI requests (a word, a topic or a text plus the language pair) reach the server, plus decks you choose to share by link (kept for a year) and anonymous mistake reports (kept for 30 days). Answers are stored in a shared base, so the next person gets them instantly and without using their limit.
The Groq key lives only in the Worker secret. The browser sends parameters, not prompts, so the API can’t be used as someone else’s free chatbot.
Limits (change them in wrangler.jsonc → vars or in the Cloudflare dashboard):
AI_PER_HOUR = 40 and AI_PER_DAY = 120 per person, AI_DAILY_BUDGET = 2500 for the whole site.
A person is identified by a hash of the IP address with a salt that changes every day;
the IP itself is never stored. A school or an office is one address for a whole class, so while less than half
of AI_DAILY_BUDGET is spent today, an address may go on up to AI_SHARED_TIMES = 5 times its own limits;
past half, everyone is back to the ordinary ones. Answers already in the shared cache never count.
What the AI can carry. Groq's free plan gives each of the three models 200,000 tokens in any 24 hours.
A list of words takes 5,000–7,000 tokens, a dictionary entry or a translation a few thousand, so the whole site
gets about 100–150 new AI answers a day; everything already generated (the shared cache and word bank) costs
nothing. That is why the bank of ready decks matters: the cron fills it slowly (WARM_PER_DAY, 24 lists a day,
about a fifth of the capacity), and npm run warm stops after 25 lists. A paid Groq plan lifts the limit.
Sync without accounts. A random 32-byte secret exists only on the user’s devices. It derives the
copy’s id, a write token and an AES-256-GCM key. The server stores ciphertext and a hash of the token.
Devices are linked with a one-time 16-character code (valid for 3 minutes, burnt on first read) or a QR
link whose key part sits after # and is never sent to the server. A one-time transfer without cloud
storage is also available. A 54-character recovery key restores the encrypted copy if the browser
data is wiped on every device. The copy holds only the names of photos of your own and of recordings from Anki:
each file goes to /api/media on its own, encrypted with the same key (at most 5,000 files and about 110 MB per copy),
and a device fetches the ones its cards need. They are deleted with the copy.
Users can read all of this in plain words on the site’s “How it works” page (#/about).
Copy .dev.vars.example to .dev.vars and put your Groq key into it, then:
The site runs at http://localhost:8787 together with a local D1 database.
The suites cover FSRS scheduling, merging data between devices (edits, deletions, daily stats), sync encryption and recovery keys, QR codes (decoded by an independent reader), CSV import/export, completeness of the interface translations, the offline file list, the Worker API end to end (shared decks, one-time link codes, versioned sync) in Wrangler’s local runtime, and the static pages for search engines: up to date, unique titles and canonicals, reciprocal hreflang, no broken links, every page in the sitemap, at least 150 words of its own on each. No AI calls are made. GitHub Actions runs them on every push and pull request.
npx wrangler deploy.GROQ_API_KEY (and optionally: GEMINI_API_KEY, free, and CEREBRAS_API_KEY, a trial — $5 of credit for 30 days
once a payment method is on the account, then it stops, with nothing charged by itself — each adding its own daily
limits with the same models, while a key that stops working is passed over; DEEPINFRA_API_KEY, a paid fallback
asked only when every free model is at its limit and capped by PAID_DAILY_TOKENS a day; IP_SALT, any long
random string; and PIXABAY_KEY, a free
Pixabay API key that adds Pixabay to the picture search, and ADMIN_TOKEN, a long random
string that lets the site's owner take down any deck in the library or shared by link).ordkort is created automatically on the first deploy, its tables on the first request.From then on every push to main is deployed automatically.
The same from a terminal:
Taking a deck down, and the decks hidden by reports:
Origin check); the API accepts JSON only.STORE_PER_DAY_MB = 100 per person and STORE_SITE_DAY_MB = 1000 for the
whole site, so a script cannot fill D1 in an hour. Request bodies and fetched pictures and recordings are read
as streams and cut off at their limit.GUARD_PER_DAY = 60 per person,
GUARD_SITE_DAY = 400 for the site), so publishing big decks cannot spend Groq's daily tokens for everybody.
The models are told that a deck's text is data, and that a deck asking to be called safe is not.?nolook
(https://ordkort.com/?nolook#/settings) and reset it./api/* and Bot Fight Mode.The easiest ways to help, no code needed: translate the interface into your language (one file, about 550 short strings), report a wrong word with the button on any card or dictionary entry, or open an issue about anything that confused you. Code is welcome too; see CONTRIBUTING.md. Questions and ideas go to Discussions, or by e-mail to [email protected] if you would rather not write in public (teachers often do). post@, help@ and [email protected] reach the same person; no other address is Ordkort's, and Ordkort never asks for a password or money by e-mail.
If Ordkort helps you learn, a ⭐ on GitHub helps other learners find it.
GNU AGPL-3.0. You may use, study, change and share the code; if you run a modified version as a public service, you must publish your changes under the same license.
Official Norwegian dictionary data: ordbokene.no (Språkrådet and the University of Bergen). AI: Groq. Fonts: Geologica, Literata, Readex Pro, Noto Naskh Arabic — SIL Open Font License 1.1. QR codes: a port of Project Nayuki’s QR Code generator (MIT License). Anki packages: sql.js (SQLite in WebAssembly, MIT) and fzstd (MIT). Pictures: Wikimedia Commons (found through Wikidata), Pixabay and Openverse, each with its own licence and credit.
來源:README.md,提交 b0b8cb2
Languages
The 60 languages Ordkort teaches and explains in, with their codes.
無需輸入參數。
Topics
The built-in topics for word lists (greetings, food, the doctor, documents and public services…), with their ids.
無需輸入參數。
Ready words for a topic
Words already in Ordkort's shared bank for a topic and level, with translations, forms and examples. Nouns and verbs have been checked against dictionaries. May be empty for a rare pair of languages; then write the words yourself.
countleveltopic必填native必填target必填Find free pictures
Openly licensed pictures for a word: first the Wikimedia Commons picture of the Wikidata item the word names (found in the word's own language, so "hus" in nb finds a house), then Pixabay's photos and drawings, then Openverse's, sorted so those whose title or tags hold the word come first. Give the bare word without its article, and its language. Each has an image_url to put on a card and a credit to show with it. Look at the credit: it names the picture.
query必填languageHow to design a look
How a card is built, the fields and pictures a template can use, and the CSS variables and parts of the site. Read it before create_design.
無需輸入參數。
Make a deck
Makes a deck of up to 500 cards and returns a link. When the person opens the link, Ordkort shows the deck and adds it to their cards if they agree. Pictures are given by an https address (for example from find_pictures), and so is the deck's cover (cover_url), a small picture shown instead of the emoji. The link works for a year.
cards必填emojileveltitle必填native必填target必填cover_urlcover_creditMake a look for cards
Makes a look for Ordkort and returns a link that shows it and applies it if the person agrees. Read design_guide first. front_html and back_html are card templates with fields in double braces: {{term}}, {{translation}}, {{pronunciation}}, {{grammar}}, {{forms}}, {{example}}, {{example_translation}}, {{image}}, {{audio}}, {{deck}}; {{#example}}…{{/example}} shows its inside only when the card has an example. The card's picture: <img src="{{image}}"> or var(--card-image) in CSS. Pictures by https address (CSS url() or <img src>) are fetched once by Ordkort, at most 8. card_css styles the cards, site_css the whole site through CSS variables (--paper, --card, --ink, --blue, --font-serif…). Scripts and event handlers are removed. The answer may carry notes on what will not work as meant.
name必填card_csssite_cssback_htmlfront_html已滿足適用檢查項的 100%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
public/ the site: HTML, CSS, JS, fonts — served by Cloudflare as static assets _headers security headers (CSP etc.) sw.js service worker for offline use js/build.js the version of the site, written at every deploy (not in git) js/bundle.js all the scripts of the app in one minified file, written at every deploy (not in git)src/ Cloudflare Worker — runs only for /api/* worker.js routing and same-origin check mcp.js the MCP server: tools an AI uses to make decks and looks core/ what every part uses shared.js code shared with the site (languages, topics…), the language pair of a request db.js D1: the schema is created automatically on the first request; the shared cache limits.js burst, hourly, daily and site-wide limits util.js small helpers: JSON answers, errors, hashing, codes ai/ everything that asks the AI routes.js AI requests: shared cache → word bank → limits → Groq prompts.js all prompts and validation of AI output facts.js verified Norwegian Bokmål grammar facts used to ground the AI groq.js AI client over several providers with model fallback, and the moderation check warm.js a base of ready decks: every 15 minutes, while the site is quiet, the cron fills one more group of the shared word bank, from the decks used most to the rarer ones sources/ other sites the Worker reads wiktionary.js Wiktionary for other languages: checks cards, the dictionary entry, recordings dicts.js the free dictionaries beside it: lexemes.js (Wikidata), bin.js (Icelandic), saldo.js (Swedish) images.js free pictures (Wikidata/Commons, Pixabay, Openverse) and the picture proxy voice.js a voice for cards without a recording decks/ decks that leave the device share.js decks shared by link library.js the public library and its moderation sync.js device sync and one-time codes (the server only ever sees ciphertext) preview.js link previews for chat appsscripts/build.mjs writes public/js/bundle.js (the scripts listed in scripts/bundle.mjs, minified by esbuild) and public/js/build.js; wrangler runs it before every deploy and `wrangler dev`scripts/landing.mjs plain pages about the site for search engines (public/<lang>/, 6 languages)scripts/seo-pages.mjs static Norwegian pages for search engines, in English, Russian, Ukrainian and Norwegian: 29 topic word lists (/<ui>/<learn>/<topic>/), ~530 dictionary entries (/<ui>/ordbok/nb/<word>/), two hubs and a page for teachers per language (texts in scripts/teachers-text.mjs), the pages above and sitemap.xml. Content in data/seo/ (see its README); run `npm run seo` after changing it (a test checks the files are up to date)data/seo/ the words, translations and examples of those pages, official forms from Bokmålsordbokatests/ node:test suites (see below)wrangler.jsonc Cloudflare configurationnpm installnpm run devnpm testnpx wrangler loginnpx wrangler secret put GROQ_API_KEYnpx wrangler secret put PIXABAY_KEY # optionalnpx wrangler secret put ADMIN_TOKEN # optional: taking down deckscurl -X DELETE -H "X-Admin-Token: $ADMIN_TOKEN" https://YOUR-SITE/api/library/DECKID # or /api/share/DECKIDcurl -H "X-Admin-Token: $ADMIN_TOKEN" https://YOUR-SITE/api/library/hiddennpm run deploy