A Model Context Protocol (MCP) server that integrates Vale prose linting into AI coding assistants like Claude Desktop, Cursor, and other MCP-compatible tools.
This MCP server provides AI assistants with the ability to check files for style and grammar issues using Vale's powerful linting engine. It automatically discovers Vale configuration files and provides formatted, actionable feedback about writing quality.
- ✅ File linting: Check any text file for style issues with Vale
- 🔍 Smart configuration discovery: Automatically finds
.vale.inifiles using Vale's native upward search - 🎯 Configuration priority: Supports
VALE_CONFIG_PATHenvironment variable for explicit configuration - 📊 Rich formatting: Returns markdown-formatted results with emojis and severity grouping
- 🛡️ Graceful degradation: Provides helpful installation guidance when Vale isn't installed
- 🐛 Debug mode: Optional debug logging for troubleshooting
- 📦 Style sync: Download Vale style packages with
vale_synctool
- Node.js: Version 22 or higher
- Vale: Version 3.0 or higher
# Clone or navigate to the project directory
cd Vale-MCP
# Install dependencies
npm install
# Build the TypeScript project
npm run buildInstalling globally creates a vale-cli command available system-wide:
# From the Vale-MCP directory
npm run install:globalThis creates a global vale-cli command that you can use from anywhere, making it easy to configure in AI assistants.
To uninstall:
npm run uninstall:globalNote: If you're actively developing and making changes, you can skip global installation and use the absolute path to build/index.js instead (see integration examples below).
AI coding assistants that support the MCP standard can integrate the Vale MCP server.
Add the Vale MCP server to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"vale": {
"command": "vale-cli",
"args": []
}
}
}For debug mode:
{
"mcpServers": {
"vale": {
"command": "vale-cli",
"args": ["--debug"]
}
}
}Restart Claude Desktop after updating the configuration.
You can add the Vale MCP server to VS Code in two ways:
- Open the Command Palette: Press
Ctrl+Shift+P(Windows/Linux) orCmd+Shift+P(Mac) - Run: Type
MCP: Add Serverand select it - Provide server information:
- Name:
vale(or any name you prefer) - Type: Select
stdio - Command:
vale-cli(if installed globally) ornode - Arguments:
- If using
vale-cli: Leave empty or add--debug - If using
node: Add the path like/Users/fabri/repos/FrankenMCP/Vale-MCP/build/index.js
- If using
- Name:
- Choose scope: User configuration (global) or Workspace (project-specific)
Add to your VS Code settings file:
Using global install:
{
"github.copilot.chat.mcp.servers": {
"vale": {
"command": "vale-cli",
"args": []
}
}
}Using absolute path (no global install needed):
{
"github.copilot.chat.mcp.servers": {
"vale": {
"command": "node",
"args": ["/absolute/path/to/Vale-MCP/build/index.js"]
}
}
}With debug mode:
{
"github.copilot.chat.mcp.servers": {
"vale": {
"command": "vale-cli",
"args": ["--debug"]
}
}
}Verify in VS Code:
- Open GitHub Copilot Chat
- Type
/mcpto see available MCP tools - The Vale tools should appear in the list
Add to your Cursor MCP settings (follow Cursor's MCP documentation):
Using global install:
{
"mcpServers": {
"vale": {
"command": "vale-cli"
}
}
}Using absolute path:
{
"mcpServers": {
"vale": {
"command": "node",
"args": ["/absolute/path/to/Vale-MCP/build/index.js"]
}
}
}You can specify a Vale configuration file using the VALE_CONFIG_PATH environment variable:
{
"mcpServers": {
"vale": {
"command": "vale-cli",
"env": {
"VALE_CONFIG_PATH": "/path/to/your/.vale.ini"
}
}
}
}Once configured, you can ask your AI assistant to:
- "Check docs/guide.md using Vale"
- "Lint this markdown file for style issues"
- "What style issues does Vale find in README.md?"
- "Run
vale_syncto download the style packages" - "Is Vale installed on this system?"
The server provides three MCP tools:
Check if you have installed Vale and can access it.
Returns:
- Installation status (installed/not installed)
- Vale version (if installed)
- Platform-specific installation instructions (if not installed)
Example usage in AI:
"Is Vale installed on this system?"
Download Vale styles and packages by running vale sync. Use this when you encounter errors about missing styles directories.
Parameters:
config_path(optional): Path to.vale.inifile. If not provided, uses the server's configured path or searches in the current directory.
Returns:
- Success/failure status
- Output from the sync operation
- Helpful error messages if sync fails
When to use:
- When you see E100 errors:
"The path '/path/to/styles' does not exist" - After creating or updating a
.vale.inifile - When adding new packages to your Vale configuration
Example usage in AI:
"Run
vale_syncto download the required styles"
Lint a file at a specific path against Vale style rules.
Parameters:
path(required): Absolute or relative path to the file
Returns:
- Formatted markdown with issues grouped by severity
- Detailed issue information (line, column, rule, message, suggestion)
- Summary statistics (errors, warnings, suggestions)
- Structured metadata for programmatic access
Example usage in AI:
"Check the README.md file for style issues"
vale-cli [options]
Options:
--debug, --verbose, -v Enable debug logging
--help, -h Show help message
--version Show version numberThe server searches for Vale configuration in the following order:
- Per-file: Configuration discovered from file's directory (for
check_filetool) - Server-wide:
VALE_CONFIG_PATHenvironment variable - Working directory:
.vale.iniinprocess.cwd() - Vale defaults: Global configuration or built-in rules
StylesPath = styles
Packages = write-good, proselint
[*]
BasedOnStyles = write-good, proselintFor more information about Vale configuration, see the Vale documentation.
Vale-MCP/
├── src/
│ ├── index.ts # Main MCP server
│ ├── vale-runner.ts # Vale execution wrapper
│ ├── config.ts # Configuration management
│ └── types.ts # TypeScript type definitions
├── build/ # Compiled JavaScript (generated)
├── package.json # Node.js package configuration
├── tsconfig.json # TypeScript compiler configuration
└── readme.md # This file
# Install dependencies
npm install
# Build TypeScript
npm run build
# Watch for changes
npm run watch
# Run the server directly
npm start# TypeScript compilation check
npx tsc --noEmit
# Strict unused code check
npx tsc --noUnusedLocals --noUnusedParameters --noEmitIf you see errors about missing Vale installation:
macOS:
brew install valeLinux:
sudo snap install valeWindows:
choco install vale
# or
scoop install valeIf you see errors like "The path '/path/to/styles' does not exist":
- Make sure you have a
.vale.inifile in your project - Run the
vale_synctool through your AI assistant - Or manually run:
vale sync
Enable debug mode to see detailed logging:
{
"mcpServers": {
"vale": {
"command": "vale-cli",
"args": ["--debug"]
}
}
}Check the MCP server logs in your AI assistant for detailed information.
Created by @chrischinchilla and @theletterf
MIT License - see LICENSE file for details.