{"id":"bonnard-data-bonnard","name":"bonnard","homepage":"https://bonnard.dev","repo_url":"https://github.com/bonnard-data/bonnard","category":"ai-ml","subcategories":[],"tags":["ai-ml","agentic-analytics","semantic-layer","mcp-server","structured-output","text-to-sql","data-modeling","self-hosted","typescript"],"what_it_does":"Bonnard is a self-hosted, Docker-deployable semantic layer for AI agents. It provides an MCP server so agents can query governed metric definitions (cubes/views) consistently. It includes a Cube engine for query execution, a CubeStore cache for pre-aggregation, an admin UI, and a deploy API/CLI flow to push schema updates without restarting containers. A /health endpoint is available for monitoring.","use_cases":["Agent-native analytics with a single governed semantic layer","Text-to-SQL / metrics-layer querying via MCP for LLM agents","Serving consistent metrics across multiple consumers (agents, apps, dashboards)","Pre-aggregation caching for faster analytical reads","Managing and deploying metric/model changes to a running semantic layer"],"not_for":["Run-it-and-forget-it fully managed SaaS analytics (this is self-hosted)","Low-latency OLTP transaction processing","Use cases that require fine-grained per-user authorization beyond bearer-token gating as described"],"best_when":"You want a controlled semantic layer for AI agents with repeatable metric definitions and you can operate a Docker stack (cube/cubestore/bonnard) against a supported warehouse.","avoid_when":"You cannot expose an authenticated MCP endpoint over HTTPS (or proxy) to agents, or you need detailed operational/SLA guarantees not evidenced in the provided docs.","alternatives":["Cube.js managed/self-hosted deployment without the Bonnard MCP layer","Other semantic/metrics layers for analytics (various vendor solutions)","Direct warehouse SQL access with agent guardrails (less consistent metrics governance)","dbt + metric definitions exposed via custom APIs"],"af_score":60.2,"security_score":55.0,"reliability_score":28.8,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T15:32:45.821885+00:00","interface":{"has_rest_api":true,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":"https://bonnard.example.com/mcp (as shown in README example; actual URL depends on deployment/reverse proxy)","has_sdk":true,"sdk_languages":["JavaScript","TypeScript"],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["Bearer token via Authorization: Bearer <token> for API and MCP endpoints (ADMIN_TOKEN)"],"oauth":false,"scopes":false,"notes":"Docs describe a single ADMIN_TOKEN (bearer) that gates API/MCP endpoints; /health remains open. No OAuth flow or fine-grained scopes are described."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"Self-hosted open-source (Apache-2.0). Costs are infrastructure-related (Docker/compute/warehouse). No pricing information in provided content."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":60.2,"security_score":55.0,"reliability_score":28.8,"mcp_server_quality":85.0,"documentation_accuracy":75.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":85.0,"rate_limit_clarity":10.0,"tls_enforcement":70.0,"auth_strength":65.0,"scope_granularity":20.0,"dependency_hygiene":45.0,"secret_handling":70.0,"security_notes":"Docs recommend protecting endpoints with ADMIN_TOKEN (bearer token) and show TLS termination via Caddy. /health remains open. No evidence of fine-grained scopes/permissions, and rate limiting/throttling controls are not described. Secret handling guidance beyond using .env is not detailed.","uptime_documented":30.0,"version_stability":35.0,"breaking_changes_history":20.0,"error_recovery":30.0,"idempotency_support":"false","idempotency_notes":null,"pagination_style":"none","retry_guidance_documented":false,"known_agent_gotchas":["Authentication is bearer-token based; agents need to send Authorization header for MCP/API calls.","The /health endpoint is intentionally unauthenticated; agents should not rely on it for authenticated operations.","Correct URL/route for MCP depends on your deployment (example shows /mcp behind a reverse proxy).","Rate limit behavior is not documented in the provided README; agents may need conservative request patterns."]}}