Skip to main content
Glama
README.md
# MCPist

MCP (Model Context Protocol) gateway service — Connect AI assistants to external tools through a single endpoint.

## Usage

Add to your MCP client configuration (Claude Code, Cursor, etc.):

```json
{
  "mcpServers": {
    "mcpist": {
      "url": "https://mcp.mcpist.app/v1/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-key>"
      }
    }
  }
}
```

Get your API key at [mcpist.app](https://mcpist.app).

## Supported Modules

Notion, GitHub, Jira, Confluence, Google Workspace (Sheets, Docs, Drive, Calendar, Tasks), Todoist, TickTick, Microsoft Todo, Asana, Trello, Airtable, Dropbox, PostgreSQL, Grafana, and more.

## Architecture

```
Console (Next.js / Vercel)
    ↓
Worker (Cloudflare Workers) — Auth + Routing
    ↓
Server (Go / Render) — MCP Handler + REST API
    ↓
PostgreSQL
```

### Authentication

1. **User auth**: Clerk (JWT) via Console
2. **API keys**: Ed25519 JWT issued by Server
3. **Gateway auth**: Worker signs short-lived JWT for Server-to-Server trust

## Tech Stack

| Layer | Technology |
|-------|------------|
| Frontend | Next.js 16, React 19, Tailwind CSS, Radix UI |
| API Gateway | Cloudflare Workers, Hono, TypeScript |
| Backend | Go 1.24, GORM |
| Database | PostgreSQL |
| Auth | Clerk, Ed25519 JWT |
| Billing | Stripe |
| Observability | Grafana Loki |
| Monorepo | pnpm workspaces, Turborepo |

---

## Development

### Prerequisites

- Node.js 20+
- pnpm 9
- Go 1.24+
- Docker Desktop

### Setup

```bash
pnpm install
cp .env.example .env.local   # Edit with your values
pnpm env:sync
```

### Run

```bash
pnpm dev
```

Starts PostgreSQL (Docker), Console, Server, and Worker concurrently.

| Service | URL | Description |
|---------|-----|-------------|
| PostgreSQL | localhost:57432 | Database (Docker) |
| Console | http://localhost:3000 | Web UI |
| Server | http://localhost:8089 | MCP Server |
| Worker | http://localhost:8787 | API Gateway |

```bash
pnpm db:down    # Stop PostgreSQL container
```

### Scripts

| Command | Description |
|---------|-------------|
| `pnpm dev` | Start DB + all apps |
| `pnpm db:up` | Start PostgreSQL only |
| `pnpm db:down` | Stop PostgreSQL |
| `pnpm dev:console` | Console only |
| `pnpm dev:server` | Go Server only (Air hot reload) |
| `pnpm dev:worker` | Worker only (Wrangler) |
| `pnpm build` | Build all apps (Turbo) |
| `pnpm lint` | Lint all apps |
| `pnpm test` | Run tests |
| `pnpm env:sync` | Distribute .env.local to each app |
| `pnpm erd:build` | Generate ER diagram from schema |

### Project Structure

```
mcpist/
├── apps/
│   ├── console/        # Web UI
│   ├── server/         # MCP Server + REST API
│   └── worker/         # API Gateway
├── database/
│   └── migrations/     # PostgreSQL schema
├── docs/               # Specifications & design docs
├── scripts/            # Dev utilities
└── .github/workflows/  # CI
```

### Deployment

| App | Platform | Domain |
|-----|----------|--------|
| Console | Vercel | mcpist.app |
| Worker | Cloudflare Workers | mcp.mcpist.app |
| Server | Render | mcpist.onrender.com |
| Database | Neon | — |

### API Specification

OpenAPI 3.1 spec: `GET /openapi.json`
Source: `apps/worker/src/openapi.yaml`