A collection of MCP servers for GitHub, PostgreSQL, and other services
This collection exhibits significant quality gaps across all six tools. Tool descriptions are present but minimal (10-40 chars), falling well below the 50-200 char baseline for LLM-optimized descriptions. Parameter descriptions are entirely absent, no tool documents what its parameters control or accept. Input schemas are visible but lack parameter-level descriptions, violating the pattern:tool-description requirement. Error handling is non-existent; tools return raw string representations of data structures rather than structured, actionable responses. No output schemas are documented. The github.py server conflates three distinct concerns (search, list, create) but naming is acceptable. The postgres.py server lacks any input validation or SQL injection protection despite accepting arbitrary SQL strings. Overall, this reads as a prototype rather than production-ready tooling.
Create a GitHub issue
Get table schema
List issues for a repo
List all tables in the database
Execute a SQL query (read-only)
Search GitHub repositories
All parameter descriptions are missing. LLMs cannot infer what 'query', 'repo', 'state', 'sql', or 'table' parameters control or accept. This violates pattern:tool-description and forces LLMs to guess valid inputs.
Tool descriptions are 10-40 characters, far below the 50-200 char baseline. 'Search GitHub repositories' and 'List issues for a repo' lack context on WHEN to use each tool vs alternatives, prerequisites, or what the LLM should expect in the response.
No output schemas documented. Tools return raw Python string representations (e.g., str([{...}])) instead of structured JSON. LLMs cannot parse or chain results reliably. Violates pattern:response-shaper.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
query tool accepts arbitrary SQL strings with no validation or parameterization. Vulnerable to SQL injection if an LLM is tricked into passing malicious input. Violates pattern:tool-gateway and pattern:secret-injection (database credentials in env var but no input sanitization).
No error handling or recovery guidance. Tools return 'Unknown tool' on unrecognized names but provide no actionable error messages for API failures, missing resources, or invalid inputs. Violates pattern:recovery-guide.