Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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

CapabilityDetails
tools
{}
prompts
{}
resources
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
guideA

Read this first, once per session: the Rowbase knowledge base — recommended workflow, safety rules (read-only model, one statement per call), the TOON output format and SQL dialect notes. Use it before any other tool; it needs no connection. Returns a markdown document.

connectionsA

List the user's saved database connections exposed to MCP. Call this first to get the exact connection names every other tool requires. Returns a table connections[N]{name,driver,env,mode,database,tunnel} — mode is the EFFECTIVE read-only/read-write mode for MCP; env 'prod' means be extra careful — plus writes_enabled_in_mcp. No pagination: all exposed connections are returned.

databasesA

List the databases on a connection's server and which one is current. Use it when a connection has no database selected, or to work in another database (pass database to later calls); to list tables inside a database use tables instead. Returns current, databases[N] (user databases first) and system[N]. SQLite returns an empty list (one file = one database). On failure returns isError with 'error: ' (e.g. refused statement, unknown table, SQL error).

tablesA

List all tables and views of a connection/database with approximate row counts — the entry point for browsing. Use search_schema instead when you look for a concept (e.g. 'invoice') across table AND column names, and describe once you know the table. Returns tables[N]{name,kind,approx_rows} (kind = table|view; approx_rows is an estimate, may be null; use count for exact numbers). Returns every match, no pagination. On failure returns isError with 'error: ' (e.g. refused statement, unknown table, SQL error).

describeA

Show the structure of one known table: columns with type, nullability, key, default, foreign-key target (fk = table.column — use it to write JOINs) and comment, plus indexes and the tables that reference it. Use it before writing SQL against a table; use search_schema if you don't know the table name yet. Returns table, sql_name (properly quoted name for SQL), columns[N]{name,type,nullable,key,default,fk,comment}, indexes[N]{name,unique,columns} and referenced_by[N]{table,column,ref_column}. On failure returns isError with 'error: ' (e.g. refused statement, unknown table, SQL error).

search_schemaA

Find tables and columns whose name contains a keyword (case-insensitive substring; on MySQL also column comments). Use it when you know WHAT you are looking for but not WHERE it is stored; use tables instead to browse everything and describe for one known table. Returns matches[N]{table,column,type}, one row per matching column (a table-name match lists all its columns), capped at 500 rows (truncated: true when cut). On failure returns isError with 'error: ' (e.g. refused statement, unknown table, SQL error).

sampleA

Peek at a few real rows of one table (SELECT * … LIMIT n, in storage order, no sorting) to see what the data looks like before writing a query. Use query instead for specific columns, joins, sorting or aggregates, and count when you only need a number. Returns rows[N]{all columns} plus rows, truncated (true = more rows exist) and ms. Default 20 rows, capped by the server's max rows setting. On failure returns isError with 'error: ' (e.g. refused statement, unknown table, SQL error).

countA

Return the exact number of rows in a table, optionally filtered — use it to size a result before fetching it or to answer 'how many' questions. Use query instead for grouped counts (GROUP BY) or counts over joins. Returns a single line: count: N. May be slow on very large unindexed filters (timeout from settings). On failure returns isError with 'error: ' (e.g. refused statement, unknown table, SQL error).

queryA

Run exactly ONE SQL statement — the general tool for answering questions: specific columns, JOINs (follow fk from describe), filters, sorting, GROUP BY. Read-only connections accept only SELECT/SHOW/DESCRIBE/EXPLAIN/WITH/VALUES/TABLE (+PRAGMA on SQLite); multiple statements are refused. Prefer sample/count for simple peeks and totals, explain for performance. A LIMIT is added automatically when missing. Returns rows[N]{columns} plus rows, truncated (true = more rows exist — narrow with WHERE or raise limit) and ms; write statements (only if writes are enabled) return affected instead. On failure returns isError with 'error: ' (e.g. refused statement, unknown table, SQL error).

explainA

Show how the database will execute a SELECT (its query plan) to diagnose slow queries or check index use — use it instead of query when the question is about performance, not data. With analyze=true the statement is actually executed to report real timings (can be slow on big tables). Returns the plan as rows plus a hint: MySQL type=ALL or PostgreSQL 'Seq Scan' means a full table scan (consider an index or a narrower WHERE). SQLite uses EXPLAIN QUERY PLAN. On failure returns isError with 'error: ' (e.g. refused statement, unknown table, SQL error).

find_refA

Find which table holds a UUID value as its primary key — for schemas that store references as UUIDs without foreign keys (1C-style Ref keys, columns like SenderAddress or Owner_Ref). Use it when describe shows no fk for a column whose values are UUIDs; use describe fk + query instead when real foreign keys exist. Searches tables whose single-column primary key can hold a UUID: the hint table first, then tables named like the column (SenderAddress → …Addresses), then all of them. Returns matches[N]{table,pk,label} (label = Description/Name/Number/Code of the row) and found_by, or searched_tables when nothing matched. On failure returns isError with 'error: ' (e.g. refused statement, unknown table, SQL error).

Prompts

Interactive templates invoked by user choice

NameDescription
setupSet up this assistant to work with Rowbase: read the guide, list connections and create a reusable skill.
exploreExplore a connection and summarize its data model.

Resources

Contextual data attached and managed by the client

NameDescription
Rowbase guideKnowledge base: workflow, safety, output format, tools.
Connections

TDQS

A4.7/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct step or resource in the database exploration workflow: guide, connections, databases, tables, search_schema, describe, find_ref, sample, count, query, and explain. Descriptions explicitly cross-reference alternatives (e.g., use search_schema when you don't know the table, use query instead of sample for joins), leaving no meaningful overlap.

Naming Consistency4/5

All names are lowercase snake_case with no casing or separator inconsistencies. However, the set mixes noun-style list tools (connections, databases, tables) with verb-style action tools (describe, sample, query), so it is not a strict verb_noun pattern throughout.

Tool Count5/5

Eleven tools is well within the ideal range and each tool earns its place: discovery, schema inspection, sampling, counting, querying, performance analysis, and reference resolution. No tool feels redundant or excessive for a read-only database assistant.

Completeness5/5

The surface covers the full read-only lifecycle from connection discovery through schema browsing, targeted search, structure inspection, sampling, exact counts, general SQL, query plans, and UUID reference resolution. There are no obvious dead ends for the stated purpose, and write operations are intentionally limited by the read-only model.

Maintenance

ActivityMaintained
ResponsivenessNo issues