io.github.wenRou21/sqlbot-mcp-proxy
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@io.github.wenRou21/sqlbot-mcp-proxyshow me sales by region for last quarter"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SQLBot MCP Proxy
MCP server proxy for SQLBot. It exposes SQLBot datasource discovery, table metadata, natural-language Text-to-SQL questions, and local fallback report generation as MCP tools.
Requirements
Docker
A running SQLBot service
SQLBot API keys
Related MCP server: TalkDB
Recommended Codex Config
Users do not need to download this repository manually. Add this single MCP server to Codex config and replace the SQLBot URL and keys:
[mcp_servers.sqlbot]
command = "docker"
args = [
"run",
"--rm",
"-i",
"-e",
"SQLBOT_MCP_PROXY_BASE_URL",
"-e",
"SQLBOT_MCP_PROXY_ACCESS_KEY",
"-e",
"SQLBOT_MCP_PROXY_SECRET_KEY",
"ghcr.io/wenrou21/sqlbot-mcp-proxy:0.1.0"
]
enabled = true
startup_timeout_sec = 120
[mcp_servers.sqlbot.env]
SQLBOT_MCP_PROXY_BASE_URL = "http://183.196.108.32:18088"
SQLBOT_MCP_PROXY_ACCESS_KEY = "<YOUR_SQLBOT_ACCESS_KEY>"
SQLBOT_MCP_PROXY_SECRET_KEY = "<YOUR_SQLBOT_SECRET_KEY>"Then restart Codex completely.
If SQLBot is reachable through another public or LAN address, replace SQLBOT_MCP_PROXY_BASE_URL with that address, for example https://sqlbot.example.com or http://192.168.1.10:18088.
Prompt Template
Please configure SQLBot MCP for Codex.
MCP image:
ghcr.io/wenrou21/sqlbot-mcp-proxy:0.1.0
My SQLBot URL:
http://183.196.108.32:18088
My SQLBot access key:
<YOUR_SQLBOT_ACCESS_KEY>
My SQLBot secret key:
<YOUR_SQLBOT_SECRET_KEY>
Add this MCP to Codex config:
- MCP name: sqlbot
- command: docker
- args: ["run", "--rm", "-i", "-e", "SQLBOT_MCP_PROXY_BASE_URL", "-e", "SQLBOT_MCP_PROXY_ACCESS_KEY", "-e", "SQLBOT_MCP_PROXY_SECRET_KEY", "ghcr.io/wenrou21/sqlbot-mcp-proxy:0.1.0"]
- startup_timeout_sec: 120
- SQLBOT_MCP_PROXY_BASE_URL: use the SQLBot URL above
- SQLBOT_MCP_PROXY_ACCESS_KEY: use the access key above
- SQLBOT_MCP_PROXY_SECRET_KEY: use the secret key above
After configuration, remind me to fully restart Codex.
After restart:
- Check available datasources with sqlbot_list_datasources.
- Use sqlbot_list_tables and sqlbot_describe_table before asking data questions.
- Use sqlbot_ask_data for Text-to-SQL questions.
- Use sqlbot_generate_report when I ask for an analysis report or chart.Quick Docker Test
You can test the image outside Codex:
docker run --rm -i \
-e SQLBOT_MCP_PROXY_BASE_URL=http://183.196.108.32:18088 \
-e SQLBOT_MCP_PROXY_ACCESS_KEY=your-access-key \
-e SQLBOT_MCP_PROXY_SECRET_KEY=your-secret-key \
ghcr.io/wenrou21/sqlbot-mcp-proxy:0.1.0Tools
sqlbot_list_datasources: list SQLBot datasources visible to the configured API keysqlbot_list_tables: list checked SQLBot metadata tables for a datasourcesqlbot_describe_table: describe checked fields for a SQLBot metadata tablesqlbot_ask_data: ask SQLBot a natural-language data questionsqlbot_generate_report: generate an analysis report and chart, with a local SVG fallback
Environment Variables
Name | Default | Description |
|
| SQLBot service base URL |
| empty | SQLBot API access key |
| empty | SQLBot API secret key |
| empty | Fallback access key name |
| empty | Fallback secret key name |
|
| Container used for fallback key lookup |
|
| HTTP mode host |
|
| HTTP mode port |
|
| HTTP mode JSON-RPC path |
|
| SQLBot HTTP request timeout |
|
| Directory for generated fallback SVG reports |
Advanced HTTP Mode
Most MCP clients should use stdio. For clients that can send JSON-RPC over HTTP, start:
docker run --rm -p 8787:8787 \
-e SQLBOT_MCP_PROXY_BASE_URL=http://183.196.108.32:18088 \
-e SQLBOT_MCP_PROXY_ACCESS_KEY=your-access-key \
-e SQLBOT_MCP_PROXY_SECRET_KEY=your-secret-key \
-e SQLBOT_MCP_PROXY_HTTP_HOST=0.0.0.0 \
ghcr.io/wenrou21/sqlbot-mcp-proxy:0.1.0 --httpHealth check:
curl http://127.0.0.1:8787/healthPublish
Confirm package metadata in
package.json.Publish an OCI image:
docker build -t ghcr.io/wenrou21/sqlbot-mcp-proxy:0.1.0 .
docker push ghcr.io/wenrou21/sqlbot-mcp-proxy:0.1.0Publish MCP Registry metadata:
mcp-publisher login github
mcp-publisher publishThe mcpName in package.json must exactly match name in server.json.
Available Tools
5 toolssqlbot_ask_dataC
Ask SQLBot a natural-language data question through the existing Text-to-SQL pipeline.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | zh-CN | |
| question | Yes | Natural-language data question. | |
| access_key | No | Optional SQLBot API access key. Defaults to proxy env. | |
| return_img | No | ||
| secret_key | No | Optional SQLBot API secret key. Defaults to proxy env. | |
| finish_step | No | generate_chart | |
| datasource_id | No | Optional SQLBot datasource id. | |
| include_analysis | No | ||
| data_preview_limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. The description only states the tool processes natural-language questions via a pipeline. It does not reveal whether the tool modifies data, authentication requirements (though parameters hint at keys), rate limits, or side effects. The finish_step parameter suggests multi-step behavior, but this is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence) and front-loaded with the core purpose. However, given the tool's complexity (9 parameters), it could be slightly longer to include essential context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is incomplete for an agent to fully understand the tool's capabilities. It does not mention the output format, the meaning of the finish_step enum, or how the access_key/secret_key are used. Given no output schema and low schema coverage, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 44% (4 of 9 parameters have descriptions). The description adds no information about parameters, failing to compensate for the low coverage. Parameters like lang, return_img, finish_step, include_analysis, and data_preview_limit are not explained, leaving an agent without guidance on their purpose or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool allows asking a natural-language data question via a Text-to-SQL pipeline. It uses a specific verb ('Ask') and resource ('SQLBot'), and the mention of 'existing Text-to-SQL pipeline' distinguishes it from sibling tools like sqlbot_describe_table or sqlbot_list_datasources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios, prerequisites, or when not to use it. Sibling tools exist for specific tasks like describing tables or listing sources, but no comparison or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sqlbot_describe_tableC
Describe checked fields for a SQLBot metadata table.
| Name | Required | Description | Default |
|---|---|---|---|
| access_key | No | Optional SQLBot API access key. Defaults to proxy env. | |
| secret_key | No | Optional SQLBot API secret key. Defaults to proxy env. | |
| table_name | Yes | Table name to describe. | |
| datasource_id | Yes | SQLBot datasource id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It does not mention that the tool is read-only, the nature of the result, or any side effects. The only clue is 'Describe checked fields', which is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it does not make efficient use of that brevity. It could be restructured to include more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 4 parameters (2 required), the description lacks critical context about what the tool returns. The phrase 'Describe checked fields' is ambiguous; it does not specify the format or extent of information provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all 4 parameters (100% coverage), so the description adds no additional meaning. The tool name and description already imply the role of `table_name` and `datasource_id`, but the optional `access_key` and `secret_key` are not elaborated beyond their schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Describe') and resource ('checked fields for a SQLBot metadata table'), which distinguishes it from sibling tools like sqlbot_list_tables. However, it is somewhat vague as it does not clarify what 'checked fields' means or how it differs from listing tables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as sqlbot_ask_data or sqlbot_generate_report. The description does not indicate prerequisites or non-applicable scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sqlbot_generate_reportA
Generate a SQLBot data report with analysis, conclusion, and chart. Falls back to a local SVG chart/report when SQLBot chart generation fails or times out.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | zh-CN | |
| question | Yes | Natural-language report request. | |
| access_key | No | Optional SQLBot API access key. Defaults to proxy env. | |
| secret_key | No | Optional SQLBot API secret key. Defaults to proxy env. | |
| datasource_id | No | Optional SQLBot datasource id. | |
| chart_timeout_ms | No | ||
| data_preview_limit | No | ||
| prefer_sqlbot_chart | No | Try SQLBot native chart generation before returning the local fallback report. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description effectively discloses key behavior: generation with analysis, conclusion, chart, and automatic fallback to local SVG on failure or timeout. This goes beyond the schema, but could mention required auth or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two sentences that cover purpose, output, and fallback behavior without any redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 params, no output schema), the description explains the report content (analysis, conclusion, chart) and fallback mechanism, but lacks specifics on output format or how the report is returned (e.g., file, data). This leaves some ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 63% of parameters with descriptions, meeting the baseline. The tool description adds no additional parameter-level information, so it neither improves nor detracts from the schema's clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a SQLBot data report with analysis, conclusion, and chart, distinguishing it from sibling tools that focus on querying, describing, or listing. The fallback behavior is also mentioned, adding specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the purpose is clear, there is no explicit guidance on when to use this tool versus alternatives like sqlbot_ask_data. The description implies usage for report generation but does not provide when-not or contextual triggers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sqlbot_list_datasourcesB
List SQLBot datasources available to the configured SQLBot API key.
| Name | Required | Description | Default |
|---|---|---|---|
| oid | No | Optional workspace id for admin users. | |
| access_key | No | Optional SQLBot API access key. Defaults to proxy env. | |
| secret_key | No | Optional SQLBot API secret key. Defaults to proxy env. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavior beyond listing, such as read-only nature, authentication requirements, or pagination; it does not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no extraneous information, achieving maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should clarify return values or structure; it does not, leaving the agent without expected output context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions; the tool description adds no additional meaning beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists SQLBot datasources and specifies the API key context, distinguishing it from sibling tools that deal with tables, queries, and reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives like sqlbot_list_tables or sqlbot_describe_table; usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sqlbot_list_tablesC
List checked SQLBot metadata tables for a datasource.
| Name | Required | Description | Default |
|---|---|---|---|
| access_key | No | Optional SQLBot API access key. Defaults to proxy env. | |
| secret_key | No | Optional SQLBot API secret key. Defaults to proxy env. | |
| datasource_id | Yes | SQLBot datasource id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the basic function, omitting details like read-only nature, pagination, error handling, or side effects. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it could be expanded slightly to include more behavioral context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should provide more context about return values, expected behavior, and potential errors. It currently lacks this, making it incomplete for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are fully described in the input schema (100% coverage), so the description adds no additional meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists metadata tables for a datasource, using a specific verb and resource. It distinguishes from sibling tools like sqlbot_list_datasources (lists datasources) and sqlbot_describe_table (describes a specific table). However, the term 'checked' is slightly ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as sqlbot_list_datasources or sqlbot_describe_table. The description lacks any context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.1.0- First observed
sqlbot_ask_data - First observed
sqlbot_describe_table - First observed
sqlbot_generate_report - First observed
sqlbot_list_datasources - First observed
sqlbot_list_tables
TDQS
All five tools have clearly distinct purposes: asking questions, describing table fields, generating reports, listing datasources, and listing tables. No overlap in functionality.
All tool names follow a consistent 'sqlbot_verb_noun' pattern using snake_case, e.g., ask_data, describe_table, generate_report. The naming is uniform and predictable.
With 5 tools, the set is well-scoped for a proxy that provides core SQLBot functionalities: data querying, metadata exploration, and reporting. Not too few or too many.
The tool surface covers essential operations: datasource and table discovery, natural language querying, table description, and report generation. Minor gap: no tool for modifying resources (e.g., updating datasources), but the set is comprehensive for typical use cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Ask data questions in natural language. Get SQL, insights, and charts from your databases.
Ask questions in plain language, get answers from your business database. No SQL required.
1Ask business questions in plain English. Get instant answers from your database, no SQL needed.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables natural language database querying through GPT-powered SQL generation and execution with metadata-driven validation and intermediate representation.-
- AlicenseNot gradedqualityCmaintenanceEnables natural language querying of databases with multi-turn conversations, auto-generated charts, and proactive monitoring via scheduled queries and alerts.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to query databases using natural language, with automatic schema discovery and SQL compilation.6,0023,158Apache 2.0

Bollard MCPofficial
AlicenseAqualityBmaintenanceEnables safe, AI-driven database interactions with schema discovery, intent validation, and session memory, supporting multiple databases.142AGPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wenRou21/sqlbot-mcp-proxy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server