Skip to content

[Feature Request] AI chatbot component with MCP database access #1262

@avinashkurup

Description

@avinashkurup

What are you building with SQLPage?
I'm building internal data dashboards and admin tools where business users need to ask natural-language questions about the underlying data — things like "what were the top products last month?" or "why did revenue drop on Tuesday?" SQLPage is a perfect fit for the UI layer, but users still need a conversational interface to explore data without writing SQL themselves.

What is your problem?
There's no native way to embed an interactive AI chatbot into a SQLPage app. Users who want a natural-language interface over their data have to leave the SQLPage paradigm entirely and build a custom frontend. This breaks the core promise of SQLPage — that you can build a full, useful web app with only SQL.

What are you currently doing?
Workarounds currently require:

  • Writing a custom Typescript node widget outside of SQLPage's component system
  • Setting up a separate backend proxy to forward messages to an AI API (to avoid exposing API keys in the browser)
  • Manually managing conversation history in Typescript
  • Wiring it all together with the fetch component or raw <script> tags in a shell component

This is brittle, hard to maintain, and out of reach for the non-developer audience SQLPage is designed for.

Describe the solution you'd like
An official external component — sqlpage-chat — modeled after sqlpage-spreadsheet, that renders a full chat UI and connects to any OpenAI-compatible HTTP API. Usage would be fully declarative via SQL:

SELECT 'sqlpage-chat' AS component,
       'https://api.openai.com/v1/chat/completions' AS api_url,
       'Bearer ' || $OPENAI_API_KEY AS authorization_header,
       'gpt-4o' AS model,
       'You are a helpful assistant for this sales dashboard.' AS system_prompt,
       'Ask me anything about your data...' AS placeholder;

For richer use cases, it would be nice to support MCP (Model Context Protocol) so the AI can autonomously query the live database — rather than requiring the developer to pre-inject static context into the system prompt:

SELECT 'sqlpage-chat' AS component,
       'https://api.anthropic.com/v1/messages' AS api_url,
       'Bearer ' || $ANTHROPIC_API_KEY AS authorization_header,
       'claude-sonnet-4-5' AS model,
       'postgresql://user:pass@localhost/mydb' AS mcp_database_url,
       'You are a SQL analyst. Use your tools to answer questions accurately.' AS system_prompt;

Key capabilities: streaming responses (stdio support initially), conversation history, error handling, and a clean chat bubble UI that inherits the SQLPage/Tabler theme.

Describe alternatives you've considered

  • Injecting DB context into the system prompt via SQL subquery — works for small datasets but breaks on large schemas, gives the model stale data, and bloats the prompt on every turn.
  • Using the fetch component — not interactive; it fires once on page load and doesn't support streaming or back-and-forth conversation.
  • Embedding an iframe — fully disconnects from SQLPage's auth, theme, and data layer; defeats the purpose.
  • Building a standalone chatbot app separately — loses the tight integration with the SQLPage data layer and forces users to maintain two separate apps.

Additional context

  • This would live in its own repo (sqlpage/sqlpage-chat) as a CDN-hosted JS/TS bundle, following the sqlpage-spreadsheet pattern.
  • The component targets any OpenAI-compatible endpoint, making it provider-agnostic (OpenAI, Anthropic, Ollama, LM Studio, etc.).
  • MCP is an open standard by Anthropic (https://modelcontextprotocol.io) now widely supported across AI providers and tools — it's the cleanest way to give the model live, structured access to the SQLPage database without custom tooling.
  • API calls default to client-side for simplicity; a server-side proxy mode could be added for environments where API keys must stay server-side.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions