language-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@language-mcpControleer de spelling van: 'Hij heeft dat niet geweten.'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
language-mcp
Lokale MCP-server voor Nederlandse én US-English taalcontrole, te gebruiken door AI-agents (Hermes, Claude, e.a.) die teksten schrijven: cv's, sollicitatiebrieven, blogartikelen, website-copy.
Tools
Tool | Bron | Netwerk | Gebruik |
| OpenTaal/hunspell (lokaal) | nee | Hele tekst spellingscontrole geven; flagged woorden + suggesties + posities |
| OpenTaal/hunspell (lokaal) | nee | Enkel woord ja/nee + suggesties |
| woordenlijst.org (MolexServe) | ja | Lemma-details: woordsoort, uitspraak, afbreking, paradigm, verkleinwoord |
| hunspell en_US + britticism-scan (lokaal) | nee | EN-tekst op typefouten + Britse spelling/vocabulaire met US-vervangingen |
| hunspell en_US + britticism-scan (lokaal) | nee | Enkel Engels woord: correct/Brits + suggesties |
De lokale tools gebruiken gebundelde woordenlijsten via hunspell: OpenTaal voor Nederlands (v2.20.23), SCOWL/LibreOffice en_US voor Amerikaans-Engels. De britticism-detector vangt wat hunspell níet markeert (whilst, towards, bespoke, webshop, sole trader, findability, ...) — inclusief de categorieën uit de Straffe Sites US-English-richtlijn — en geeft per vondst de US-vervanging mee. dutch_word_details raadpleegt de interne XML-service van woordenlijst.org (INT/Taalunie) — onofficieel, met cache en rate-limit (1,2 s tussen calls), dus alleen voor individuele belangrijke woorden.
Related MCP server: kamernet-mcp
Installatie
Vereist: Node 20+, hunspell op PATH (pacman -S hunspell).
npm install
npm run build # tsc → dist/Tests
npm test # node:test via tsxHermes-config (stdio)
mcp_servers:
language:
command: node
args: [/absoluut/pad/naar/language-mcp/dist/cli.js]
connect_timeout: 60
enabled: true
timeout: 120Licentie & bronvermelding
Code: MIT.
Woordenlijst-assets:
assets/nl.dic/assets/nl.aff: © OpenTaal — Revised BSD License en/of CC BY 3.0. Volledige bepalingen inassets/LICENSE.txt; bron: https://github.com/OpenTaal/opentaal-hunspell. Bij hergebruik van deze assets is bronvermelding van OpenTaal vereist.assets/en_US.dic/assets/en_US.aff: gebaseerd op de SCOWL-woordlijst (Kevin Atkinson, LGPL) met affix-bestand uit Geoff Kuenning's Ispell (BSD), via LibreOffice/dictionaries. Zieassets/en_US-LICENSE.txtenassets/en_US-README.txt; bron: https://github.com/LibreOffice/dictionaries/tree/master/en.
dutch_word_details-data: woordenlijst.org (Instituut voor de Nederlandse Taal / Taalunie), gebruikt via hun publieke webdienst zonder eigen API-overeenkomst.
Available Tools
5 toolscheck_dutch_textA
Spell-check Dutch text locally (OpenTaal/hunspell). Returns unknown words with suggestions and positions. Use for CVs, cover letters, blog articles, any Dutch prose.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The Dutch text to check | |
| context | No | Optional label, e.g. "cover letter Acme" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It discloses that the operation runs locally (implying privacy/offline behavior), returns unknown words with suggestions and positions (practical output behavior), and is non-destructive in nature. For a read-only spell-check tool this is genuinely useful behavioral context that an agent wouldn't infer otherwise.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The core function and implementation are front-loaded in the first clause, output behavior follows immediately, and the usage guidance closes it out. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description sensibly discloses return shape ('unknown words with suggestions and positions'). For a 2-parameter tool at 100% schema coverage, it covers the language, scope, and use cases. It omits only minor details like behavior on fully correct text, but nothing required to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both 'text' and 'context' already have descriptions in the schema, so the baseline is 3. The description does not add meaning beyond the schema for these parameters — it doesn't elaborate on the 'context' label's purpose or constrain input format. The description's mention of 'positions' refers to output, not parameters, so no added parametric value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('spell-check'), resource ('Dutch text'), and implementation ('OpenTaal/hunspell'). Naming 'Dutch' immediately disambiguates it from sibling check_us_english_text, and 'text' vs 'word' distinguishes it from validate_dutch_word and dutch_word_details. An agent can tell these apart from the first sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use guidance: 'Use for CVs, cover letters, blog articles, any Dutch prose.' This clarifies the intended input scope (full prose) and implies the alternative for English text, though it stops short of explicitly naming check_us_english_text or stating when not to use it. Clear context with mild exclusion gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_us_english_textA
Check English text for US English compliance: typos (hunspell en_US) + British spellings/vocabulary (colour, whilst, towards, bespoke, webshop, sole trader...) with US replacements. Use for EN pages, blogs, US-facing copy.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The English text to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool checks typos via hunspell en_US and flags British spellings/vocabulary with US replacements, which is useful. However, it does not disclose whether it returns a list of suggestions, a corrected version, or only a pass/fail result, and no output schema is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the main action, and uses parenthetical examples efficiently. Every sentence adds value: the first defines behavior, the second defines target use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required parameter, no nested objects), and the schema fully covers the parameter. However, there is no output schema and no annotation, so the absence of return-format information is a meaningful gap: an agent can invoke the tool correctly but cannot predict what the result will look like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'text' parameter, so the schema already defines it as 'The English text to check.' The description adds US-compliance context and examples, but it does not add new parameter-level constraints or formatting details, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: checking English text for US English compliance, covering typos and British vocabulary. It differentiates itself from the Dutch-focused siblings by explicitly targeting US English, and the examples make the scope concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: 'Use for EN pages, blogs, US-facing copy.' It does not explicitly mention alternatives or say when not to use it, but the guidance is sufficient to select it over the Dutch-oriented siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dutch_word_detailsA
Get official Dutch word details from woordenlijst.org: lemma, woordsoort, uitspraak, syllabisering/afbreking, verkleinwoord, paradigm. Slower (network); use for individual important words, not bulk.
| Name | Required | Description | Default |
|---|---|---|---|
| word | Yes | Dutch word or wordform to look up |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the tool makes a network call and is slower, and that bulk use is inappropriate. However, it does not mention failure modes, rate limits, or what happens for unknown words.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with no filler. The tool's resource and output contents are front-loaded, and the usage caveat is provided at the end without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup tool with no output schema, the description covers purpose, key return fields, and a practical usage warning. It lacks explicit handling of missing words or network errors, but those are minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'word' parameter is already documented as 'Dutch word or wordform to look up.' The description adds output-field context but no additional parameter semantics, matching the baseline for complete schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Get'), a specific resource (official Dutch word details from woordenlijst.org), and enumerates the returned fields (lemma, woordsoort, uitspraak, etc.). This clearly differentiates it from the sibling check/validate tools, which focus on correctness rather than lexical details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: use for individual important words, not bulk lookups. It also implicitly separates this tool from validation siblings, though it does not explicitly name an alternative or state when to choose a sibling instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_dutch_wordA
Check quickly (lokaal) of één Nederlands woord correct gespeld is, met suggesties bij foute spelling.
| Name | Required | Description | Default |
|---|---|---|---|
| word | Yes | Single Dutch word |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It adds useful context: the check is local ('lokaal') and fast, and it returns suggestions for misspelled words. However, it does not disclose what happens for correctly spelled words (e.g., return format, success indicator) or any limitations, such as handling of multi-word phrases or case sensitivity. The transparency is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose (check spelling) and key behavior (local, quick, suggestions). There is no fluff, and every word contributes to understanding. It is efficiently structured for quick scanning by an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the essential purpose and basic behavior. However, it omits the return format for valid vs. invalid words, which an agent would need to interpret the result. It also does not specify the language of suggestions or any edge-case behavior. Given the absence of annotations and output schema, the description is adequate but not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full coverage of the only parameter 'word' with a clear description ('Single Dutch word'). The tool description repeats this scope but adds no new semantic detail, such as accepted character sets or normalization rules. With 100% schema coverage, the baseline of 3 is appropriate; the description does not degrade or enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks the spelling of a single Dutch word and provides suggestions for misspellings. It specifies the resource (Dutch word) and the verb (check), and differentiates from siblings by limiting scope to a single word, which separates it from check_dutch_text for full text. However, it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'één Nederlands woord' (one Dutch word) implies usage for single-word validation rather than text, and 'quickly' suggests a lightweight check. But there is no explicit guidance on when to choose this over siblings like check_dutch_text or validate_us_word, nor any exclusions. The intended context is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_us_wordA
Check quickly (lokaal) of één Engels woord correct gespeld is volgens US English, met suggesties. Detecteert ook Britse spelling voor losse woorden.
| Name | Required | Description | Default |
|---|---|---|---|
| word | Yes | Single English word |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals that the check is quick and local ('lokaal'), that it returns suggestions ('met suggesties'), and that it detects British spelling for individual words. This provides meaningful behavioral context beyond the mere existence of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence delivers the operation, scope, language standard, locality, and output behavior with no filler or redundancy. Every word earns its place and the core purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter validation tool with no output schema, the description covers the essential context: what is checked, under which spelling standard, and what output to expect (suggestions). It could mention exact return format, but the low complexity and the hint about suggestions make it sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the only parameter 'word' as a 'Single English word' with 100% coverage. The description reinforces the meaning by specifying US English and one-word scope, but it does not add new parameter-level syntax or format details. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact verb-resource pair ('Check ... of één Engels woord correct gespeld is volgens US English') and adds concrete scope: one word, US English, with suggestions, plus British spelling detection. This clearly differentiates it from the text-level sibling check_us_english_text and the Dutch-language tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended use context clear: validating a single English word against US English. It implies this is not for full texts or Dutch words, but it does not explicitly point to alternatives or state when not to use it. Thus it is clear context without formal exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.2.1- First observed
check_dutch_text - First observed
check_us_english_text - First observed
dutch_word_details - First observed
validate_dutch_word - First observed
validate_us_word
TDQS
Scored across 5 tools
Each tool has a clear, distinct purpose: full-text checking (check_us_english_text, check_dutch_text) vs single-word validation (validate_us_word, validate_dutch_word) vs dictionary lookup (dutch_word_details). The descriptions explicitly state scope (text vs one word), eliminating ambiguity. Even the English and Dutch pairs are clearly separated by language and granularity.
Naming follows a consistent verb-based pattern: 'check_' for full-text tools and 'validate_' for single-word tools, with language identifiers. However, 'dutch_word_details' deviates from the pattern (no verb, inverted noun order) and English language identifiers vary ('us_english' vs 'us'). Overall readable, but minor inconsistencies prevent a perfect score.
Five tools is a well-scoped size for a language-checking server, covering both Dutch and US English at two levels (bulk text and individual words) plus a dictionary lookup. Each tool serves a distinct need without redundancy, and the count is not excessive or trivial.
The surface covers the core workflows: checking full text for both languages, validating individual words, and providing Dutch word details. Minor gaps exist, such as no English dictionary details and no explicit grammar checking, but the stated purpose (spelling and US English vocabulary compliance) is fully addressed. Agents can accomplish common tasks without dead ends.
Maintenance
Related MCP Connectors
111 tools for AI assistants, so an answer comes from a rule instead of a guess. 84 deterministic utilities. IBAN and VAT validation, cron parsing, regex testing, hashing, JWT decoding, conversion between JSON, CSV, XML and YAML, units, number bases, timezones and date arithmetic. Eleven of them encode Dutch rules that a model tends to get wrong: AOW pension age, inheritance and gift tax, unemployment benefit duration, notice period, severance, the 30 percent ruling, holiday allowance, mileage allowance, and public and school holidays. Five more generate test data that is structurally valid and belongs to nobody: BSN, IBAN, BRP person records, UPA pension files and document numbers. 14 render tools that return a hosted file. HTML or a live URL to PDF, full page screenshots, QR codes, PDF merge and split, images to PDF, image resize, convert and compress, metadata stripping, PDF to DOCX and back. Plus read_page, which returns the readable content of a JavaScript rendered page as Markdown. 4 memory tools give an agent key-value state that survives between sessions, scoped to its own API key. 3 workflow tools list and run saved multi-step workflows on the caller's account. 6 AI tools for the jobs where a model is the right instrument rather than the wrong one: check a message for scam patterns, write a spreadsheet formula, turn a question into SQL, translate code between languages, improve a prompt, draft an email. Utilities and memory are free. Renders and AI tools have a free tier and credit packs. Workflows need an API key, because a workflow belongs to an account rather than to a key. Streamable HTTP at https://toolforte.com/api/mcp
Utility tools for AI agents: hashing, text stats, validation, DNS, currency, GEO audits.
Live web checks for AI agents: sitemaps, robots.txt, URL status, broken links, feeds, citations.
Real-world data for agents: air quality, geocoding, quakes, holidays, web search
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides access to the Database of Icelandic Morphology (BÍN) to look up word inflections, variants, and lemmas. It enables LLMs to answer grammatical questions and retrieve specific Icelandic word forms using standard grammatical tags.34MIT
- AlicenseAqualityBmaintenanceEnables AI agents to search Dutch housing listings on Kamernet.nl, retrieve full listing details, and optionally reply to landlords; designed for personal use in finding rooms, studios, and apartments.31MIT
- AlicenseAqualityFmaintenanceEnables querying over 3,200 Dutch statutes (AVG, Wetboek van Strafrecht, Burgerlijk Wetboek, etc.) with verbatim, citation-grounded text from official sources, directly from MCP-compatible AI assistants.1836 npm13Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables language models to search and query Statistics Netherlands open data, turning natural-language questions into traceable statistics by discovering tables, resolving codes, and retrieving filtered observations.MIT