Skip to main content
Glama
README.md
# AIO MCP

One Platform. Every MCP.

[![CI](https://github.com/CRTYPUBG/aio-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/CRTYPUBG/aio-mcp/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Rust](https://img.shields.io/badge/rust-stable-orange.svg)](https://www.rust-lang.org)

Language:
- English (default): README.md
- Turkce: [README_TR.md](README_TR.md)

## Overview

AIO MCP is a unified control plane and runtime for the Model Context Protocol ecosystem.

Core modules:

- Engine
- Plugin Manager
- Configuration Manager
- Permission Manager
- API Gateway
- Railway-ready HTTP server

## Architecture (ASCII)

```text
+---------------------------------------------------------+
|                 Experience Layer                        |
|   Desktop App (Tauri) | Web Dashboard | CLI            |
+---------------------------------------------------------+
|                     API Layer                           |
|                REST /v1/*   |   WebSocket              |
+---------------------------------------------------------+
|               Core Services (Rust)                      |
| Engine | Plugin Manager | Config | Permission | Gateway |
+---------------------------------------------------------+
|                     Data Layer                          |
|                SQLite / PostgreSQL / Redis              |
+---------------------------------------------------------+
```

## Railway Deployment

AIO MCP runs as a pure HTTP API. A frontend is not required.

### 1) Environment variables

Add these in Railway Variables:

| Variable | Example | Notes |
|---|---|---|
| `AIO_API_KEYS` | `sk-your-secret-key` | Separate multiple keys with commas |
| `PORT` | auto | Provided by Railway |
| `RUST_LOG` | `aio_server=info` | Optional |

Generate a strong key:

```bash
openssl rand -hex 32
```

### 2) Deploy

```bash
railway login
railway link
railway up
```

## API Reference

All `/v1/*` endpoints require an API key.

Authentication:

```text
X-Api-Key: sk-your-key
# or
Authorization: Bearer sk-your-key
```

Public endpoints:

| Method | Path | Description |
|---|---|---|
| `GET` | `/` | Service info |
| `GET` | `/health` | Health check |

Protected endpoints:

| Method | Path | Description |
|---|---|---|
| `GET` | `/v1/plugins` | List plugins |
| `POST` | `/v1/plugins` | Register plugin |
| `GET` | `/v1/config/:scope/:key` | Get config |
| `PUT` | `/v1/config/:scope/:key` | Set config |
| `POST` | `/v1/permissions/request` | Request permission |
| `POST` | `/v1/permissions/grant` | Grant permission |
| `GET` | `/v1/permissions/check` | Check permission |
| `GET` | `/v1/services` | Core services |
| `GET` | `/v1/routes` | Route table |

Example:

```bash
curl -X POST https://your-app.up.railway.app/v1/plugins \
  -H "X-Api-Key: sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{"id":"official.github","version":"1.0.0"}'
```

## Local Development

Requirements:

- Rust stable
- Node.js 22+ (optional, for TypeScript app shells)

Run:

```bash
git clone https://github.com/CRTYPUBG/aio-mcp.git
cd aio-mcp

cp .env.example .env
# Set AIO_API_KEYS in .env

cargo run --package aio-server
```

Test:

```bash
cargo test --workspace
```

Build (dist output):

```powershell
powershell -ExecutionPolicy Bypass -File scripts/build.ps1
```

## Project Structure

```text
aio-mcp/
|- server/
|- core/
|  |- engine/
|  |- plugin-manager/
|  |- configuration-manager/
|  |- permission-manager/
|  \- api-gateway/
|- apps/
|  |- desktop/
|  |- web-dashboard/
|  \- cli/
|- docs/
|- schemas/
|- scripts/
|- assets/
|- Dockerfile
\- railway.json
```

## License

MIT - see [LICENSE](LICENSE).