Skip to main content
Glama
ysok
by ysok
README.md
# SSOT-MCP (Single Source of Truth — MCP)

**SSOT-MCP** is a **free, open-source** system for teams who want **one place** to index **many Git repositories** and query them from MCP-capable tools (for example **Cursor**).

Ingest GitHub or GitLab organizations or individual repositories, run a **Prefect** pipeline per repo (**clone → chunk → embed → index → cross-deps**), then search through **Chroma** (semantic) and **Zoekt** (lexical) via a **dashboard**, **REST/WebSocket API**, or **MCP**.

## Demo

[![Demo](https://img.youtube.com/vi/vAMQ8tqVxHU/maxresdefault.jpg)](https://youtu.be/vAMQ8tqVxHU)

## Requirements

| Category | What you need |
|----------|----------------|
| **Runtime** | [Podman](https://podman.io/) and [podman-compose](https://github.com/containers/podman-compose) |
| **Imports** | **GitHub** or **GitLab** token, plus a **[Hugging Face](https://huggingface.co/docs/hub/security-tokens)** token for the embedding model |
| **GPU (embedding)** | **NVIDIA GPU** strongly recommended for production embed throughput; see **[docs/README.md](docs/README.md#gpu-for-embedding)** |

## Quick start

```bash
git clone https://github.com/ysok/ssot-mcp.git
cd ssot-mcp
cp .env.example .env
# Edit .env: GITHUB_TOKEN or GITLAB_TOKEN, HF_TOKEN, postgres UIDs, GPU settings
podman-compose up --build
```

Compose creates `data/app` and `data/postgres` on the host. Finish **Settings** (tokens) before **Import** or **Scan**.

| Service | URL |
|---------|-----|
| Dashboard | http://localhost:8080 |
| API docs | http://localhost:8000/docs |
| Prefect UI | http://localhost:4200 |

## Documentation

| Document | Contents |
|----------|----------|
| **[docs/README.md](docs/README.md)** | Configuration, data layout, MCP, auth, troubleshooting, local dev |
| **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** | Stack, features, deployment topology, Mermaid diagrams |
| **[docs/PRESENTATION.md](docs/PRESENTATION.md)** | Marp slide deck (overview for teams) |
| **[.env.example](.env.example)** | Environment variables |
| **[CONTRIBUTING.md](CONTRIBUTING.md)** | Development and PR expectations |
| **[CHANGELOG.md](CHANGELOG.md)** | Release notes |

## Legal

- **License:** [MIT](LICENSE)
- **Third-party components:** [NOTICE](NOTICE) (Zoekt, Chroma, Prefect, PyTorch/CUDA, container bases, embedding model)
- **Indexed repositories:** You must have rights to clone and index any code you register; SSOT-MCP does not grant those rights.
- **Trademarks:** Names such as Cursor, GitHub, GitLab, and Hugging Face are trademarks of their respective owners; this project is not affiliated with them unless stated otherwise.

## Contributing

See **[CONTRIBUTING.md](CONTRIBUTING.md)**.