86 lines
3.5 KiB
Markdown
86 lines
3.5 KiB
Markdown
# Language Course MCP Server
|
||
|
||
Model-Context-Protocol-Server zum **Ergänzen und Abfragen** von Sprachkurs-Inhalten: Glossar (Begriffe/Phrasen), neue Einträge speichern, **Konversationsübungen** als Rollenspiel-Prompts.
|
||
|
||
Liegt bewusst **neben** der YourPart-App (`mcp/language-course-server/`); Daten sind zunächst eine lokale JSON-Datei. Du kannst Inhalte später in `backend/scripts/create-language-courses.js` / Vocab-Modelle oder per API spiegeln.
|
||
|
||
## Tools
|
||
|
||
| Tool | Zweck |
|
||
|------|--------|
|
||
| `search_terms` | Glossar durchsuchen (`query`, optional `targetLang`, `nativeLang`) |
|
||
| `add_phrase` | Neue Phrase in `glossary.json` schreiben |
|
||
| `conversation_practice` | Zufälliges Szenario zum Üben (optional `topicHint`) |
|
||
| `export_glossary_snippet` | Letzte `n` Einträge als JSON für Export |
|
||
| `llm_status` | Prüft, ob API-Key/Modell gesetzt sind (ohne Netz) |
|
||
| `llm_chat` | Freier Chat mit dem LLM (`userMessage`, optional `systemPrompt`) |
|
||
| `llm_language_tutor` | `mode: dialogue` (Rollenspiel in Zielsprache) oder `evaluate` (Feedback zur Antwort) |
|
||
|
||
## LLM-Anbindung (OpenAI-kompatibel)
|
||
|
||
Voraussetzung für `llm_*`: ein **API-Key** und optional **Base-URL** / **Modell**.
|
||
|
||
| Variable | Bedeutung |
|
||
|----------|-----------|
|
||
| `LANGUAGE_COURSE_LLM_API_KEY` oder `OPENAI_API_KEY` | Pflicht für LLM-Tools |
|
||
| `LANGUAGE_COURSE_LLM_BASE_URL` | Leer = OpenAI-Default; z. B. `http://127.0.0.1:11434/v1` (Ollama) |
|
||
| `LANGUAGE_COURSE_LLM_MODEL` | Default: `gpt-4o-mini` |
|
||
|
||
Lokal: `cp .env.example .env` und Key eintragen. Beim Start wird `mcp/language-course-server/.env` geladen (sofern vorhanden).
|
||
|
||
**Cursor:** dieselben Variablen im `env`-Block des MCP-Eintrags setzen (oder nur Pfad zur `.env` vermeiden und Keys dort nicht duplizieren – dann Server per Wrapper starten, der `dotenv` lädt; unser Server lädt `.env` automatisch aus seinem Ordner).
|
||
|
||
**Ollama-Beispiel:**
|
||
|
||
```bash
|
||
LANGUAGE_COURSE_LLM_BASE_URL=http://127.0.0.1:11434/v1
|
||
LANGUAGE_COURSE_LLM_MODEL=llama3.2
|
||
LANGUAGE_COURSE_LLM_API_KEY=ollama
|
||
```
|
||
|
||
## Daten
|
||
|
||
- Standard: `data/glossary.json` (wird bei Bedarf angelegt).
|
||
- Alternativ: Umgebungsvariable `LANGUAGE_COURSE_MCP_DATA` auf ein Verzeichnis setzen (dort liegt `glossary.json`).
|
||
|
||
## Installation
|
||
|
||
```bash
|
||
cd mcp/language-course-server && npm install
|
||
```
|
||
|
||
## Cursor einbinden
|
||
|
||
In den Cursor-Einstellungen unter **MCP** einen Server hinzufügen, z. B.:
|
||
|
||
```json
|
||
{
|
||
"mcpServers": {
|
||
"language-course": {
|
||
"command": "node",
|
||
"args": ["/ABSOLUTER/PFAD/zu/YourPart3/mcp/language-course-server/src/server.mjs"],
|
||
"env": {
|
||
"LANGUAGE_COURSE_MCP_DATA": "/ABSOLUTER/PFAD/zu/YourPart3/mcp/language-course-server/data",
|
||
"OPENAI_API_KEY": "sk-…"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
`args` und `LANGUAGE_COURSE_MCP_DATA` an deinen Rechner anpassen.
|
||
|
||
## Manuell testen
|
||
|
||
```bash
|
||
cd mcp/language-course-server && npm run inspector
|
||
```
|
||
|
||
Öffnet den MCP Inspector; dort Tools ausprobieren.
|
||
|
||
## Hinweis zur App
|
||
|
||
Die Sprachkurse in der App nutzen `VocabCourse` / `vocabService` (siehe `backend/`). Dieser MCP ist eine **autororientierte Ergänzung** für deinen Workflow in der IDE.
|
||
|
||
**YourPart-Web:** Unter **Einstellungen → Sprachassistent** (`/settings/language-assistant`) speichern Nutzer **API-Key** und Metadaten in **`community.user_param`** (Typen `llm_settings` / `llm_api_key`, Gruppe `languageAssistant` in `type.settings`) — verschlüsselt wie andere Profilparameter. Der lokale MCP nutzt weiterhin die Umgebungsvariablen hier; beides ist getrennt, bis ein Backend-Proxy die gespeicherten Werte nutzt.
|