eslint-plugin-mcp-sdk-security
MCP SDK security — tool-input validation and transport hygiene
AI-Optimized Security
Every rule includes CWE, OWASP, and CVSS metadata for AI assistants to provide precise, context-aware fixes.
Install
npm install -D eslint-plugin-mcp-sdk-securityLive from GitHub
This content is fetched directly from README.md on GitHub and cached for 1 hour.
⭐ If this plugin caught a real bug for you, star the repo — it's the signal that keeps these rules maintained.
Description
Security rules for code built on @modelcontextprotocol/sdk.
Scope: this plugin lints the MCP SDK's API shapes — registerTool, transports, handler signatures. It does not inspect MCP wire traffic, which isn't visible from source. Every rule gates on the SDK actually being imported, so it stays silent in files that don't use MCP.
- Why — a linter nobody reads protects nothing. We would rather miss a finding than spend your attention on one that was never real.
- How — evidence, not names. A rule fires on what the code does, resolved through the AST and ESLint's own scope analysis.
- What — every finding carries its fix, in prose for a human and as structured JSON for an agent. Security rules add a CWE mapping and, where assigned, a CVSS score.
That trade costs recall, and we measure it: methodology · results · a false positive is a bug.
Getting Started
- To check out the guide, visit eslint.interlace.tools. 📚
npm install eslint-plugin-mcp-sdk-security --save-dev⚙️ Configuration Presets
| Preset | Description |
|---|---|
recommended | Enables every rule at error. |
strict | Same set as recommended; reserved for rules that are not yet safe by default. |
minimal | Same set as recommended; reserved for a reduced high-signal subset. |
Usage
// eslint.config.js
import mcpSdkSecurity from 'eslint-plugin-mcp-sdk-security';
export default [
mcpSdkSecurity.configs.recommended,
];Or wire the rules yourself:
import mcpSdkSecurity from 'eslint-plugin-mcp-sdk-security';
export default [
{
plugins: { 'mcp-sdk-security': mcpSdkSecurity },
rules: {
'mcp-sdk-security/require-tool-input-schema': 'error',
},
},
];oxlint
Every rule in this plugin runs on oxlint as well as ESLint:
{ "jsPlugins": ["eslint-plugin-mcp-sdk-security/oxlint"] }📦 Compatibility
See the ESLint Version Support Policy for the full matrix.
Rules
Legend
| Icon | Description |
|---|---|
| 💼 | Recommended: Included in the recommended preset. |
| ⚠️ | Warns: Set to warn in recommended preset. |
| 🔧 | Auto-fixable: Automatically fixable by the --fix CLI option. |
| 💡 | Suggestions: Providing code suggestions in IDE. |
| 🚫 | Deprecated: This rule is deprecated. |
| 🟢 | Type-unaware: AST-only, runs in oxlint JS-plugin tier. |
| 🟡 | Type-aware (refining): pure-AST primary path; types refine precision. |
| 🟠 | Type-aware (graceful): requires TS program; silent without it. |
| Rule | CWE | OWASP | CVSS | Description | 🧠 | 💼 | ⚠️ | 🔧 | 💡 | 🚫 |
|---|---|---|---|---|---|---|---|---|---|---|
| no-command-injection-in-tool | CWE-78 | A03:2021 | Disallow an MCP tool argument being used directly as the command in a child_process call. | 🟢 | ||||||
| no-tool-description-injection | CWE-1427 | A03:2021 | Require MCP tool descriptions and titles to be static text, since they reach the model as instructions. | 🟢 | ||||||
| no-unvalidated-tool-args | CWE-20 | A03:2021 | Disallow a tool handler reading an argument its declared input schema does not include. | 🟢 | ||||||
| require-tool-input-schema | CWE-20 | A03:2021 | Require an input schema when registering an MCP tool | 🟢 |
⭐ Support & follow
If this plugin caught a real bug for you, star the repo — stars are the signal that keeps the Interlace ESLint ecosystem maintained — and follow the writeups on Dev.to for the benchmarks and security research behind these rules.
🔗 Related ESLint Plugins
Part of the Interlace ESLint ecosystem — AI-native rules with LLM-optimized error messages:
Security
Code quality
| Plugin | Downloads | Description |
|---|---|---|
eslint-plugin-conventions | Team-specific habits and styles. | |
eslint-plugin-import-next | Fast cycle + import-graph analysis. | |
eslint-plugin-maintainability | Cognitive load and clean-code patterns. | |
eslint-plugin-modernization | ESNext migration + syntax evolution. | |
eslint-plugin-modularity | Structural integrity and DDD patterns. | |
eslint-plugin-operability | Production readiness and resource health. | |
eslint-plugin-react-a11y | React accessibility / WCAG. | |
eslint-plugin-react-features | React best practices and optimization. | |
eslint-plugin-reliability | Runtime stability and error safety. |
📄 License
MIT © Ofri Peretz
Building secure JavaScript with Interlace? Star the repo to get new rules and CWE coverage as we ship them — or follow the AI-code-security benchmarks behind them.