Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Quack is a continuous integration server built as an MCP server that automates code analysis and testing for Python code. It provides tools for linting and static type analysis of Python code.
git clone https://github.com/yourusername/quack.git
cd quackpip install -r requirements.txtThe Quack server requires the following dependencies:
mcp[cli]
pylint
mypy
pytest
pytest-asyncioTo start the Quack server with stdio transport (default):
python3 quack.pyFor debug logging:
python3 quack.py --debugTo start the server with SSE (Server-Sent Events) transport for HTTP communication:
python3 quack.py --sse --host=0.0.0.0 --port=8000Alternatively, you can use the provided shell script:
# For stdio transport (default)
./run_quack.sh
# For SSE transport
./run_quack.sh --sse --host=0.0.0.0 --port=8000The Quack server can be run in a Docker container, which automatically uses SSE transport:
# Build the Docker image
docker build -t quack-mcp-server .
# Run the container, exposing port 8000
docker run -p 8000:8000 quack-mcp-serverWhen running in a Docker container, the server automatically starts in SSE mode on port 8000.
Quack exposes the following MCP tools:
submit_code: Submit code for both linting and static analysis.submit_code_for_linting: Submit code for linting only.submit_code_for_static_analysis: Submit code for static analysis only.get_job_results: Get the results of a submitted job.list_jobs: List all jobs and their status.Quack has two distinct testing concepts:
tests/ directory verify that the Quack server, job manager, and processors are working correctly. When you add a new processor, you should add tests here to verify your processor works.tests/
├── server/ # Tests OF the server functionality
│ ├── test_server_direct.py # Direct testing of job manager
│ ├── test_server_auto.py # Auto-starts and stops the server
│ └── test_server_client.py # Tests the MCP client interface
├── processors/ # Tests OF the processors
│ ├── test_lint_processor.py # Tests for lint processor
│ └── test_static_analysis_processor.py # Tests for static analysis
└── examples/ # Example submissions for testing BY the server
└── example_code.py # Contains intentional issues for testingWhen implementing a new processor (e.g., a test coverage processor):
quack/processors/tests/processors/tests/examples/ to test what your processor analyzesThe repository includes a comprehensive test suite in the tests directory. All tests are managed using pytest.
python -m pytest tests/ --asyncio-mode=autopython -m pytest tests/server/test_server_direct.py -v --asyncio-mode=autopython -m pytest tests/processors/test_lint_processor.py -vpython -m pytest tests/ -v --asyncio-mode=autopython -m pytest tests/ -x --asyncio-mode=auto#### Automatic Server Management
Many of the tests automatically start and stop the Quack server as needed, so you don't need to manually manage the server process during testing. This is handled by pytest fixtures in the conftest.py file.
The server tests in tests/server/test_server_auto.py demonstrate how to automatically start and stop the server for testing. These tests verify that:
Quack can be integrated with Cline to provide code analysis capabilities directly through the Cline interface.
The Quack server can be configured in Cline's MCP settings file at:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json#### For Local Stdio Mode (Default)
{
"mcpServers": {
"quack": {
"command": "python3",
"args": ["/path/to/your/quack.py", "--debug"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}#### For Docker Container with SSE
When running the server in a Docker container, configure Cline to connect via HTTP/SSE:
{
"mcpServers": {
"quack": {
"url": "http://localhost:8000/sse",
"disabled": false,
"autoApprove": []
}
}
}Note: Replace localhost:8000 with the appropriate host and port if you've mapped the Docker container to a different port.
Once configured, you can use Cline to analyze Python code using the Quack server. Here are some example prompts:
Analyze this Python code for linting issues:
[paste your code here] Check this Python code for type errors:
[paste your code here] What's wrong with this Python function?
[paste your function here]You can use the following sample code with intentional issues to test the Quack server:
# Linting issues
unused_var = 42 # Unused variable
x = 10 # Single-letter variable name
# Type issues
def add(a: int, b: int) -> int:
return a + b
# Function with both linting and type issues
def calculate_average(numbers): # Missing type annotations
total = 0
for num in numbers:
total += num
unused_result = total * 2 # Unused variable
return total / len(numbers)
# Call with wrong type
result = add("5", 10) # Type error: str + intIf Cline doesn't seem to be using the Quack server:
#### Docker-Specific Issues
When running in Docker:
docker run -p 8000:8000 quack-mcp-server docker logs <container_id> curl http://localhost:8000This should return a 404 response (since there's no root endpoint), but confirms the server is running.
Quack is built using the Model Context Protocol (MCP) and consists of the following components:
To add a new processor:
quack/processors directory.process method to perform the analysis.tests/processors/.#### Example: Adding a Test Coverage Processor
quack/processors/coverage.py with your processor implementationquack/server.pytests/processors/test_coverage_processor.pytests/examples/Run the server with the --debug flag to enable detailed logging:
python3 quack.py --debugLogs are written to both the console and logs/quack.log.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.