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
You can run Vale MCP directly using npx without installing it globally:
npx vale-mcp@latestThis is the recommended approach for most users and is what the quick install badges above use.
Install the vale-mcp package globally to create a system-wide vale-cli command:
npm install -g vale-mcpTo uninstall:
npm uninstall -g vale-mcp# Clone or navigate to the project directory
cd Vale-MCP
# Install dependencies
npm install
# Build the TypeScript project
npm run build
# Install globally (creates a system-wide vale-cli command)
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": "npx",
"args": ["vale-mcp@latest"]
}
}
}Using global install:
{
"mcpServers": {
"vale": {
"command": "vale-cli",
"args": []
}
}
}For debug mode:
{
"mcpServers": {
"vale": {
"command": "npx",
"args": ["vale-mcp@latest", "--debug"]
}
}
}Restart Claude Desktop after updating the configuration.
You can also add the Vale MCP server to VS Code manually:
- 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:
npx(recommended, no install needed),vale-cli(if installed globally), ornode - Arguments:
- If using
npx: Addvale-mcp@latest - 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 npx (no install needed):
{
"github.copilot.chat.mcp.servers": {
"vale": {
"command": "npx",
"args": ["vale-mcp@latest"]
}
}
}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": "npx",
"args": ["vale-mcp@latest", "--debug"]
}
}
}Verify in VS Code:
- Open GitHub Copilot Chat
- Type
/mcpto see available MCP tools - The Vale tools should appear in the list
You can also add the Vale MCP server manually (follow Cursor's MCP documentation):
Using npx (no install needed):
{
"mcpServers": {
"vale": {
"command": "npx",
"args": ["vale-mcp@latest"]
}
}
}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": "npx",
"args": ["vale-mcp@latest"],
"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 four 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"
Lint AI-generated text against Vale style rules before it's written to a file or artifact.
Parameters:
text(required): The text content to check with Valetext_file_ext(optional): The file extension to apply to the text. Used as the value to Vale's--extargument. If not specified, the--extargument is not used. The format for this value is an optional leading dot followed by letters and digits, such as: "md", ".md", "txt", ".txt", or "docx"config_path(optional): The path to the config file to use. If not specified, the server's configured path is used.
Returns:
- A JSON object containing Vale's evaluation results.
Example usage in AI:
"Check this text 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. Refer to the LICENSE file for details.