Skip to main content
Glama
jacgood
by jacgood
README.md
# WebDNA MCP Server

A state-of-the-art Model Context Protocol (MCP) server for WebDNA documentation. This server scrapes and indexes WebDNA documentation from [docs.webdna.us](https://docs.webdna.us/) and provides API endpoints for searching and retrieving documentation.

## Features

- **High-Performance Documentation Access**: Efficient caching and retrieval of WebDNA documentation
- **Advanced Search Capabilities**: Full-text search with relevance scoring for WebDNA instructions
- **Dual Protocol Support**: Works with both stdin/stdout (for AI assistants) and HTTP interfaces
- **Comprehensive MCP Tools**: Rich set of tools for exploring the WebDNA framework
- **Robust Error Handling**: Graceful error recovery and detailed logging
- **Optimized Database Layer**: Efficient Supabase PostgreSQL queries with caching
- **Containerized Deployment**: Docker support with health checks and security best practices
- **Low Resource Utilization**: Optimized for cloud deployment with minimal resource footprint
## Getting Started

### Prerequisites

- Docker and Docker Compose
- Supabase account and project

### Installation with Docker (Recommended)

1. Clone the repository
2. Run the setup script:
```bash
chmod +x setup-docker.sh
./setup-docker.sh
```
3. The MCP server will be available at http://localhost:3002

### Manual Installation

If you prefer not to use Docker, you can install and run the server directly:

1. Install dependencies:
```bash
npm install
```

2. Apply the database migrations to your Supabase project:
```bash
# Use the Supabase SQL Editor to run the SQL in migrations/01_initial_setup.sql
```

3. Run the documentation scraper to populate the database:
```bash
npm run scrape
```

4. Start the server:
```bash
# For HTTP server
npm run start:mcp-http

# For stdin/stdout server (for AI assistants)
npm run start:mcp
```

## Using with Continue.dev

To use this MCP server with Continue.dev, add the following to your `.continue/config.yaml` file:

```yaml
mcpServers:
  - name: WebDNA Documentation
    command: curl
    args:
      - -X
      - POST
      - http://localhost:3002/mcp/invoke_tool
      - -H
      - 'Content-Type: application/json'
      - -d
      - |
        {"tool": "$0", "params": $1}
    env:
      SUPABASE_URL: "your-supabase-url"
      SUPABASE_KEY: "your-supabase-key"
```

## MCP Tools

This server provides the following enhanced MCP tools:

### search-webdna-docs

Searches WebDNA documentation with advanced filtering and relevance scoring.
**Parameters:**
- `query` (string, required): Search query for WebDNA documentation
- `category` (string, optional): Filter results by category
- `limit` (number, optional): Maximum results to return (default: 20)
- `offset` (number, optional): Offset for pagination (default: 0)

### get-webdna-doc

Retrieves detailed documentation for a specific WebDNA instruction or context.

**Parameters:**
- `id` (string, required): ID, WebDNA ID, or instruction name
### get-webdna-categories

Retrieves all WebDNA documentation categories with counts of instructions.

### get-random-webdna-docs

Retrieves random WebDNA documentation entries for exploration.

**Parameters:**
- `limit` (number, optional): Number of entries to return (default: 5)

### get-webdna-stats

Retrieves statistics about the WebDNA documentation database.
## API Endpoints

- `GET /health`: Health check endpoint
- `GET /`: API documentation and information
- `POST /mcp/init`: Initialize the MCP server
- `POST /mcp/list_tools`: Get available tools
- `POST /mcp/invoke_tool`: Invoke a tool with parameters

## Docker Commands

- `npm run docker:build`: Build the Docker container
- `npm run docker:run`: Run the container
- `npm run docker:up`: Start with Docker Compose
- `npm run docker:down`: Stop the container
- `npm run docker:logs`: View container logs

## License

ISC

## Acknowledgments

- [WebDNA Documentation](https://docs.webdna.us/)
- [Model Context Protocol (MCP)](https://github.com/anthropics/model-context-protocol)
- [Supabase](https://supabase.com/) for database infrastructure