Flashcards by Fulin Labs
Learn vocabulary from daily life with flashcards, examples, pronunciation and shareable study links.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"flashcards": {
"url": "https://flashcard.fulinlabs.com/api/mcp"
}
}
}远程端点
https://flashcard.fulinlabs.com/api/mcpstreamable-http它能做什么
工具清单
工具(3)
🟢create_flashcard_deck(title, language, backLanguage, cards)
Use this when the user asks to learn, study, memorize, review, practice, or create flashcards about any topic. Generate the complete deck in this call and open it in the interactive flashcard UI. Act immediately using the existing conversation and source material; infer language and backLanguage yourself. Never ask the user for language codes, tool arguments, or confirmation of an already requested deck. For a request for 50 cards, submit all 50 completed cards in one call. Keep the response brief and let the study UI show the deck. Examples include 'I want to learn about X', 'teach me X with flashcards', and 'Create an HSK3 vocabulary deck about restaurants'. Do not call a separate add-card tool. Do NOT use when the user asks for a direct explanation without study intent, asks to delete or modify an existing deck, or requests an in-conversation quiz without creating a deck.
输入模式
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "A concise, descriptive title for the generated deck."
},
"language": {
"type": "string",
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
],
"description": "ISO 639-1 code for the language spoken on the front side (e.g. 'zh' Chinese, 'ja' Japanese, 'vi' Vietnamese). Used for the correct audio voice and saved-deck language. Always infer and set it from the user's target language, never from their current app preference."
},
"backLanguage": {
"type": "string",
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
],
"description": "Language of the translations on the back. Set from the user’s known language; never assume English. Always set for language-learning decks. Used for reverse-card audio."
},
"cards": {
"type": "array",
"minItems": 1,
"maxItems": 100,
"items": {
"type": "object",
"properties": {
"front": {
"type": "string",
"minLength": 1,
"description": "Prompt, question, term, word, or phrase. For language learning, always use the target language (the language being learned). For example: Chinese characters, Italian phrases, or Japanese words."
},
"back": {
"type": "string",
"minLength": 1,
"description": "Answer, definition, translation, or explanation. For language learning, always use the user's known language (e.g. English). This is the revealed answer when the card is flipped."
},
"pronunciation": {
"type": "string",
"description": "Pinyin, romaji, IPA, or another reading guide for the front text. Required for language decks with non-Latin script (Chinese, Japanese, Korean, etc.) and when the user requests pronunciation."
},
"example": {
"type": "string",
"description": "A concise example sentence or usage phrase in the target or subject language. Include when the user requests examples or when teaching a language."
},
"examplePronunciation": {
"type": "string",
"description": "Pronunciation or romanization of the example sentence."
},
"exampleTranslation": {
"type": "string",
"description": "Translation or plain-language explanation of the example."
},
"exampleParts": {
"type": "array",
"minItems": 1,
"maxItems": 12,
"items": {
"type": "array",
"minItems": 3,
"maxItems": 3,
"items": {
"type": "string",
"minLength": 1
},
"description": "Exactly three strings in this order: [Chinese word or short semantic phrase, tone-marked pinyin for that segment, direct translation of that segment]. Attach adjacent punctuation to the Chinese text."
},
"description": "For Chinese examples only: every part of the example in order, split into useful words or short semantic phrases. Encode each part compactly as [Chinese text, tone-marked pinyin, direct translation]. Cover the complete example exactly once in no more than 12 parts; attach punctuation to the preceding part."
}
},
"required": [
"front",
"back"
],
"additionalProperties": false
},
"description": "The complete generated deck. Include exactly the number of cards the user requested, with every required language-learning field completed; never submit a partial array or placeholders."
}
},
"required": [
"title",
"cards"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"title": {
"type": "string"
},
"language": {
"type": "string",
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
]
},
"backLanguage": {
"type": "string",
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
]
},
"cardCount": {
"type": "integer"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"front": {
"type": "string",
"minLength": 1,
"description": "Prompt, question, term, word, or phrase. For language learning, always use the target language (the language being learned). For example: Chinese characters, Italian phrases, or Japanese words."
},
"back": {
"type": "string",
"minLength": 1,
"description": "Answer, definition, translation, or explanation. For language learning, always use the user's known language (e.g. English). This is the revealed answer when the card is flipped."
},
"pronunciation": {
"type": "string",
"description": "Pinyin, romaji, IPA, or another reading guide for the front text. Required for language decks with non-Latin script (Chinese, Japanese, Korean, etc.) and when the user requests pronunciation."
},
"example": {
"type": "string",
"description": "A concise example sentence or usage phrase in the target or subject language. Include when the user requests examples or when teaching a language."
},
"examplePronunciation": {
"type": "string",
"description": "Pronunciation or romanization of the example sentence."
},
"exampleTranslation": {
"type": "string",
"description": "Translation or plain-language explanation of the example."
},
"exampleParts": {
"type": "array",
"minItems": 1,
"maxItems": 12,
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"pronunciation": {
"type": "string"
},
"translation": {
"type": "string"
}
},
"required": [
"text",
"pronunciation",
"translation"
],
"additionalProperties": false
}
}
},
"required": [
"front",
"back"
],
"additionalProperties": false
}
}
},
"required": [
"title",
"cardCount",
"cards"
],
"additionalProperties": false
}🟢speak_text(text, language)
Use this when the flashcard widget requests speech audio for the current card.
输入模式
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "Text to speak."
},
"language": {
"type": "string",
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
],
"description": "Language of the text being spoken. Always specify the current side’s language; never default to the other side or app preferences."
}
},
"required": [
"text",
"language"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"contentType": {
"type": "string"
}
},
"required": [
"contentType"
],
"additionalProperties": false
}🟡create_website_deck(title, language, cards)
Use this when the user explicitly asks to save or share a deck on the website, or chooses Learn on website in the study widget. It sends the supplied deck to Fulin Labs and creates a persistent shareable deck link. Anyone with the link can read the deck. Do not call merely to preview or study a deck. Repeating the call may create another deck.
输入模式
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "The title of the deck the user chose to save."
},
"language": {
"type": "string",
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
],
"description": "Optional language code for the deck's front side."
},
"cards": {
"type": "array",
"minItems": 1,
"maxItems": 100,
"items": {
"type": "object",
"properties": {
"front": {
"type": "string",
"minLength": 1,
"description": "Prompt, question, term, word, or phrase. For language learning, always use the target language (the language being learned). For example: Chinese characters, Italian phrases, or Japanese words."
},
"back": {
"type": "string",
"minLength": 1,
"description": "Answer, definition, translation, or explanation. For language learning, always use the user's known language (e.g. English). This is the revealed answer when the card is flipped."
},
"pronunciation": {
"type": "string",
"description": "Pinyin, romaji, IPA, or another reading guide for the front text. Required for language decks with non-Latin script (Chinese, Japanese, Korean, etc.) and when the user requests pronunciation."
},
"example": {
"type": "string",
"description": "A concise example sentence or usage phrase in the target or subject language. Include when the user requests examples or when teaching a language."
},
"examplePronunciation": {
"type": "string",
"description": "Pronunciation or romanization of the example sentence."
},
"exampleTranslation": {
"type": "string",
"description": "Translation or plain-language explanation of the example."
},
"exampleParts": {
"type": "array",
"minItems": 1,
"maxItems": 12,
"items": {
"type": "array",
"minItems": 3,
"maxItems": 3,
"items": {
"type": "string",
"minLength": 1
},
"description": "Exactly three strings in this order: [Chinese word or short semantic phrase, tone-marked pinyin for that segment, direct translation of that segment]. Attach adjacent punctuation to the Chinese text."
},
"description": "For Chinese examples only: every part of the example in order, split into useful words or short semantic phrases. Encode each part compactly as [Chinese text, tone-marked pinyin, direct translation]. Cover the complete example exactly once in no more than 12 parts; attach punctuation to the preceding part."
}
},
"required": [
"front",
"back"
],
"additionalProperties": false
},
"description": "The cards the user explicitly chose to save on Fulin Labs."
}
},
"required": [
"title",
"cards"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri"
}
},
"required": [
"url"
],
"additionalProperties": false
}社区
证据