Skip to main content
Glama
oktaycosar
by oktaycosar
README.md
ο»Ώ# Manim MCP β€” DeepSeek Only

> **Altin Kural:** Sadece DeepSeek. Baska hicbir LLM provider YOK.
> OpenAI SDK β†’ DeepSeek endpoint. Google Gemini, OpenAI, Claude import edilmez.

Manim ile matematik animasyonlari ureten MCP sunucusu. DeepSeek LLM + **ChromaDB tabanli RAG** ile ilgili Manim kod orneklerini getirip, kullanici istedigi animasyonu uretir ve render eder.

## Ozellikler

- 🎬 **Manim Community animasyon uretimi** (DeepSeek `deepseek-chat` / `deepseek-reasoner`)
- 🧠 **ChromaDB tabanli RAG** β€” vektor arama ile ilgili kod orneklerini getirir
- πŸ“š **Coklu kaynak indexleme** β€” 3Blue1Brown videolari, animg kutuphanesi, Manim Kindergarten verisi, Pisagor ve ozel sahneler
- πŸ“– **Storyboard katmani** β€” sahne planini JSON olarak uretir (`storyboard.json`)
- πŸ”„ **Geri besleme dongusu** β€” basarili render'lar RAG'e geri beslenir (`feed_rag.py`)
- πŸ–₯️ **CLI + MCP** β€” hem terminal hem VS Code MCP uzerinden kullanilabilir

## Hizli Baslangic

```powershell
# 1. Kur
pip install -r requirements.txt

# 2. .env dosyasini duzenle (DEEPSEEK_API_KEY zorunlu)
#    .env.example dosyasini .env olarak kopyala, API keyini yaz

# 3. (Istege bagli) RAG indexlerini olustur
python index_animg.py
python index_3b1b_videos.py
python index_pisagor.py

# 4. Sunucuyu baslat (1. terminal)
python server.py

# 5. CLI'yi baslat (2. terminal)
python cli.py

# 6. Test et
>>> Bir daire ciz ve kaydir
>>> /doc How to animate a square transforming into a circle
>>> /health
```

## Mimarisi

```
                      β”Œβ”€β”€ index_*.py ──▢ ChromaDB (chroma_data/)
                      β”‚
storyboard.json ◀── generate_storyboard.py
                      β”‚
cli.py ──HTTP──▢ server.py ──OpenAI SDK──▢ api.deepseek.com
                      β”‚                          β”‚
                      β”œβ”€β”€ manim_mcp (manim-mcp-original)
                      β”‚     β”œβ”€β”€ core/rag.py        (ChromaDBService - RAG)
                      β”‚     β”œβ”€β”€ core/tracker.py    (RenderTracker)
                      β”‚     β”œβ”€β”€ prompts/           (system prompt sablonlari)
                      β”‚     └── config.py          (ManimMCPConfig)
                      β”‚
render_with_rag.py ◀── RAG retrieval (5 koleksiyon: patterns, components, helpers, scenes, 3b1b)
                      β”‚
                      └── feed_rag.py ──▢ basarili render'lar RAG'e geri beslenir
```

## Dosyalar

| Dosya | Gorevi |
|-------|--------|
| `server.py` | Flask MCP sunucusu (JSON-RPC) |
| `cli.py` | Terminal arayuzu |
| `deepseek_client.py` | OpenAI SDK ile DeepSeek API |
| `manim_tools.py` | MCP tool tanimlari (DeepSeek/OpenAI format) |
| `config.py` | .env tabanli yapilandirma (DeepSeek + MCP + Manim + RAG) |
| `render_with_rag.py` | RAG destekli animasyon uretim pipeline'i |
| `generate_storyboard.py` | Storyboard JSON uretici (ornek: Pisagor) |
| `feed_rag.py` | Basarili render'lari ChromaDB'ye besler |
| `index_animg.py` | animg kutuphanesi β†’ ChromaDB |
| `index_3b1b_videos.py` | 3Blue1Brown videolari β†’ ChromaDB |
| `index_pisagor.py` | Pisagor ozel verisi β†’ ChromaDB |
| `index_manim_kindergarten.py` | Manim Kindergarten verisi β†’ ChromaDB |
| `index_custom_scene.py` | Ozel sahneler β†’ ChromaDB |
| `manim-mcp-original/manim_mcp/` | Cekirdek paket (RAG, tracker, promptlar) |
| `storyboard.json` | Ornek storyboard tanimi |
| `mcp.template.json` | VS Code MCP yapilandirmasi |
| `.env.example` | Sablon .env dosyasi |

## RAG (ChromaDB)

- Embedding ve vektor arama **ChromaDB** uzerinden yapilir (TF-IDF degil)
- Veri yolu: `MANIM_MCP_CHROMADB_PATH` (varsayilan: `./chroma_data`)
- `render_with_rag.py` **5 koleksiyondan paralel** ceker: `patterns`, `components`, `helpers`, `scenes`, `3b1b`
- RAG protokolu icin: [`RAG_PROTOCOL.md`](RAG_PROTOCOL.md)

## Testler

```powershell
python test_code_generation.py   # kod uretim testi
python test_critical.py          # kritik akis testleri
python test_precision.py         # hassasiyet testleri
python test_production.py        # uretim testleri
```

## Neden DeepSeek?

Orijinal paulnegz/manim-mcp reposu `google.generativeai` kullanir. Bu su demek:
- Kod Gemini SDK import eder ama `DEEPSEEK_API_KEY` ayarlanmistir
- Google SDK `GOOGLE_API_KEY` arar, DeepSeek keyini yok sayar
- Ya crash olur ya da sessizce Geminiye gider

**Bizim cozumumuz:** `from openai import OpenAI` + `base_url="https://api.deepseek.com"`
DeepSeek, OpenAI API uyumlu oldugu icin baska hicbir SDKya gerek yok.

## MCP Olarak Kullan

`mcp.template.json` dosyasini VS Code MCP ayarlarina kopyala, `DEEPSEEK_API_KEY`i yaz.