A collection of MCP (Model Context Protocol) servers including Tmux MCP and Metabase MCP, providing tools for system command execution and database querying
The Metabase MCP server provides 6 well-named tools with clear descriptions and structured schemas. Tool naming consistently follows verb_noun patterns (get_schema, list_collections, run_query, save_question). All tools have non-empty descriptions (79-155 chars, within baseline 34-392 range). Input parameters include type definitions and descriptions. However, there are significant gaps: (1) No output schemas are documented, the descriptions state WHAT tools do but not what fields/structure they return, forcing LLMs to guess response structure; (2) Parameter descriptions lack guidance on dependencies (e.g., save_question has both database_id and collection_id but no clarification on mutual exclusivity or defaults); (3) Error handling is not visible in tool definitions, descriptions don't explain recovery paths or failure modes; (4) The raw_api tool is a security concern, offering unrestricted API access without visible safeguards. Overall, this is a competent but incomplete implementation that would benefit from output schema documentation and better error guidance.
Get database schema information. Lists all tables if no table names provided, or lists fields for specific tables
List all available collections in Metabase
List all databases configured in Metabase
Make a raw API call to Metabase (for debugging/testing)
Run a native SQL query against a database
Save a SQL query as a question (card) in Metabase
No output schemas documented. Tool descriptions explain intent but not return structure. LLMs cannot infer what fields (id, name, created_at, etc.) response objects contain, forcing trial-and-error on chained calls.
raw_api tool exposes unrestricted HTTP access (GET, POST, PUT, DELETE) without visible rate limiting, permission checks, or input sanitization. No guidance on safe vs. unsafe paths or error handling for failed API calls.
Parameter descriptions lack dependency documentation. save_question accepts both database_id and collection_id but doesn't clarify: are both required? Is collection_id truly optional (personal collection assumed)? What if both are missing?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 0 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
No visible error handling guidance in tool definitions. Descriptions don't explain failure modes (e.g., 'database not found', 'invalid SQL', 'permission denied') or recovery paths. LLMs cannot distinguish retryable vs. user-fixable errors.
run_query output_file parameter accepts arbitrary file paths with no validation. No guidance on path restrictions (e.g., sandbox directory, relative vs. absolute paths). Potential for path traversal if not validated in implementation.
get_schema table_names parameter description says 'comma-separated' but doesn't clarify behavior for missing tables (error vs. partial results) or case sensitivity.