Skip to main content

mcp-risk-linter

mcp-risk-linter statically scans a Model Context Protocol server repository for capability, permission, secret-handling, and disclosure risks before human review or installation.

At a Glance

Job Find review-worthy MCP tool and repository risks with deterministic local rules.
Built for MCP maintainers, agent platform teams, security reviewers, and CI owners.
Differentiator Scans source, JSON metadata, and docs without starting the MCP server.
Produces Discovered tool inventory plus Markdown, JSON, or SARIF findings with remediation.

Install

python -m pip install "mcp-risk-linter==0.1.6"

Verified Quickstart

Run from a source checkout:

mcp-risk-linter scan examples/safe_server \
  --format json \
  --out /tmp/mcp-risk-report.json \
  --fail-on high

The bundled safe fixture discovers two tools and returns no findings. The risky_stdio_server and broad_filesystem_server fixtures intentionally exercise findings and can return exit code 1 at the default high threshold.

What It Checks

  • Python, JavaScript, and TypeScript source patterns for shell execution, broad filesystem access, outbound network calls, and secret-like environment use;
  • JSON and source patterns that expose tool names and descriptions;
  • vague tool descriptions and mutating tools without side-effect language;
  • missing security documentation and missing authentication or permission boundary language;
  • justified inline suppressions using mcp-risk-linter: ignore RULE -- justification.

The rules are regex and metadata heuristics. A finding is a review prompt, not proof of a vulnerability or exploit.

GitHub Action

The published Action should be pinned to its immutable release commit:

- uses: auraoneai/mcp-risk-linter@42a7ef839a7b2bd111fd83f70c6657e831ae0ee6 # v0.1.6
  with:
    path: .
    fail-on: high
    format: markdown
    output: mcp-risk-report.md

See docs/github-action.md for the complete workflow, permissions, job-summary behavior, and optional pull request comments.

Runtime, Data, and Network Boundary

  • The CLI recursively reads local source, JSON, and documentation files while skipping common VCS, virtual environment, dependency, build, and cache directories.
  • The scanner does not execute server code or make network requests.
  • Reports include repository paths, source line numbers, snippets, tool names, and descriptions. Review reports before posting them outside the repository.
  • The composite Action may contact the configured Python package index while installing build requirements. With comment: "true", it also calls the GitHub API to create or update a pull request comment.

Limitations

  • Findings come from static rules and text heuristics. They are review prompts, not proof of exploitability, vulnerability, or compliance failure.
  • The scanner cannot see runtime-only permissions, dynamic dispatch, or network behavior that is not inspectable in checked-in source and docs.

Compatibility

The published auraone-agent-studio-open CLI declares mcp-risk-linter>=0.1.1 as a runtime dependency and exposes the same scanner through agentstudio risk-scan.

This project is not affiliated with Anthropic, the Model Context Protocol project, OpenAI, or a registry operator. It is not a penetration test, CVE scanner, exploit detector, or official compliance program.

Publication Status

Verified on 2026-07-13:

  • PyPI: mcp-risk-linter==0.1.6
  • GitHub Action release: v0.1.6
  • The Action and PyPI package share release 0.1.6; the Action installs the package source from its checked-out immutable commit.
  • No external adoption or security-assurance claim is made.

Next Action

Scan one MCP server before installation, review every high-severity finding with the maintainer, and add only narrowly justified suppressions.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_risk_linter-0.1.6.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_risk_linter-0.1.6-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file mcp_risk_linter-0.1.6.tar.gz.

File metadata

  • Download URL: mcp_risk_linter-0.1.6.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for mcp_risk_linter-0.1.6.tar.gz
Algorithm Hash digest
SHA256 8c16dc45def031a453ce5c8776bf23b850da696abb9487b42c78fcd9a5f55ad0
MD5 bf66586a4e2f17bccfb9f1e3cfe0dadc
BLAKE2b-256 f46dae06aa0158b7af96d624bde645c4d938d945d0d07879e753dab0def60980

See more details on using hashes here.

File details

Details for the file mcp_risk_linter-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_risk_linter-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 ef420bb125cc3782d8a5ed8644b1480bd1dd77ce68b2f9962c191c2285719400
MD5 d8f799be4618518dede0dd4fe2ebf578
BLAKE2b-256 7846f8490c97d76fcb9e7eaf63253dfa345547f7633f2700c925ab6c865a2803

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page