Integrations

Using Atlas with ESLint in 2026

Updated 6 min read

Atlas works with ESLint through ESLint's official MCP server, so Atlas reads real rule violations with their rule IDs and locations, then fixes them one rule at a time through diff review. Add it with atlas mcp add eslint -- npx -y @eslint/mcp@latest. Keep permission.edit set to ask so lint autofixes still pass through Atlas's diff review before they land.

What ESLint's official MCP server gives Atlas

ESLint ships an official MCP server, and adding it to Atlas takes 1 command: atlas mcp add eslint -- npx -y @eslint/mcp@latest. With it, Atlas reads real rule violations with their rule IDs and locations, so a lint fix targets a named rule at a known line rather than a general impression.

Rule IDs are the whole point. When Atlas can see that a violation is no-floating-promises at a specific file and line, the fix becomes a well-defined problem with a known correct shape. Without the rule ID, an agent is looking at a code smell and inventing a remedy, which is how lint cleanups turn into unrelated refactors. ESLint's official MCP server keeps Atlas anchored to what the linter actually reported, and because Atlas is terminal-native, the whole cycle of reading violations, proposing fixes, and reviewing diffs happens in the repo where the eslint config already lives.

The eslint --mcp flag and what it does since 9.26

The eslint --mcp flag does the same thing as adding @eslint/mcp@latest directly. Since ESLint 9.26, eslint --mcp just shells out to @eslint/mcp under the hood, so the two routes converge on the same server and you can pick whichever fits your project's tooling.

Knowing they are the same thing saves an argument. Some teams prefer registering the package explicitly with atlas mcp add eslint -- npx -y @eslint/mcp@latest, because the dependency is then visible in the command itself. Others prefer eslint --mcp because it goes through the ESLint binary the project already pins. Since ESLint 9.26 the flag delegates to @eslint/mcp anyway, so the tools Atlas sees are identical either way. Choose on style, not on capability, and be aware that on ESLint versions before 9.26 the delegation is not there to rely on.

If your config is eslint.config.ts, install jiti

If your config is eslint.config.ts, install jiti or the ESLint MCP server cannot load it. A TypeScript flat config needs a TypeScript loader, and jiti is what supplies it in 2026. Without jiti, the server fails to read the config and Atlas sees no rules at all.

This is the most common setup failure with ESLint and any MCP client, and the symptom is misleading. The server starts, Atlas connects, and then reports no violations, which looks like a clean codebase rather than a broken configuration. The cause is that eslint.config.ts is TypeScript and cannot be loaded without jiti present. Install jiti and the config loads, the rules resolve, and the violations appear. If your config is plain JavaScript, none of this applies. If the file ends in .ts and Atlas is suspiciously happy with your code, check for jiti first.

The fallback: npx eslint . --format json

Without the ESLint MCP server, Atlas can still shell out to npx eslint . --format json, which exits 1 when there are errors. The JSON formatter gives Atlas the same structured violations, and the exit code gives your CI pipeline an unambiguous pass or fail signal.

Keep this path in mind for environments where adding an MCP server is not worth the setup, such as a short-lived container or a CI job. Running npx eslint . --format json produces structured output that Atlas parses just as precisely as it would parse the MCP server's results, including rule IDs and locations. The exit code behavior is worth noting on its own: npx eslint . --format json exits 1 when there are errors, so a script that treats a nonzero exit as failure will correctly fail the build on a lint error, and Atlas can read the exit status as a signal too.

The daily workflow: clear one rule at a time

Ask Atlas to clear every no-floating-promises violation in src and present the fixes rule by rule. Scoping a lint cleanup to 1 rule and 1 directory is what keeps the resulting diff reviewable, because many fixes for a single known rule read far faster than the same number of assorted changes.

Rule-by-rule is the discipline that makes agentic linting practical. Every no-floating-promises fix has roughly the same shape, so once you have reviewed a few, you can move through the rest quickly with a clear sense of what correct looks like. Mix five rules together and every diff hunk requires fresh judgment, which is where reviewer fatigue sets in and bad fixes slip through. Name the rule, name the directory, and let ESLint's MCP server hand Atlas the exact set of violations that match. Then repeat for the next rule.

Keeping permission.edit set to ask

Keep permission.edit set to ask so lint autofixes still pass through Atlas's diff review before they land. As of 2026, an autofix is still a code change, and ESLint autofixes are not universally safe, so the review gate is worth keeping even for changes a linter proposed.

The temptation with a lint cleanup is to let the agent run unattended, because lint fixes feel mechanical. Most are. Some are not, and the ones that are not can quietly change behavior, particularly around promises and unused expressions where removing something the linter considers dead has real consequences. Setting permission.edit to ask means every edit Atlas makes surfaces as a diff you approve. Combined with a rule-by-rule scope, that review is fast, because the diffs are homogeneous and you already know the shape of the correct fix for the rule in question.

Setup

  1. 01Add the official server: atlas mcp add eslint -- npx -y @eslint/mcp@latest
  2. 02Or use the eslint --mcp flag, which since ESLint 9.26 just shells out to @eslint/mcp under the hood.
  3. 03If your config is eslint.config.ts, install jiti or the MCP server cannot load it.
  4. 04Without the server, have Atlas shell out to npx eslint . --format json, which exits 1 when there are errors.
  5. 05Ask Atlas to clear every no-floating-promises violation in src and present the fixes rule by rule.
  6. 06Keep permission.edit set to ask so lint autofixes still pass through Atlas's diff review before they land.

Frequently asked questions

how to add the ESLint MCP server to Atlas
Run atlas mcp add eslint -- npx -y @eslint/mcp@latest. ESLint ships an official MCP server, so Atlas reads real rule violations with their rule IDs and locations.
what does the eslint --mcp flag do
Since ESLint 9.26, eslint --mcp just shells out to @eslint/mcp under the hood, so it gives Atlas the same server as adding @eslint/mcp@latest directly.
why does the ESLint MCP server report no violations
If your config is eslint.config.ts, install jiti or the MCP server cannot load it. Without jiti the TypeScript config never loads, so no rules resolve.
how do I run ESLint for an AI agent without an MCP server
Have Atlas shell out to npx eslint . --format json. It gives the same structured violations and exits 1 when there are errors.
can an AI agent fix all my no-floating-promises errors
Yes. Ask Atlas to clear every no-floating-promises violation in src and present the fixes rule by rule, so the diff stays reviewable.
should I let an AI agent apply ESLint autofixes automatically
No. Keep permission.edit set to ask so lint autofixes still pass through Atlas's diff review before they land, since some autofixes change behavior.
does ESLint have an official MCP server
Yes. ESLint ships an official MCP server, @eslint/mcp. Add it to Atlas with atlas mcp add eslint -- npx -y @eslint/mcp@latest.

Try SeaShell in your terminal

The terminal-native AI coding agent. Free core, single binary.

Install SeaShell

Related guides

Atlas with Qwen3 8B (local via Ollama) in 2026

Drive Atlas with Qwen3 8B (local via Ollama) for a powerful, self-hosted AI coding agent experience in 2026. Ideal for offline work, it offers a thinking model at zero cost, running on laptop GPUs.

Atlas with Qwen3-Next 80B-A3B Instruct in 2026

In 2026, Atlas developers can leverage Qwen3-Next 80B-A3B Instruct for efficient, cost-effective coding tasks. This model offers a 128K token context window and a unique sparse architecture.

Atlas with GPT-5.1 Codex in 2026

Drive Atlas with GPT-5.1 Codex in 2026. This OpenAI model offers 400K context for long-horizon coding at $1.25/Mtok input, $10/Mtok output, balancing cost and capability.

Atlas with Amazon Nova Lite in 2026

Explore Atlas with Amazon Nova Lite, Amazon's low-cost multimodal model. Leverage its 300K token context for efficient coding tasks and direct AWS IAM billing in 2026.

Atlas with Qwen3.6 Plus in 2026

Drive Atlas with Qwen3.6 Plus, offering a 1,000,000 token context window for deep code understanding. Priced at $0.50 per Mtok input, it's ideal for complex reasoning tasks in 2026.

Atlas with GLM-4.5-Air in 2026

Explore GLM-4.5-Air's cost-effective performance with Atlas in 2026. This 12B active parameter model offers a 128K token context window for $0.20/Mtok input.

Atlas with MiniMax-M2.5 in 2026

Explore MiniMax-M2.5 for Atlas in 2026. This 230B efficient-MoE model offers a 204,800 token context window and $0.30/Mtok input pricing, ideal for complex coding tasks.

Atlas with MiniMax-M2.7 in 2026

Explore Atlas with MiniMax-M2.7, MiniMax's 230B-parameter agentic model for 2026. Leverage its 204,800 token context and cost-effective $0.30/Mtok input for long-horizon coding tasks.

Browse this resource hub