The TigerData MCP tools provide useful database management functionality but have several areas for improvement in naming consistency, parameter documentation, and descriptions.
- Inconsistent naming conventions: Mixed use of camelCase (
getGuide) and snake_case (service_list,semantic_search) creates unpredictability - Verb consistency: Some tools use action verbs (
create,list) while others use descriptive terms (showinstead ofget)
- WHY: Consistency reduces cognitive load and makes the API more predictable
- Standardize on snake_case throughout:
get_guide,semantic_search_postgres_docs Use consistent verbs:✅ COMPLETEDservice_getinstead ofservice_showfor alignment with REST conventions
Issue: Parameter prompt_name is misleading - these are guides, not prompts
Recommendation: Rename to guide_name or guide_id
WHY: Clear naming prevents confusion about what values are expected
Critical Issues:
- Parameter type confusion:
versionmarked as required but allows null - Type mismatch: PostgreSQL versions like "17.2" need string type, not integer Recommendations:
- Make
versionandlimittruly optional by removing from required array - Change
versionto string type WHY: Prevents runtime errors and failed API calls
Strengths: Excellent use of enums, clear defaults, good examples
✅ IMPLEMENTED: Renamed timeout parameter to timeout_minutes for clarity
Result: Parameter name now explicitly indicates units, preventing confusion.
Missing: No password strength requirements documented Recommendation: Add validation rules (min length, character requirements) to description WHY: Prevents failed attempts due to weak passwords
service_create: Clear billing warnings, thorough wait/timeout explanationgetGuide: Upfront listing of all available guides
-
semanticSearchPostgresDocs- Missing: Return format, number of results, relevance scoring
- Recommendation: "Searches PostgreSQL docs using semantic similarity. Returns up to N results with content, metadata, and distance scores (lower = more relevant)"
- WHY: Users need to understand what they'll receive
-
service_list- Unclear: How is "current project" determined?
- Recommendation: Specify if from auth context or parameter
- WHY: Ambiguity about data scope causes confusion
- All tested tools executed successfully
- Response times were reasonable
- JSON responses well-structured
-
Guide Content Length: The
setup_hypertableguide returns 15,000+ characters- Impact: Can consume significant LLM context
- Recommendation: Break into smaller focused guides or add length warnings
- WHY: Prevents context exhaustion in conversations
-
Missing Error Documentation: No information about possible error codes or formats
- Recommendation: Add common error scenarios to each tool description
- WHY: Enables proper error handling
- No service deletion: Can create but not remove services
- No pause/resume: Response shows "paused" field but no control mechanism
- No SQL execution: Can't run queries against created services
- No connection string helper: Users must construct connection strings manually
WHY THESE MATTER: Complete lifecycle management requires all CRUD operations
- Input:
"cpu_memory": "0.5 CPU/2GB"(combined string) - Output:
{"cpu": "0.5 cores", "memory": "2 GB"}(separate fields) - Impact: Requires different parsing logic for input vs output
- Recommendation: Use consistent format or document the rationale
- WHY: Reduces implementation complexity
- Fix parameter type issues in
semanticSearchPostgresDocs - Standardize naming conventions across all tools
service_get✅ COMPLETED
- Add service deletion capability
Rename timeout to timeout_minutes✅ COMPLETED
- Document return formats in all descriptions
- Add error code documentation
- Break up large guide content
- Add filtering to
service_list - Include connection string formatting helper
- Add dry-run options for destructive operations
- Excellent enum usage for constrained choices
- Good use of JSON Schema for validation
- Clear billing warnings where appropriate
- Well-structured responses with consistent formatting
- Semantic search provides relevant, useful results
- Good use of defaults to simplify common cases
- Predictability: Consistent naming reduces learning curve
- Reliability: Proper typing prevents runtime failures
- Usability: Clear documentation reduces trial-and-error
- Completeness: Full CRUD operations enable real workflows
- Efficiency: Appropriate content sizing preserves LLM context