mcp-grammar-checker
Provides grammar and style checking for text using LanguageTool's API, supporting multiple languages and returning formatted issues with suggested replacements.
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., "@mcp-grammar-checkerCheck grammar: 'I has went to the park.'"
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.
mcp-grammar-checker
A small MCP server that exposes LanguageTool's grammar and style checking as a tool, so an MCP client (Claude Code, Claude Desktop, or any other MCP-compatible host) can check text for issues directly.
Why
Built to give an AI coding assistant a real, tool-backed way to check grammar/style — rather than relying only on the model's own judgment — while learning MCP hands-on for a Solution Architect AI application.
Related MCP server: estonian-mcp
Process note
First built by hand (directly against the official mcp SDK, discovering its current API by inspecting the installed package rather than following a tutorial). Later rebuilt against Anthropic's official mcp-server-dev:build-mcp-server skill's guided process, which confirmed the deployment choice (local stdio — this is a single-user personal tool, not something meant for distribution) but changed the framework: it recommends FastMCP 3.x (the fastmcp package on PyPI, by jlowin) for Python servers, not the frozen FastMCP 1.0 bundled inside the mcp SDK. This repo now reflects that second, guided pass.
Tool
check_grammar(text: str, language: str = "de-DE") -> str
Checks the given text using the public LanguageTool API and returns a formatted list of issues found (message, suggested replacements, surrounding context), or a confirmation that no issues were found.
Setup
Requires Python 3.12+ and uv.
git clone <this-repo>
cd mcp-grammar-checker
uv syncRunning standalone
uv run python server.pyThe server communicates over stdio and expects to be launched by an MCP client, not run interactively.
Using with Claude Code / Claude Desktop
Add to your MCP config (e.g. .claude/settings.json or the Claude Desktop config file):
{
"mcpServers": {
"grammar-checker": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/mcp-grammar-checker", "python", "server.py"]
}
}
}Restart the client, and the check_grammar tool will be available.
Notes
Uses the public LanguageTool API (
api.languagetool.org), which is rate-limited. For heavier use, LanguageTool can be self-hosted.Supports any language LanguageTool supports (e.g.
en-US,de-DE,fr) via thelanguageparameter.
Available Tools
1 toolcheck_grammarB
Check text for grammar, spelling, and style issues using LanguageTool.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text to check. | |
| language | No | Language code, e.g. "de-DE", "en-US". Defaults to "de-DE". | de-DE |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only names the check types and the backend; it does not disclose behavior such as whether the query text is transmitted to an external service (LanguageTool), whether there are length limits, how the result body is structured beyond the output schema, or what happens on an unsupported language. For an unannotated tool this is a meaningful gap.
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?
A single declarative sentence, front-loaded with the verb and object, that wastes no words. It names the three issue categories and the backend in a compact way. Properly sized for the tool's simplicity.
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 output schema covers return values and the input schema fully documents parameters, so those are handled. But with no annotations, the description omits usage guidance, external-service disclosure, and any operational limits. Adequate for a simple two-parameter checker, yet with clear gaps around behavioral context.
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%, so both 'text' and 'language' are already documented in the schema. The description adds the type-of-issues context (grammar, spelling, style) but does not add parameter-specific meaning beyond what the schema provides. Baseline 3 is appropriate given the schema does the heavy lifting.
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 ('Check'), resource ('text'), and the range of issues covered (grammar, spelling, style), with a named backend ('LanguageTool'). It is clear what the tool does. With no sibling tools to differentiate against, it cannot distinguish itself further, so it stops short of a 5.
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 implies usage — the agent uses this tool whenever text needs a language quality check — but it provides no explicit context about when to use it versus alternatives, nor any exclusions or prerequisites. No siblings exist, so the routing burden is low, but the guidance is still only implied rather than stated.
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.
1 tool update
v0.1.0- First observed
check_grammar
TDQS
Scored across 1 tool
With only a single tool, there is no possibility of ambiguity or misselection. The purpose is clearly singular and distinct.
There is only one tool, so the naming is trivially consistent. The verb-noun pattern ('check_grammar') is clear and follows a predictable convention.
A single tool feels thin for a server, though the scope is narrow (grammar checking). It is borderline per the calibration, likely sufficient for its stated purpose but minimal.
The tool covers grammar, spelling, and style checking, which appears to be the entire domain. There are no obvious missing operations for a grammar-checking service.
Maintenance
Related MCP Connectors
MCP server for Speech-to-Text
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for Text-to-Speech
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceGrammar Fix AI - MCP server providing AI-powered tools and automation by MEOK AI Labs7 npm92 PyPIMIT
- AlicenseAqualityAmaintenanceAn MCP server that integrates EstNLTK to provide Estonian language tools (morphology, spell-check, synonyms, etc.) for AI agents, enabling correct Estonian text processing and generation.2621Apache 2.0
- AlicenseNot gradedqualityAmaintenanceMCP server offering text analysis tools for writing improvement, including spellcheck, readability, keyword analysis, passive voice detection, and AI-generated content detection.10MIT
- FlicenseNot gradedqualityDmaintenanceA professional MCP server for analyzing content against the official Microsoft Writing Style Guide, enabling style, grammar, terminology, and accessibility checks via AI tools like VS Code and GitHub Copilot.1-