Skip to main content
Glama
README.md
# MCP Server for Agent8

A server implementing the Model Context Protocol (MCP) to support Agent8 SDK development. Developed with TypeScript and pnpm, supporting stdio and SSE transports.

## Features

This Agent8 MCP Server implements the following MCP specification capabilities:

### Prompts

- **System Prompt for Agent8 SDK**: Provides optimized guidelines for Agent8 SDK development through the `system-prompt-for-agent8-sdk` prompt template.

### Tools

- **Code Examples Search**: Retrieves relevant Agent8 game development code examples from a vector database using the `search_code_examples` tool.

## Installation

```bash
# Install dependencies
pnpm install

# Build
pnpm build
```

### Using Docker

You can run this application using Docker in several ways:

#### Option 1: Pull from GitHub Container Registry (Recommended)

```bash
# Pull the latest image
docker pull ghcr.io/planetarium/mcp-agent8:latest

# Run the container
docker run -p 3333:3333 --env-file .env ghcr.io/planetarium/mcp-agent8:latest
```

#### Option 2: Build Locally

```bash
# Build the Docker image
docker build -t agent8-mcp-server .

# Run the container with environment variables
docker run -p 3333:3333 --env-file .env agent8-mcp-server
```

#### Docker Environment Configuration

There are three ways to configure environment variables when running with Docker:

1. Using `--env-file` (Recommended):

   ```bash
   # Create and configure your .env file first
   cp .env.example .env
   nano .env

   # Run with .env file
   docker run -p 3000:3000 --env-file .env agent8-mcp-server
   ```

2. Using individual `-e` flags:

   ```bash
   docker run -p 3000:3000 \
     -e SUPABASE_URL=your_supabase_url \
     -e SUPABASE_SERVICE_ROLE_KEY=your_service_role_key \
     -e OPENAI_API_KEY=your_openai_api_key \
     -e MCP_TRANSPORT=sse \
     -e PORT=3000 \
     -e LOG_LEVEL=info \
     agent8-mcp-server
   ```

3. Using Docker Compose (for development/production setup):

   The project includes a pre-configured `docker-compose.yml` file with:

   - Automatic port mapping from .env configuration
   - Environment variables loading
   - Volume mounting for data persistence
   - Container auto-restart policy
   - Health check configuration

   To run the server:

   ```bash
   docker compose up
   ```

   To run in detached mode:

   ```bash
   docker compose up -d
   ```

**Required Environment Variables:**

- `SUPABASE_URL`: Supabase URL for database connection
- `SUPABASE_SERVICE_ROLE_KEY`: Supabase service role key for authentication
- `OPENAI_API_KEY`: OpenAI API key for AI functionality

The Dockerfile uses a multi-stage build process to create a minimal production image:

- Uses Node.js 20 Alpine as the base image for smaller size
- Separates build and runtime dependencies
- Only includes necessary files in the final image
- Exposes port 3000 by default

## Usage

### Command Line Options

```bash
# View help
pnpm start --help

# View version information
pnpm start --version
```

Supported options:

- `--debug`: Enable debug mode
- `--transport <type>`: Transport type (stdio or sse), default: stdio
- `--port <number>`: Port to use for SSE transport, default: 3000
- `--log-destination <dest>`: Log destination (stdout, stderr, file, none)
- `--log-file <path>`: Path to log file (when log-destination is file)
- `--log-level <level>`: Log level (debug, info, warn, error), default: info
- `--env-file <path>`: Path to .env file

### Using Environment Variables

The server supports configuration via environment variables, which can be set directly or via a `.env` file.

1. Create a `.env` file in the project root (see `.env.example` for reference):

```bash
# Copy the example file
cp .env.example .env

# Edit the .env file with your settings
nano .env
```

2. Run the server (it will automatically load the `.env` file):

```bash
pnpm start
```

3. Or specify a custom path to the `.env` file:

```bash
pnpm start --env-file=/path/to/custom/.env
```

#### Configuration Priority

The server uses the following priority order when determining configuration values:

1. Command line arguments (highest priority)
2. Environment variables (from `.env` file or system environment)
3. Default values (lowest priority)

This allows you to set baseline configuration in your `.env` file while overriding specific settings via command line arguments when needed.

#### Supported Environment Variables

| Variable                  | Description                                     | Default                                                  |
| ------------------------- | ----------------------------------------------- | -------------------------------------------------------- |
| MCP_TRANSPORT             | Transport type (stdio or sse)                   | stdio                                                    |
| PORT                      | Port to use for SSE transport                   | 3000                                                     |
| LOG_LEVEL                 | Log level (debug, info, warn, error)            | info                                                     |
| LOG_DESTINATION           | Log destination (stdout, stderr, file, none)    | stderr (for stdio transport), stdout (for sse transport) |
| LOG_FILE                  | Path to log file (when LOG_DESTINATION is file) | (none)                                                   |
| DEBUG                     | Enable debug mode (true/false)                  | false                                                    |
| SUPABASE_URL              | Supabase URL for database connection            | (required)                                               |
| SUPABASE_SERVICE_ROLE_KEY | Supabase service role key for authentication    | (required)                                               |
| OPENAI_API_KEY            | OpenAI API key for AI functionality             | (required)                                               |

### Using Stdio Transport

```bash
# Build and run
pnpm build
pnpm start --transport=stdio
```

### Using SSE Transport

```bash
# Build and run (default port: 3000)
pnpm build
pnpm start --transport=sse --port=3000
```

### Debug Mode

```bash
# Run in debug mode
pnpm start --debug
```

## Available Prompts

- `systemprompt-agent8-sdk`

## Client Integration

### Using with Claude Desktop

1. Add the following to Claude Desktop configuration file (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "Agent8": {
      "command": "npx",
      "args": ["--yes", "agent8-mcp-server"]
    }
  }
}
```

1. Restart Claude Desktop

### Adding New Prompts

Add new prompts to the `registerSamplePrompts` method in the `src/prompts/provider.ts` file.

## License

MIT

TDQS

A4.4/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is no possibility of ambiguity or misselection. The single tool has a clearly defined purpose of searching for code examples.

Naming Consistency5/5

The tool name 'search_code_examples' follows the conventional snake_case verb_noun pattern. With only one tool, there are no naming inconsistencies to assess.

Tool Count4/5

A single tool feels slightly thin, but the server is purpose-built for one specific task: searching code examples. This narrow scope justifies having only one tool.

Completeness5/5

The tool fully covers the stated domain of retrieving relevant game development code examples. There are no obvious missing operations for this narrow purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues