docs: add TypeScript config guidance for MCP server#20796
Conversation
✅ Deploy Preview for docs-eslint canceled.
|
lumirlumir
left a comment
There was a problem hiding this comment.
Thanks for the PR. There’s currently a CI error related to npm_tabs. Could you take a look?
|
@lumirlumir Thanks for catching that! The Could you re-review when you have a chance? |
Add a "TypeScript configuration" tab to the MCP server documentation page showing how to configure ESLint MCP server with typescript-eslint. Fixes eslint/eslint.org#xxx Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
ac9a1fd to
3c0ff9f
Compare
|
|
||
| ### Option A: Install jiti (Node.js) | ||
|
|
||
| If you use Node.js and have [`jiti`](https://github.com/unjs/jiti) installed as a project dependency, the MCP server will use it automatically. No changes to the MCP configuration are needed — just make sure `jiti` is installed: |
There was a problem hiding this comment.
Thanks for the pull request @pierluigilenoci. Unfortunately, installing jiti locally in a project's node_modules isn't sufficient when @eslint/mcp@latest is started via npx. When you run it with npx, npm installs @eslint/mcp and its dependencies (i.e. eslint) into a temporary directory in the npm cache. Because the process runs from that location, Node.js module resolution won't see the project's local node_modules, so a locally installed jiti won't be used, and you will still get an error like:
The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.
In other words, to use a local jiti installation, you also need to install @eslint/mcp locally so it resolves dependencies from the project. That defeats the purpose of using @eslint/mcp@latest via npx to always pull the newest version from the npm registry.
|
Thanks @fasttime — that's a great catch. You're right that Would you recommend one of these alternatives for the docs?
Happy to revise the PR in whichever direction makes most sense for the project. Thanks! |
That could be a useful alternative to running
Those could also be useful if we can figure out how to make them work reliably across environments. The challenge here is not documenting a particular solution, but finding one that works consistently in the first place. Running the MCP server with |
When run via npx @eslint/mcp@latest, ESLint is installed into a temporary directory and cannot resolve jiti from the project's node_modules. Fix by documenting local installation of both packages so that standard Node.js module resolution finds jiti. Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
|
Thanks @fasttime — great feedback. I've updated Option A to address the
This way ESLint within the local The trade-off is that users need to manually update |
fasttime
left a comment
There was a problem hiding this comment.
Thanks for the update! I left a couple of notes.
| {{ npm_tabs({ | ||
| command: "install", | ||
| packages: ["@eslint/mcp", "jiti"], | ||
| args: ["--save-dev"] | ||
| }) }} |
There was a problem hiding this comment.
It makes sense to use the template since not all projects use npm as a package manager, but I think we also need to test the MCP server when the packages are installed with yarn, pnpm or bun in this scenario.
There was a problem hiding this comment.
I attempted to install the dependencies using Yarn (latest version v4.14.1), which enables Plug'n'Play mode by default and therefore does not create a local node_modules directory. When I start the MCP server in VS Code it launches normally, but it fails as soon as it's asked to lint a file with ESLint:
The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.
This suggests that this kind of installation (package using Yarn in PnP mode) is not supported when running npx @eslint/mcp. I will create a repro and post it here when I have a chance (the tests are time-consuming, so it may take a while).
There was a problem hiding this comment.
Here's a repro as promised: https://github.com/fasttime/ESLint-Repro/tree/mcp-server-jiti-yarn-pnp
| ::: tip | ||
| Deno and Bun support TypeScript natively, so no additional configuration is needed if you use either of these runtimes. | ||
| ::: |
There was a problem hiding this comment.
IIRC, only npx is supported when running @eslint/mcp. It that case, it's better to remove the tip.
There was a problem hiding this comment.
Okay, I'm not sure if there was a decision to only support npx, but it's recommended (see eslint/rewrite#239 (comment)). So probably it's still better not to encourage using alternative runtimes for the time being.
|
Hi — friendly follow-up. All checks are passing and the PR is ready for review. Would you be able to take a look when you get a chance? Thank you! |
|
@pierluigilenoci please see my above comments. |
- Merge Cursor and Windsurf configuration sections (identical JSON, only the file path differs) - Remove tip about Deno/Bun alternative runtimes (only npx is supported for @eslint/mcp) Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
|
@fasttime Thanks for the thorough review! I've pushed a commit addressing your feedback:
Regarding your note about testing with yarn, pnpm, and bun for the local install scenario (Option A) — I'll verify that the |
fasttime
left a comment
There was a problem hiding this comment.
Regarding your note about testing with yarn, pnpm, and bun for the local install scenario (Option A) — I'll verify that the
npm_tabstemplate approach works correctly when packages are installed with those package managers. Would you like me to add any specific notes about package manager compatibility, or is this something to validate separately?
Thanks for the update @pierluigilenoci. It would be great if you could verify whether the local installation approach works or doesn't work with package managers other than npm (we can collect the results in the discussion first, and add notes to the docs later). I've started testing with Yarn v4 and my impression is that this approach would not work in that particular scenario, but please double-check if you have a chance.
| {{ npm_tabs({ | ||
| command: "install", | ||
| packages: ["@eslint/mcp", "jiti"], | ||
| args: ["--save-dev"] | ||
| }) }} |
There was a problem hiding this comment.
I attempted to install the dependencies using Yarn (latest version v4.14.1), which enables Plug'n'Play mode by default and therefore does not create a local node_modules directory. When I start the MCP server in VS Code it launches normally, but it fails as soon as it's asked to lint a file with ESLint:
The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.
This suggests that this kind of installation (package using Yarn in PnP mode) is not supported when running npx @eslint/mcp. I will create a repro and post it here when I have a chance (the tests are time-consuming, so it may take a while).
|
@fasttime Thanks for testing with Yarn v4 and sharing the findings! I did some research on the module resolution behavior of each package manager when used with Summary of expected behavior:
Analysis:
I'll set up test environments for pnpm and bun to verify empirically and report back. For Yarn v4, would it be worth documenting that users need |
Yarn Plug'n'Play (default since Yarn 2) does not create a node_modules directory, so 'npx @eslint/mcp' falls back to a temporary install where jiti cannot be resolved. Document two workarounds: run the server via 'yarn run -B mcp' so PnP can resolve jiti from the project's dependency graph, or switch the project's linker to node-modules in .yarnrc.yml. Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
|
@fasttime good catch — verified this on Yarn v4.6.0:
Pushed b80b4bdcd which adds a Yarn Plug'n'Play (PnP) subsection under Option A documenting two workarounds:
PTAL. |
Drop the 'yarn run -B mcp' workaround and recommend only setting nodeLinker: node-modules for npx @eslint/mcp. Note that other Yarn PnP modes may not work as expected. Per @fasttime's review feedback. Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
fasttime
left a comment
There was a problem hiding this comment.
|
|
||
| #### Yarn Plug'n'Play (PnP) | ||
|
|
||
| Yarn 2+ uses Plug'n'Play by default and does not create a `node_modules` directory. To run `npx @eslint/mcp` in a Yarn project, set `nodeLinker` to `node-modules` in your `.yarnrc.yml` and run `yarn install` again: |
There was a problem hiding this comment.
BTW, nodeLinker: pnpm seems to work also fine (repro). Only the setting nodeLinker: pnp, i.e. the default, is problematic.
fasttime
left a comment
There was a problem hiding this comment.
LGTM, thanks! For reference, here is a list of repro projects I set up to test the MCP server with the different package managers:
npm- Yarn PnP (default, not working)
- Yarn with
nodeLinker: node-modules - Yarn with
nodeLinker: pnpm pnpm- Bun
Leaving open for @lumirlumir to finish reviewing.
Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
lumirlumir
left a comment
There was a problem hiding this comment.
I’m sorry for the delay. I missed that I’d been pinged.
I’ve left one small suggestion, as there was a previous issue about it. Otherwise LGTM. Thanks everyone for the hard work on this PR.
|
|
||
| Note: MCP tool calls in Windsurf will consume credits regardless of success or failure. | ||
|
|
||
| ## Using TypeScript Configuration Files |
There was a problem hiding this comment.
| ## Using TypeScript Configuration Files | |
| ## Use TypeScript Configuration Files |
As there was a previous issue about using non-gerund forms for headings in #16578, I think Use would be nicer here.
|
Done — changed 'Using TypeScript Configuration Files' to 'Use TypeScript Configuration Files' per ESLint heading conventions (#16578). @lumirlumir @fasttime — could you re-review when you have a chance? Thank you! |
Signed-off-by: Pierluigi Lenoci <pierlugi.lenoci@gmail.com>
294c7ef to
31862d4
Compare
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@rollup/rollup-linux-x64-gnu](https://rollupjs.org/) ([source](https://github.com/rollup/rollup)) | [`4.62.0` → `4.62.2`](https://renovatebot.com/diffs/npm/@rollup%2frollup-linux-x64-gnu/4.62.0/4.62.2) |  |  | | [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | [`8.61.1` → `8.62.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.61.1/8.62.0) |  |  | | [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | [`8.61.1` → `8.62.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.61.1/8.62.0) |  |  | | [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | [`10.5.0` → `10.6.0`](https://renovatebot.com/diffs/npm/eslint/10.5.0/10.6.0) |  |  | | [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) | [`29.15.2` → `29.15.3`](https://renovatebot.com/diffs/npm/eslint-plugin-jest/29.15.2/29.15.3) |  |  | | [globals](https://github.com/sindresorhus/globals) | [`17.6.0` → `17.7.0`](https://renovatebot.com/diffs/npm/globals/17.6.0/17.7.0) |  |  | | [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | [`3.8.4` → `3.9.1`](https://renovatebot.com/diffs/npm/prettier/3.8.4/3.9.1) |  |  | | [rollup](https://rollupjs.org/) ([source](https://github.com/rollup/rollup)) | [`4.62.0` → `4.62.2`](https://renovatebot.com/diffs/npm/rollup/4.62.0/4.62.2) |  |  | --- ### Release Notes <details> <summary>rollup/rollup (@​rollup/rollup-linux-x64-gnu)</summary> ### [`v4.62.2`](https://github.com/rollup/rollup/blob/HEAD/CHANGELOG.md#4622) [Compare Source](rollup/rollup@v4.62.1...v4.62.2) *2026-06-19* ##### Bug Fixes - Do not add spurious side-effect-free external imports to chunks when using minChunkSize ([#​6411](rollup/rollup#6411)) ##### Pull Requests - [#​6411](rollup/rollup#6411): Skip side-effect-free external imports when hoisting is disabled ([@​morgan-coded](https://github.com/morgan-coded), [@​lukastaegert](https://github.com/lukastaegert)) - [#​6416](rollup/rollup#6416): refactor(rust/parser\_ast): extract property AstConverter write buffer kind logic to new method ([@​fabianbernhart](https://github.com/fabianbernhart), [@​lukastaegert](https://github.com/lukastaegert)) ### [`v4.62.1`](https://github.com/rollup/rollup/blob/HEAD/CHANGELOG.md#4621) [Compare Source](rollup/rollup@v4.62.0...v4.62.1) *2026-06-19* ##### Bug Fixes - Preserve multipart file extensions when deconflicting output chunks ([#​6408](rollup/rollup#6408)) - Fix an issue where getLogFilter would match additional logs ([#​6415](rollup/rollup#6415)) ##### Pull Requests - [#​6393](rollup/rollup#6393): Use import attributes for importing JSON ([@​selfisekai](https://github.com/selfisekai), [@​lukastaegert](https://github.com/lukastaegert)) - [#​6408](rollup/rollup#6408): fix: insert conflict numbers before first extension in multi-extension filenames ([@​LeSingh1](https://github.com/LeSingh1), [@​lukastaegert](https://github.com/lukastaegert)) - [#​6415](rollup/rollup#6415): fix: advance value past wildcard prefix before suffix check in getLogFilter ([@​JSap0914](https://github.com/JSap0914), [@​lukastaegert](https://github.com/lukastaegert)) - [#​6417](rollup/rollup#6417): chore(deps): update msys2/setup-msys2 digest to [`66cd2cc`](rollup/rollup@66cd2cc) ([@​renovate](https://github.com/renovate)\[bot]) - [#​6418](rollup/rollup#6418): fix(deps): update minor/patch updates ([@​renovate](https://github.com/renovate)\[bot], [@​lukastaegert](https://github.com/lukastaegert)) - [#​6419](rollup/rollup#6419): chore(deps): update dependency eslint-plugin-unicorn to v66 ([@​renovate](https://github.com/renovate)\[bot]) - [#​6420](rollup/rollup#6420): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://github.com/renovate)\[bot], [@​lukastaegert](https://github.com/lukastaegert)) </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)</summary> ### [`v8.62.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8620-2026-06-22) [Compare Source](typescript-eslint/typescript-eslint@v8.61.1...v8.62.0) ##### 🚀 Features - remove redundant package.json "files" ([#​12444](typescript-eslint/typescript-eslint#12444)) ##### ❤️ Thank You - Kirk Waiblinger [@​kirkwaiblinger](https://github.com/kirkwaiblinger) See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.62.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary> ### [`v8.62.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8620-2026-06-22) [Compare Source](typescript-eslint/typescript-eslint@v8.61.1...v8.62.0) ##### 🚀 Features - remove redundant package.json "files" ([#​12444](typescript-eslint/typescript-eslint#12444)) ##### ❤️ Thank You - Kirk Waiblinger [@​kirkwaiblinger](https://github.com/kirkwaiblinger) See [GitHub Releases](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.62.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> <details> <summary>eslint/eslint (eslint)</summary> ### [`v10.6.0`](https://github.com/eslint/eslint/releases/tag/v10.6.0) [Compare Source](eslint/eslint@v10.5.0...v10.6.0) #### Features - [`b1f9106`](eslint/eslint@b1f9106) feat: detect Symbol() and BigInt() in no-constant-binary-expression ([#​20981](eslint/eslint#20981)) (Taejin Kim) - [`f291007`](eslint/eslint@f291007) feat: add checkRelationalComparisons to no-constant-binary-expression ([#​20948](eslint/eslint#20948)) (sethamus) #### Bug Fixes - [`6b05784`](eslint/eslint@6b05784) fix: prefer-exponentiation-operator invalid autofix at statement start ([#​20997](eslint/eslint#20997)) (Milos Djermanovic) - [`bb9eb2a`](eslint/eslint@bb9eb2a) fix: account for shadowed `Boolean` in `no-extra-boolean-cast` ([#​21013](eslint/eslint#21013)) (den$) - [`8fd8741`](eslint/eslint@8fd8741) fix: don't report shadowed undefined in `radix` rule ([#​21011](eslint/eslint#21011)) (Pixel) - [`5784980`](eslint/eslint@5784980) fix: don't report shadowed undefined in no-throw-literal ([#​21010](eslint/eslint#21010)) (Pixel) - [`9cd1e6d`](eslint/eslint@9cd1e6d) fix: suppress invalid class suggestion in no-promise-executor-return ([#​21008](eslint/eslint#21008)) (Pixel) - [`d4eb2dc`](eslint/eslint@d4eb2dc) fix: don't report shadowed undefined in prefer-promise-reject-errors ([#​21006](eslint/eslint#21006)) (Pixel) - [`2360464`](eslint/eslint@2360464) fix: prefer-promise-reject-errors false positives for shadowed Promise ([#​21003](eslint/eslint#21003)) (den$) - [`63d52d2`](eslint/eslint@63d52d2) fix: restore max-classes-per-file report range ([#​21002](eslint/eslint#21002)) (Pixel) - [`7feaff0`](eslint/eslint@7feaff0) fix: callback detection logic for IIFEs in max-nested-callbacks ([#​20979](eslint/eslint#20979)) (fnx) - [`399a2ec`](eslint/eslint@399a2ec) fix: don't report inner non-callbacks in `max-nested-callbacks` ([#​20995](eslint/eslint#20995)) (Milos Djermanovic) #### Documentation - [`a83683d`](eslint/eslint@a83683d) docs: Update README (GitHub Actions Bot) - [`f5449f9`](eslint/eslint@f5449f9) docs: document userland patterns for global assertionOptions in RuleT… ([#​20986](eslint/eslint#20986)) (playgirl) - [`bea49f7`](eslint/eslint@bea49f7) docs: Update README (GitHub Actions Bot) - [`e5f70f9`](eslint/eslint@e5f70f9) docs: update code-path diagrams ([#​20984](eslint/eslint#20984)) (Tanuj Kanti) - [`8890c2d`](eslint/eslint@8890c2d) docs: add TypeScript config guidance for MCP server ([#​20796](eslint/eslint#20796)) (Pierluigi Lenoci) - [`3eb3d9b`](eslint/eslint@3eb3d9b) docs: Update README (GitHub Actions Bot) - [`c5bb59c`](eslint/eslint@c5bb59c) docs: Update README (GitHub Actions Bot) - [`eb3c97c`](eslint/eslint@eb3c97c) docs: fix grammar in prefer-const rule description ([#​20983](eslint/eslint#20983)) (lumir) #### Chores - [`6a42034`](eslint/eslint@6a42034) ci: run ecosystem tests on main branch ([#​20891](eslint/eslint#20891)) (sethamus) - [`3dbacdb`](eslint/eslint@3dbacdb) ci: bump actions/checkout from 6 to 7 ([#​21014](eslint/eslint#21014)) (dependabot\[bot]) - [`c3abfca`](eslint/eslint@c3abfca) chore: correct JSDoc param types in html formatter ([#​21018](eslint/eslint#21018)) (Minseon Kim) - [`a832320`](eslint/eslint@a832320) ci: split ecosystem tests into separate jobs ([#​21001](eslint/eslint#21001)) (xbinaryx) - [`27166e7`](eslint/eslint@27166e7) chore: update ecosystem plugins ([#​21005](eslint/eslint#21005)) (ESLint Bot) - [`865d76e`](eslint/eslint@865d76e) ci: bump pnpm/action-setup from 6.0.8 to 6.0.9 ([#​20989](eslint/eslint#20989)) (dependabot\[bot]) - [`27a88c9`](eslint/eslint@27a88c9) chore: update dependency markdown-it to v14 in root ([#​20994](eslint/eslint#20994)) (Milos Djermanovic) - [`970cea6`](eslint/eslint@970cea6) chore: update dependency markdown-it to v14 ([#​20993](eslint/eslint#20993)) (Milos Djermanovic) - [`b482120`](eslint/eslint@b482120) chore: update dependency prettier to v3.8.4 ([#​20990](eslint/eslint#20990)) (renovate\[bot]) - [`6993fb3`](eslint/eslint@6993fb3) chore: update ecosystem plugins ([#​20985](eslint/eslint#20985)) (ESLint Bot) </details> <details> <summary>jest-community/eslint-plugin-jest (eslint-plugin-jest)</summary> ### [`v29.15.3`](https://github.com/jest-community/eslint-plugin-jest/blob/HEAD/CHANGELOG.md#29153-2026-06-26) [Compare Source](jest-community/eslint-plugin-jest@v29.15.2...v29.15.3) ##### Bug Fixes - **no-export:** treat describe blocks as test files ([#​1978](jest-community/eslint-plugin-jest#1978)) ([70568b0](jest-community/eslint-plugin-jest@70568b0)) </details> <details> <summary>sindresorhus/globals (globals)</summary> ### [`v17.7.0`](https://github.com/sindresorhus/globals/releases/tag/v17.7.0) [Compare Source](sindresorhus/globals@v17.6.0...v17.7.0) - Update globals (2026-06-22) ([#​345](sindresorhus/globals#345)) [`33b75f9`](sindresorhus/globals@33b75f9) *** </details> <details> <summary>prettier/prettier (prettier)</summary> ### [`v3.9.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#391) [Compare Source](prettier/prettier@3.9.0...3.9.1) [diff](prettier/prettier@3.9.0...3.9.1) ##### CLI: Fix ignored file has been cached incorrectly ([#​19483](prettier/prettier#19483) by [@​kovsu](https://github.com/kovsu)) Bug details [#​18016](prettier/prettier#18016) ### [`v3.9.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#390) [Compare Source](prettier/prettier@3.8.5...3.9.0) [diff](prettier/prettier@3.8.5...3.9.0) 🔗 [Release Notes](https://prettier.io/blog/2026/06/27/3.9.0) ### [`v3.8.5`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#385) [Compare Source](prettier/prettier@3.8.4...3.8.5) [diff](prettier/prettier@3.8.4...3.8.5) ##### Flow: Support `readonly` as a variance annotation ([#​19022](prettier/prettier#19022) by [@​marcoww6](https://github.com/marcoww6)) Flow now accepts `readonly` as a property variance annotation, equivalent to `+` (covariant/read-only). <!-- prettier-ignore --> ```jsx // Input type T = { readonly foo: string, }; // Prettier 3.8.4 SyntaxError // Prettier 3.8.5 type T = { readonly foo: string, }; ``` </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Amsterdam) - Branch creation - "before 6am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](undefined) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMjIuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIzNC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL21pbm9yIiwidHlwZS9wYXRjaCJdfQ==--> Co-authored-by: Bernd Schorgers <me@bjw-s.dev> Co-authored-by: lab-assistant <lab-assistant@git.bjw-s.dev> Reviewed-on: https://git.bjw-s.dev/bjw-s/action-changed-files/pulls/56
|
@fasttime This PR originally had an AI disclosure, but it was removed at some point. I took a look at this account, and all of their PRs and comments appear to be AI-generated. Just a heads up in case you wanted to take another look at what was said here. |
Summary
Adds a "Using TypeScript Configuration Files" section to the MCP server documentation explaining how to get the MCP server working with
eslint.config.tsfiles.Two approaches are documented:
@eslint/mcpandjitias project dev dependencies sonpx @eslint/mcpresolvesjitifrom the sharednode_modulesdirectory. Includes a Yarn PnP note recommendingnodeLinker: node-modules(other PnP modes may not work as expected).ESLINT_FLAGS=unstable_native_nodejs_ts_configandNODE_OPTIONS=--experimental-transform-typesenvironment variables in the MCP configuration.Configuration examples are provided for VS Code, Cursor, and Windsurf.
fixes #20290
Changes
docs/src/use/mcp.md: Add "Using TypeScript Configuration Files" section with Option A (jiti + local install, Yarn PnP note) and Option B (native Node.js TS support). Importnpm_tabsmacro for install command rendering.