Skip to main content
Glama
systeminit

System Initiative

Official
by systeminit
README.md
# System Initiative MCP Server

A Model Context Protocol (MCP) server that provides Claude Code with direct
access to System Initiative's API for managing infrastructure components, change
sets, schemas, and actions.

## Development Setup

### Environment Variables

Required:

```bash
export SI_API_TOKEN="your-token-here"
export SI_BASE_URL="http://localhost:5380"  # Defaults to production if not overridden
```

Optional analytics configuration:

```bash
export POSTHOG_API_KEY="dev-posthog-key"  # Override if you want to use the Dev Project to test tracking changes
```

### Testing with MCP Inspector

The MCP Inspector provides a web interface for testing tools and debugging:

```bash
# Start the inspector
deno task inspector
```

This opens a browser interface where you can:

- Test individual tools with parameters
- Inspect tool schemas and validate responses
- Debug authentication and connection issues
- View real-time tool execution

### Testing with Claude Code

Configure Claude Code to use your local server (without running in a container):

```bash
# From the repository root
claude mcp add si-mcp-server-dev -- deno run --allow-env --allow-net bin/si-mcp-server/main.ts stdio

# Or from within si-mcp-server directory  
claude mcp add si-mcp-server-dev -- deno run --allow-env --allow-net main.ts stdio

# Verify it's working
claude mcp list
```

## Available Tasks

| Task           | Command                  | Description                          |
| -------------- | ------------------------ | ------------------------------------ |
| `dev`          | `deno task dev`          | Run with auto-reload for development |
| `inspector`    | `deno task inspector`    | Start MCP Inspector for testing      |
| `build`        | `deno task build`        | Compile to standalone binary         |
| `docker:build` | `deno task docker:build` | Build Docker image                   |
| `docker:run`   | `deno task docker:run`   | Run Docker container                 |

## Adding New Tools

1. Create tool file in `src/tools/`
2. Import required dependencies and `withAnalytics` from `commonBehavior.ts`
3. Define Zod schemas for input/output validation
4. Wrap handler with `withAnalytics(toolName, async () => { ... })`
5. Export tool registration function
6. Register in `src/server.ts`