Rolodex MCP
Ein MCP-Server, der für jeden Kontakt aus config.toml und Kanal (E-Mail,
künftig weitere) ein eigenes Tool erzeugt (send_to_<name>_via_<kanal>). Der
Agent sieht nur Namen und Kanal über den Tool-Namen, nie die tatsächliche
Adresse — es gibt kein generisches Tool mit freier Adress- oder Kanalwahl.
Neue Kanäle werden auf eigenen Git-Branches entwickelt und per Pull Request gemerged — siehe CONTRIBUTING.md. Geplante/umgesetzte Kanäle: CHANNELS.md.
Architektur
- Plugin-System (
src/channels/): jeder Kanal implementiert denChannel-Trait in einer eigenen Datei und registriert sich mit einer Zeile inchannels::registry().main.rs/config.rs/mcp_server.rskennen keinen Kanal namentlich. config.toml= nur Kontaktbuch (Namen + Adressen)..env= Zugangsdaten pro Kanal. Sieheconfig.example.toml/.env.example.- Kollidierende Tool-Namen, ein Kontakt ohne Kanal, oder ein fehlgeschlagener
test_connection()-Check beim Start → harter Startabbruch mit klarer Fehlermeldung, statt später unklar zu scheitern. - Transport: Streamable HTTP auf
/—GETist ein ungeschützter Healthcheck,POSTder MCP-Endpunkt und verlangtAuthorization: Bearer <MCP_BEARER_TOKEN>(siehesrc/auth.rs).
Lokal bauen & prüfen
cargo check
cargo test # Unit-Tests (src/) + Integrationstests (tests/)
cargo run
cp config.example.toml config.toml
cp .env.example .env # ausfüllen
export $(cat .env | xargs)
export CONFIG_PATH=./config.toml
cargo run
Docker
cp config.example.toml config.toml # anpassen
cp .env.example .env # Zugangsdaten eintragen
docker compose up --build
Server läuft dann auf http://<host>:8080/. Ein eingebauter
Docker-Healthcheck (curl -f http://localhost:8080/) ist in
docker-compose.yml hinterlegt.