SpellChecker MCP Server
A fast, multilingual Model Context Protocol (MCP) server that provides spell-checking capabilities to Large Language Models. This server enables LLMs to check spelling in text, files, and entire projects with syntax-aware parsing for code files.
Features
- Multi-language support: 15+ languages including English, Spanish, French, German, Portuguese, Italian, Dutch, Polish, Russian, Ukrainian, Swedish, Danish, and Norwegian
- Syntax-aware checking: Intelligently checks only comments, strings, and documentation in code files
- File and folder scanning: Check individual files or entire project directories
- Modular language activation: Enable only the languages you need
- Fast spell checking: Powered by nspell for efficient processing
- Custom dictionary management: Add words to personal dictionaries
- Smart code parsing: Understands HTML, JavaScript, TypeScript, Python, and more
- MCP-compliant: Works with any MCP-compatible client
Installation
As an MCP Server
- Clone the repository:
git clone https://github.com/yourusername/spellchecker-mcp-server.git
cd spellchecker-mcp-server
- Install dependencies and build:
yarn install
yarn build
The post-install script will automatically download the required dictionary files.
Using with Claude Desktop
Add the server to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"spellchecker": {
"command": "node",
"args": ["/path/to/spellchecker-mcp-server/dist/index.js"],
"env": {
"SPELLCHECKER_LANGUAGES": "en-US,es,fr"
}
}
}
}
Configuring Languages
You can configure which languages to enable in three ways:
-
Environment variable (recommended for Claude Desktop):
SPELLCHECKER_LANGUAGES="en-US,es,fr" node dist/index.js -
Configuration file:
SPELLCHECKER_CONFIG="/path/to/spellchecker.config.json" node dist/index.js -
Edit the default in
src/config.tsbefore building
Using with Other MCP Clients
The server runs on stdio and can be integrated with any MCP-compatible client:
node /path/to/spellchecker-mcp-server/dist/index.js
Available Tools
check_spelling
Checks text for spelling errors and returns misspellings with suggestions.
Parameters:
text(required): The text to checklanguage(optional): Language code (default: "en-US")includeLineNumbers(optional): Include line/column positions (default: false)
Example:
{
"text": "This is a tset of the speling checker",
"language": "en-US",
"includeLineNumbers": true
}
is_correct
Checks if a single word is spelled correctly.
Parameters:
word(required): The word to checklanguage(optional): Language code (default: "en-US")
get_suggestions
Gets spelling suggestions for a word.
Parameters:
word(required): The word to get suggestions forlanguage(optional): Language code (default: "en-US")limit(optional): Maximum suggestions to return (default: 5)
add_to_dictionary
Adds a word to the personal dictionary for a language.
Parameters:
word(required): The word to addlanguage(optional): Language code (default: "en-US")
list_languages
Lists all available languages for spell checking.
check_file
Checks spelling in a single file with syntax-aware parsing.
Parameters:
filePath(required): Path to the file to checklanguage(optional): Language code (default: "en-US")syntaxAware(optional): Enable syntax-aware parsing (default: true)
Example:
{
"filePath": "/path/to/app.tsx",
"language": "en-US",
"syntaxAware": true
}
check_folder
Checks spelling in all files within a folder.
Parameters:
folderPath(required): Path to the folder to checklanguage(optional): Language code (default: "en-US")recursive(optional): Check subfolders (default: true)fileTypes(optional): Array of file extensions to checksyntaxAware(optional): Enable syntax-aware parsing (default: true)
Example:
{
"folderPath": "/path/to/project",
"language": "en-US",
"recursive": true,
"fileTypes": [".js", ".tsx", ".md"],
"syntaxAware": true
}
Supported Languages
The server supports 15+ languages. Enable only what you need:
en-US- English (United States)en-GB- English (United Kingdom)es- Spanishfr- Frenchde- Germanpt- Portuguesept-BR- Portuguese (Brazil)it- Italiannl- Dutchpl- Polishru- Russianuk- Ukrainiansv- Swedishda- Danishnb- Norwegian Bokmål
Syntax-Aware Features
When syntaxAware is enabled, the spell checker intelligently parses:
- Comments: Single-line and multi-line comments in all major languages
- String literals: Only checks strings that look like human-readable text
- JSX/TSX content: Text between JSX tags
- Documentation: Docstrings, JSDoc comments, etc.
- Markdown: Ignores code blocks and inline code
- HTML/XML: Checks text content and comments
The checker automatically ignores:
- Variable names and identifiers
- Programming keywords
- URLs and file paths
- Hex colors and numbers
- Code within backticks in Markdown
Development
Prerequisites
- Node.js >= 16.0.0
- Yarn package manager
Setup
# Install dependencies
yarn install
# Run in development mode
yarn dev
# Build for production
yarn build
# Type check
yarn typecheck
Using Just Commands
If you have just installed:
# Show available commands
just
# Fresh install
just fresh
# Run development server
just dev
# Update dictionaries
just dictionaries
Architecture
The server uses:
- @modelcontextprotocol/sdk: MCP protocol implementation
- nspell: Hunspell-compatible spell checker
- glob: File pattern matching for directory scanning
- TypeScript: Type-safe development
- Dictionary files: From the wooorm/dictionaries project
Configuration File
Create a spellchecker.config.json file:
{
"languages": ["en-US", "es", "fr"],
"defaultLanguage": "en-US",
"scanOptions": {
"syntaxAware": true,
"recursive": true,
"fileTypes": [
".txt", ".md", ".mdx",
".js", ".jsx", ".ts", ".tsx",
".py", ".java", ".go"
],
"ignorePaths": [
"node_modules",
".git",
"dist",
"build"
]
}
}
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Dictionary files from wooorm/dictionaries
- Built on the Model Context Protocol
Troubleshooting
Dictionaries not loading
If you see "No dictionaries loaded" error:
yarn run postinstall
# or
just dictionaries
Server not starting
Ensure you've built the project:
yarn build
Language not available
Check available languages with the list_languages tool or ensure the dictionary files exist in the dictionaries/ folder.
