Compact error/lint parser MCP tool. Normalizes verbose compiler and linter output into structured [{file, line, col, code, severity, message}] JSON. Strips ANSI codes, ASCII underlines, column markers, and repeated file paths.
| Format | Auto-detected | Examples |
|---|---|---|
| Go | yes | go build, go vet, golangci-lint |
| GCC/Clang | yes | gcc, clang, Swift compiler |
| Rust | yes | rustc, cargo build, clippy |
| TypeScript | yes | tsc |
| ESLint | yes | ESLint stylish formatter |
| dotnet/C# | yes | dotnet build, Roslyn, FxCop, StyleCop |
| Python | yes | flake8, pycodestyle, mypy |
| Kotlin | yes | kotlinc, Gradle |
go build -o errs
sudo cp errs /usr/local/bin/
codesign -s - /usr/local/bin/errs # macOSOr with just:
just installPipe compiler/linter output through errs:
go build ./... 2>&1 | errs --cli
dotnet build 2>&1 | errs --cli
cargo build 2>&1 | errs --cliWith a format hint (bypasses auto-detection):
eslint src/ 2>&1 | errs --cli --format eslintRead from file:
errs --cli --file build-errors.txtDefault mode (no flags) runs as an MCP stdio server with a single errs tool:
input(string, required): Raw error/lint outputformat(string, optional): Format hint —go,eslint,tsc,rust,gcc,dotnet
{
"errors": [
{"file": "main.go", "line": 10, "col": 5, "message": "undefined: foo"},
{"file": "main.go", "line": 15, "col": 3, "code": "SA1019", "message": "strings.Title is deprecated"}
],
"format": "colon",
"count": 2,
"files": 1,
"summary": "2 errors in 1 file"
}Add to .mcp.json:
{
"mcpServers": {
"errs": {
"command": "errs"
}
}
}MIT