Skip to main content
Glama

Swaggbot

License: MIT GitHub Stars

Transform Swagger/OpenAPI docs into conversational interfaces. Self-hosted, local-first, AI-powered API exploration.


Quick Start

# Docker (recommended)
git clone https://github.com/techbloom-ai/swaggbot.git
cd swaggbot && cp .env.example .env
# Generate SESSION_SECRET and add LLM API keys
docker-compose up -d

Open http://localhost:3003


Related MCP server: MCPHy

What is Swaggbot?

Swaggbot converts any Swagger/OpenAPI documented API into a conversational interface. Built for developers who want to:

  • Explore APIs naturally β€” Chat instead of reading raw JSON

  • Automate workflows β€” Multi-step operations with data extraction

  • Stay in control β€” Self-hosted, data stays local

  • Integrate anywhere β€” Web UI, MCP server, or direct API


Features

  • πŸ€– Natural Language API Interaction β€” "List all users" β†’ GET /users

  • πŸ”„ Workflow Automation β€” Chain multiple API calls with dependency resolution

  • πŸ”Œ MCP Server β€” Use with Claude Desktop, Cursor, Windsurf

  • 🏠 Self-Hosted β€” Your data, your infrastructure

  • πŸ” Session Management β€” Encrypted auth tokens, per-session isolation

  • 🌐 Multi-Provider LLM β€” Moonshot, OpenAI, Anthropic, Ollama

  • πŸ“Š Array Filtering β€” [name=John].id syntax for data extraction

  • πŸ›‘οΈ Security β€” CSP headers, rate limiting, encrypted storage


Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Web UI  β”‚  β”‚  MCP    β”‚  β”‚  API    β”‚
β”‚ Next.js β”‚  β”‚ Server  β”‚  β”‚ Clients β”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β–Ό
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚  Chat Service   β”‚  Intent Classification
          β”‚  + LLM Provider β”‚  β†’ Curl Generation β†’ Execution
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β–Ό             β–Ό             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚SQLite  β”‚   β”‚Workflow β”‚   β”‚ Target   β”‚
β”‚(Local) β”‚   β”‚ Engine  β”‚   β”‚   API    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Installation

Prerequisites

  • Node.js 18+ or Docker

  • LLM API key (Moonshot, OpenAI, Anthropic, or Ollama)

# 1. Clone and configure
git clone https://github.com/techbloom-ai/swaggbot.git
cd swaggbot
cp .env.example .env

# 2. Set SESSION_SECRET (required for auth)
# Linux/macOS:
export SESSION_SECRET=$(openssl rand -base64 32)
# Or add to .env: SESSION_SECRET=your_random_secret_here

# 3. Add your LLM API key to .env
# MOONSHOT_API_KEY=your_key_here

# 4. Start
docker-compose up -d

Database migrations run automatically on first startup.

Local Development

git clone https://github.com/techbloom-ai/swaggbot.git
cd swaggbot
pnpm install
cp .env.example .env.local
# Edit .env.local with SESSION_SECRET and LLM API keys
pnpm db:migrate
pnpm dev

Configuration

Variable

Required

Default

Description

SESSION_SECRET

Yes

β€”

Random secret for session encryption (min 32 chars)

MOONSHOT_API_KEY

Yes*

β€”

Moonshot AI API key

OPENAI_API_KEY

Yes*

β€”

OpenAI API key

ANTHROPIC_API_KEY

Yes*

β€”

Anthropic API key

OLLAMA_BASE_URL

Yes*

β€”

Ollama server URL

LLM_PROVIDER

No

moonshot

moonshot | openai | anthropic | ollama

DATABASE_URL

No

file:./data/swaggbot.db

SQLite database path

NEXT_PUBLIC_APP_URL

No

http://localhost:3003

App base URL

*At least one LLM provider required

Generate SESSION_SECRET

# Linux/macOS
openssl rand -base64 32

# Or any random string (min 32 characters)

API Reference

REST API

All endpoints require authentication via session cookie.

Endpoint

Method

Description

/api/auth/login

POST

Authenticate and create session

/api/session

POST

Create API session from Swagger URL

/api/session

GET

List all sessions (paginated)

/api/chat

POST

Send message to API

/api/workflow

POST

Create multi-step workflow

/api/workflow/:id/execute

POST

Execute workflow

MCP Server

{
  "mcpServers": {
    "swaggbot": {
      "command": "docker",
      "args": ["compose", "run", "--rm", "swaggbot-mcp"],
      "env": {
        "SESSION_SECRET": "your_secret",
        "MOONSHOT_API_KEY": "your_key"
      }
    }
  }
}

Usage Examples

Web UI

  1. Navigate to login page

  2. Create a session with your Swagger URL

  3. Start chatting:

    "Create a user named John"
    "List all pets with status available"
    "Execute the login workflow"

API

# Authenticate
curl -X POST http://localhost:3003/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"password": "your_password"}' \
  -c cookies.txt

# Chat with API
curl -X POST http://localhost:3003/api/chat \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{"sessionId": "...", "message": "List all users"}'

Technology Stack

Component

Technology

Framework

Next.js 16 (App Router)

Language

TypeScript 5

Database

SQLite (libSQL/Turso)

ORM

Drizzle ORM

UI

shadcn/ui + TailwindCSS 4

State

Zustand

LLM SDK

Vercel AI SDK patterns

MCP

Model Context Protocol SDK

Testing

Vitest

Container

Docker + Docker Compose


Project Structure

swaggbot/
β”œβ”€β”€ app/                 # Next.js App Router
β”‚   β”œβ”€β”€ api/            # API routes
β”‚   β”œβ”€β”€ sessions/       # Session UI
β”‚   └── settings/       # Settings page
β”œβ”€β”€ components/         # shadcn/ui components
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ db/            # Database schema & migrations
β”‚   β”œβ”€β”€ llm/           # LLM provider implementations
β”‚   β”œβ”€β”€ services/      # Business logic
β”‚   β”œβ”€β”€ auth/          # Session & encryption
β”‚   └── prompts/       # LLM prompt management
β”œβ”€β”€ scripts/           # MCP server & entrypoint
└── data/              # SQLite storage (Docker volume)

Security

  • Local-first: All data stored locally in SQLite

  • Encrypted tokens: Auth tokens encrypted with AES-256-GCM

  • Session-based auth: Password-protected access

  • CSP headers: Content Security Policy protection

  • Rate limiting: Per-endpoint limits configurable

  • No telemetry: Zero analytics or tracking


License

MIT Β© TechBloom

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Automatically generates MCP servers from OpenAPI/Swagger specifications, enabling users to interact with any REST API through natural language with flexible endpoint filtering and authentication support.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Transform REST APIs into intelligent, chat-driven MCP servers with zero code changes. Simply point it at your Swagger/OpenAPI specification to get natural language querying capabilities powered by AI.
    11
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Automatically converts Swagger/OpenAPI specifications into MCP servers, enabling AI agents to interact with any REST API through natural language by exposing endpoints as AI-friendly tools.
    3
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Transforms OpenAPI specs into an MCP server, enabling dynamic API interaction through natural language with automatic authentication and endpoint discovery.
    131
    MIT