Security analysis server that scans code for vulnerabilities using Bandit, Semgrep, and custom security rules. Provides tools for analyzing Python, Go, Java, and other languages for command injection, SQL injection, hardcoded credentials, weak cryptography, and other security issues.
This server has 2 tools with significant definition quality gaps. Tool 1 (add) is a trivial demo tool with minimal security relevance. Tool 2 (scan_python_code_with_bandit) has a reasonable description but lacks critical parameter constraints, output schema documentation, and comprehensive error guidance. Neither tool has documented output schemas or structured response formats. Parameter descriptions are minimal. Error messages in the code are generic. No input validation or constraints on the 'code' parameter (e.g., max length, encoding checks). The server does not follow production MCP patterns for tool composition, output structuring, or error recovery.
A simple tool to add two numbers and test the basic connection.
Analyzes a snippet of Python code for common security vulnerabilities using the Bandit scanner. Returns a summary of the findings.
No documented output schema for scan_python_code_with_bandit. The tool returns unstructured text strings (e.g., '[OK] Bandit scan complete...' or '[!] Bandit found N issues'). LLMs cannot parse structured fields or chain results to other tools without a declared output schema.
The 'code' parameter for scan_python_code_with_bandit has no constraints (max length, encoding, format). Agents could pass gigabytes of text, causing timeouts or resource exhaustion. Missing validation enables abuse.
Error messages in scan_python_code_with_bandit are generic and don't guide recovery. 'Error: Bandit exited with code 2' or 'Error: Could not parse Bandit output' give the LLM no next step. Should specify 'Invalid Python syntax detected in code snippet, correct syntax and retry' or 'Bandit scanner not installed, this is a server configuration issue'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2026-07-28+ | v2 |
No description for the return value of scan_python_code_with_bandit. The tool description does not specify whether it returns plain text, JSON, or structured issues. LLMs cannot plan downstream tool calls without knowing the output format.
The 'add' tool is a trivial demo with no security relevance in a Capstone Security Server. It inflates the tool count and suggests incomplete implementation. The server should focus on security analysis tools only.
No error classification or retry guidance. The code returns strings like 'Error: Bandit command not found' but doesn't indicate whether the error is retryable, user-fixable, or fatal. An LLM cannot decide whether to retry, ask the user, or give up.
Missing pagination or result limits for scan_python_code_with_bandit. If Bandit returns many issues, the tool concatenates them all into a single string response. No pagination, no count, no way to limit results. For a large codebase, this could return thousands of lines of text, exhausting context windows.