[project] name = "mcp-audits" version = "2.8.0" description = "MCP Permission Auditor — scan, enumerate, and risk-score all locally configured MCP servers" readme = "README.md" license = "MIT" license-files = ["LICENSE"] authors = [ { name = "Saagar Patel" } ] keywords = [ "mcp", "model-context-protocol", "security", "audit", "ai-safety", "claude-code", "permission-audit", "agent-security", "prompt-injection", "sarif", ] requires-python = ">=3.11" classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Security", "Topic :: Software Development :: Libraries :: Application Frameworks", ] dependencies = [ "click>=8.3.3,<9.0", "rich>=15.0.0", "anyio>=4.0", "json5>=0.10", "mcp>=2.0,<3.0", "cryptography>=50.0.0,<51.0", "pydantic>=2.0", "pyyaml>=6.0", ] [project.optional-dependencies] watch = ["watchfiles>=1.1.1"] llm = ["anthropic>=0.40"] [project.urls] Homepage = "https://github.com/saagpatel/MCPAudit" Repository = "https://github.com/saagpatel/MCPAudit" Issues = "https://github.com/saagpatel/MCPAudit/issues" [project.scripts] mcp-audit = "mcp_audit.cli:main" proof-before-action = "mcp_audit.proof_cli:main" # Registry alias: a console script named == the PyPI package (mcp-audits), so the # MCP server launches via `uvx mcp-audits serve` (the MCP Registry runs a pypi/stdio # server as `uvx `, and uvx resolves to a same-named executable). mcp-audits = "mcp_audit.cli:main" [build-system] requires = ["uv_build>=0.11.2,<0.13.0"] build-backend = "mcp_audit_build_backend" backend-path = ["."] [tool.uv.build-backend] module-name = "mcp_audit" source-include = ["mcp_audit_build_backend.py"] [tool.mypy] strict = true python_version = "3.11" [[tool.mypy.overrides]] module = ["uv_build"] ignore_missing_imports = true [tool.ruff] target-version = "py311" line-length = 110 [tool.ruff.lint] select = ["B", "E", "F", "I", "UP"] [tool.pytest.ini_options] anyio_mode = "auto" testpaths = ["tests"] [dependency-groups] dev = [ "mypy>=1.19.1", "pytest>=9.0.2", "pytest-anyio>=0.0.0", "pytest-cov>=6.0", "ruff>=0.15.8", "types-pyyaml>=6.0.12.20260408", ]