Skip to main content

ShellCheck MCP Server

Tests PyPI License

A Model Context Protocol (MCP) server that provides shell script linting via ShellCheck. Allows AI agents to analyze shell scripts for common errors, stylistic issues, and potential bugs.

MCP Server Profile

{
  "name": "mcp-shellcheck",
  "description": "A Model Context Protocol (MCP) server that provides shell script linting via ShellCheck for AI coding assistants",
  "tools": [
    {
      "name": "shellcheck",
      "description": "Run ShellCheck on a shell script to find bugs, stylistic issues, and potential errors",
      "inputSchema": {
        "type": "object",
        "properties": {
          "file_path": { "type": "string", "description": "Path to the shell script file to check" },
          "script_content": { "type": "string", "description": "Raw shell script content to check" },
          "shell": { "type": "string", "description": "Shell type to check", "enum": ["bash", "sh", "dash", "ksh", "ash"] },
          "check_sourced": { "type": "boolean", "description": "Enable checks for sourced files" },
          "enable_all": { "type": "boolean", "description": "Enable all optional checks" },
          "exclude": { "type": "string", "description": "Comma-separated list of warning codes to exclude" },
          "severity": { "type": "string", "description": "Minimum severity to report", "enum": ["error", "warning", "info", "style"] }
        }
      }
    },
    {
      "name": "shellcheck_info",
      "description": "Get information about the ShellCheck version and server capabilities",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
  ]
}

Quick Install

# Run via uvx from PyPI
uvx --from mcp-shellcheck shellcheck-mcp-server

# Run via uvx from GitHub release
uvx --from https://github.com/Ev3lynx727/mcp-shellcheck/releases/download/v0.1.3/mcp_shellcheck-0.1.3-py3-none-any.whl shellcheck-mcp-server

# One-liner install (install.sh)
curl -fsSL https://raw.githubusercontent.com/Ev3lynx727/mcp-shellcheck/main/install.sh | sh

# Install from PyPI
pip install mcp-shellcheck

# Clone and dev install
git clone https://github.com/Ev3lynx727/mcp-shellcheck.git
cd mcp-shellcheck && pip install -e .

Features

  • File-based analysis: Check shell scripts by file path
  • Inline script checking: Analyze raw shell script content directly
  • Multiple shell support: bash, sh, dash, ksh, ash
  • Configurable checks: Exclude specific warnings, set severity levels
  • Structured output: JSON-formatted results for easy parsing
  • OpenCode integration: Ready to use with OpenCode agents
  • Production-ready: Async, tested, validated, logged

Requirements

Installing ShellCheck

Recommended (always latest):

pip install shellcheck-py

The shellcheck-py package provides a pre-built shellcheck v0.11.0 binary on your PATH with no system dependencies.

System package managers (may ship older versions):

# Ubuntu/Debian
sudo apt-get install shellcheck

# macOS
brew install shellcheck

# Fedora/RHEL
sudo dnf install ShellCheck

# Arch Linux
sudo pacman -S shellcheck

Tools

shellcheck

Run ShellCheck on a shell script to find bugs, stylistic issues, and potential errors.

Parameters:

Parameter Type Required Description
file_path string No* Path to the shell script file
script_content string No* Raw shell script content
shell string No Shell type: bash, sh, dash, ksh, ash (default: bash)
check_sourced boolean No Enable checks for sourced files (default: false)
enable_all boolean No Enable all optional checks (default: false)
exclude string No Comma-separated codes to exclude (e.g., "SC1090,SC2148")
include string No Comma-separated codes to include (e.g., "SC2086,SC2164")
severity string No Minimum severity: error, warning, info, style

*Either file_path or script_content must be provided.

Common error codes:

Code Description Severity
SC1090 Can't follow non-constant source info
SC2086 Double quote to prevent globbing warning
SC2164 Use cd with || exit warning
SC2006 Use $(...) instead of legacy backticks style

shellcheck_info

Get ShellCheck version and server capabilities.

Parameters: None

Configuration

OpenCode

{
  "mcp": {
    "shellcheck": {
      "type": "local",
      "command": [
        "uv",
        "run",
        "--with", "mcp",
        "python3",
        "/path/to/mcp-shellcheck/shellcheck_mcp_server.py"
      ],
      "enabled": true,
      "timeout": 60000
    }
  }
}

OpenCode (uvx from GitHub release)

{
  "mcp": {
    "shellcheck": {
      "type": "local",
      "command": [
        "uvx",
        "--from", "https://github.com/Ev3lynx727/mcp-shellcheck/releases/download/v0.1.3/mcp_shellcheck-0.1.3-py3-none-any.whl",
        "shellcheck-mcp-server"
      ],
      "enabled": true,
      "timeout": 60000
    }
  }
}

Claude Desktop

{
  "mcpServers": {
    "shellcheck": {
      "command": "python3",
      "args": ["/path/to/mcp-shellcheck/shellcheck_mcp_server.py"]
    }
  }
}

Cursor

{
  "mcpServers": {
    "shellcheck": {
      "command": "uvx",
      "args": ["shellcheck-mcp-server"]
    }
  }
}

VS Code (Copilot)

Add to .vscode/mcp.json:

{
  "servers": {
    "shellcheck": {
      "command": "python3",
      "args": ["/path/to/mcp-shellcheck/shellcheck_mcp_server.py"]
    }
  }
}

Examples

Check a File

// Input
{ "file_path": "/path/to/deploy.sh" }

// Output
{
  "success": false,
  "message": "Found 3 issue(s)",
  "results": [
    {
      "line": 15,
      "column": 10,
      "code": "SC2086",
      "message": "Double quote to prevent globbing",
      "severity": "warning"
    }
  ],
  "exit_code": 1
}

Check Script Content

// Input
{ "script_content": "#!/bin/bash\ncat `ls *.txt`", "shell": "bash" }

Exclude Specific Warnings

{ "file_path": "/path/to/script.sh", "exclude": "SC1090,SC2148" }

Filter by Severity

{ "file_path": "/path/to/script.sh", "severity": "error" }

Troubleshooting

Problem Solution
ShellCheck not found Install via pip install shellcheck-py or system package manager
MCP package not installed pip install mcp
Server not connecting Verify shellcheck --version, test with python3 shellcheck_mcp_server.py
Timeout errors Increase timeout: "timeout": 120000 in MCP config

Development

pip install -e ".[dev]"
pytest
ruff check .

See CHANGELOG.md for release history and ARCHITECTURE.md for design docs.

License

MIT

Metadata

Release files for mcp-shellcheck 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-shellcheck 0.2.0
File Size Uploaded
mcp_shellcheck-0.2.0.tar.gz 14.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-shellcheck 0.2.0
File Interpreter ABI Platform
mcp_shellcheck-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.8 kB

Release files / mcp_shellcheck-0.2.0.tar.gz

Download URL mcp_shellcheck-0.2.0.tar.gz
Size 14.6 kB
Tags Source
SHA-256 checksum
How to use checksums
64102f24a83dfaf0a68b3a7e1d29ac292c2c81512ea578a42b53190cee55907d
BLAKE2b-256 checksum
How to use checksums
6316fd17501284c98df048faee73a476fcb9ae23b6f2dd018c9a1c908d10c2de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / mcp_shellcheck-0.2.0-py3-none-any.whl

Download URL mcp_shellcheck-0.2.0-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b34c7a6373c5b793dca9331b01481a250a38525f0addf066a1e956175d876178
BLAKE2b-256 checksum
How to use checksums
0c69a17920c4e003ca41b1d2482e0b9a722041345ec26f819be9de7cea092285
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page