schemabrain
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANTHROPIC_API_KEY | No | Optional. Used only for LLM column enrichment at index time (`schemabrain index`). The MCP server (`serve`) makes no LLM calls and never needs it. | |
| SCHEMABRAIN_DATABASE_URL | No | PostgreSQL connection string for local/self-hosted use (the var the setup wizard and .mcp.json use). The Glama-hosted image serves a bundled offline demo store, so a real DB is not required to run the checks. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| find_relevant_tablesA | Use this when the user describes tables semantically (e.g. 'the table with customer orders', 'where we store payments'). Returns ranked hits with cosine scores plus the matched column and its LLM description so you see WHY each table surfaced. Use |
| find_relevant_entitiesA | Use this when the user describes a business object (e.g. 'our customers', 'revenue data', 'product catalog'). Returns ranked entities — domain-named bindings to physical tables — so the agent stays in business terms. Use |
| describe_tableA | Use this when the user names a specific table by qualified name (e.g. 'show me public.orders'). Returns columns with types, nullability, primary-key flags, LLM descriptions, and outgoing foreign keys. Use |
| describe_columnA | Use this when you need to drill into one column by its three-part qualified name (e.g. |
| get_example_queriesA | Use this when you need real example SQL for an indexed table to learn how it's actually used. Each item carries the SQL text, observation count, source, and PII categories touched. Returns |
| suggest_joinsA | Use this when you already know two or more tables and need the join paths between them. Pass qualified names ( |
| list_entitiesA | Use this when the user asks what semantic entities are defined (e.g. 'what entities do we have?', 'show me the entity list'). Returns every confirmed entity with its bound table, identity column, and provenance. Use |
| list_metricsA | Use this when the user asks any ranking, top-N, most/highest/lowest, or aggregation question (e.g. 'who bought the most', 'top 5 by revenue', 'rank customers', 'find users with the highest X', 'what's the total / average / count') — returns every declared metric with its anchor entity, aggregation, and time-bucketing so you can pick the right metric before calling |
| list_joinsA | Use this when the user asks what canonical joins are defined (e.g. 'how are these entities connected?'). Returns each confirmed join with the entity pair it connects and provenance. Use |
| describe_entityA | Use this when the user names a specific entity (e.g. 'show me the customer entity', 'what's in the order entity'). Returns the entity's bound table, identity column, description, and full column list with PII sensitivity. Use |
| resolve_joinA | Use this when you have two entity names and need the canonical SQL join between them. Returns a ready-to-paste JOIN clause with column mapping. Use |
| get_metricA | Use this when you have a metric name + want ranked/sliced rows (top-N, most/highest/lowest). Returns rows + parameterised SQL. Compiler chains multi-hop joins automatically (anchor |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Each tool has a clearly distinct purpose: describing at column/table/entity level, finding semantically, listing, getting metrics, resolving joins. No overlapping functionality; differences are explicitly noted in descriptions.
All tools follow a consistent verb_noun pattern (e.g., describe_column, list_metrics, suggest_joins). No mixing of conventions like camelCase or different verb styles.
12 tools is well-scoped for a schema analysis server, covering discovery, description, joining, and metric computation. Not excessively many nor too few.
The tool surface covers the core domain of schema exploration and metric queries comprehensively. Minor missing features like listing all tables at once, but overall no critical gaps for its purpose.