Kurulum
mcpd, depolaması içine derlenmiş tek bir ikili dosyadır; kurmak, o dosyayı bir yere koyup başlatmak demektir. Aşağıdaki yollardan, işleri zaten nasıl çalıştırdığınıza uyanı seçin.
Docker
Henüz bir sürüm yayımlanmadı.
Bu sitedeki komutların adını verdiği imaj, chart ve paketler planlanan dağıtımdır; hiçbiri yayımlanmadı. Bugün çalışan yol, kaynaktan derlemektir ve Rust ile Node gerekir:
Derleyip çalıştırma
git clone https://github.com/mcpd/mcpd && cd mcpd && make build && ./target/release/mcpd demo Yayımlanan imaj en kısa yoldur ve belgelerin geri kalanının varsaydığı yoldur.
docker run -p 4317:4317 -v mcpd-data:/data -e MCPD_DATA=/data/mcpd.db ghcr.io/mcpd/mcpd
Volume önemlidir. mcpd, MCPD_DATA ile belirtilen yola bir SQLite
veritabanı yazar; volume'suz bir konteyner durduğunda trace'lerinizi de
götürür. Yolu açıkça yazmak bir seçeneğe mal olur ve dosyanın nereye gittiği
sorusunu ortadan kaldırır.
Her seçeneğin bir ortam değişkeni vardır; komut satırında geçebildiğiniz her
şeyi -e ile de verebilirsiniz. Önemli bir kurulumda
latest etiketini izlemeyin, bir sürüm etiketi sabitleyin. İmaj
linux/amd64 ve linux/arm64 için derlenir; Docker
makinenize uyanı çeker.
Docker Compose
Aynı konteyner, yazıya dökülmüş hâli. mcpd uygulamanızın yanında tek bir sunucuda duracaksa kullanılacak biçim budur.
services:
mcpd:
image: ghcr.io/mcpd/mcpd:latest
restart: unless-stopped
ports:
- "4317:4317"
volumes:
- mcpd-data:/data
environment:
MCPD_DATA: /data/mcpd.db
MCPD_PROJECT: default
# Bu porta sizden başkası erişebilir hâle gelmeden önce bunları ayarlayın.
# MCPD_INGEST_KEYS: key-for-your-agents
# MCPD_READ_KEYS: key-for-your-team
# MCPD_RETENTION_DAYS: 30
volumes:
mcpd-data: Yoruma alınmış üç anahtar, bu kurulum başkalarının da bulunduğu bir ağa çıkmadan önce doldurulacak olanlardır. Hiçbir anahtar ayarlanmamışken alım da okuma da açıktır; bu, dizüstünüzde doğru, başka her yerde yanlıştır. Neyin neden ayarlanacağını Dağıtım anlatır.
Kubernetes
Her sürüm chart'ı imajla aynı kayıt defterine bir OCI artefaktı olarak iter, bu yüzden önce eklenecek bir depo yoktur. Chart, bir alım anahtarı ve bir okuma anahtarı olmadan kurulmayı reddeder; ikisini önce üretin.
helm install mcpd oci://ghcr.io/mcpd/charts/mcpd -n mcpd --create-namespace --set keys.ingest=$INGEST_KEY --set keys.read=$READ_KEY
mcpd, Kubernetes'in gönderdiği SIGTERM sinyalini karşılar ve
düzgünce kapanır. Canlılık için /healthz, hazırlık için
/readyz sunar ve ikisi bilerek farklıdır: canlılık depolamaya
hiç dokunmaz, böylece yavaş bir veritabanı pod'u bir döngüye sokup yeniden
başlatamaz. Değerler, yoklamalar ve Deployment'ın biçimi
Docker ve Kubernetes sayfasında.
Bir sürüm ikili dosyası
Her sürüme x86_64 ve arm64 Linux için birer arşiv ile Apple silicon ve Intel
macOS için birer arşiv eklenir. Linux arşivleri musl ile derlenmiş statik
dosyalardır, bu yüzden eşleştirilecek bir libc yoktur. Yanlarında bir
SHA256SUMS dosyası ve bir derleme kaynağı tasdiki (build
provenance attestation) gelir. Makinenize uyan arşivi açın ve
./mcpd komutunu çalıştırın; argümansız çalıştırmak daemon'u
başlatır.
cargo install mcpd yoktur. crates.io'da yayımlanmış bir şey
yoktur ve kayıt defterinden derlenen bir crate arayüzü taşıyamaz: arayüz npm
ile oluşturulur ve ikili dosyanın içine derlenir. Bir Rust araç zinciriniz varsa
bunun yerine kaynaktan derleyin.
Kaynaktan
Depoyu klonlayın ve dağıtım derlemesini çalıştırın. Tam bağlama zamanı
optimizasyonu ve tek bir kod üretim birimi kullanır; derlemesi daha yavaştır
ama daha küçük ve daha hızlı ikili dosyayı verir. Doğrudan cargo
yerine make üzerinden gidin: arayüz ikili dosyanın içine
derlenir ve make dist önce onu derler; taze bir klon üzerinde
düz bir cargo build bu adımı yapamaz. Bu adım için makinede Rust
araç zincirinin yanı sıra Node ve npm de gerekir.
git clone https://github.com/mcpd/mcpd && cd mcpd && make dist
İkili dosya target/dist/mcpd yoluna yazılır; hızlı yolu
seçtiyseniz target/release/mcpd yoluna. mcpd'nin kendi üzerinde
çalışırken make build, çalıştırmayı düşündüğünüz her şey için
make dist kullanın.
Veri nereye gider
--data, SQLite dosyasının yoludur; varsayılan değeri çalışma
dizinindeki ./mcpd.db dosyasıdır. Üst dizinler sizin için
oluşturulur.
:memory: vermek her şeyi bellekte tutar ve diske hiçbir şey
yazmaz. Bu; bir test takımı için, başkasının makinesindeki bir gösterim için
ve prompt'larını geride bırakmak istemediğiniz her çalıştırma için doğru
seçimdir. Depo süreçle birlikte kaybolur, amaç da budur.
Geride bir şey bırakmayın
mcpd --data :memory: mcpd demo, depoyu gerçekçi ve başarısız bir çalıştırmayla
doldurur ve sonra sunmaya başlar; böylece arayüzü ilk açtığınızda içinde bir
şey olur.
Başlatmadan önce ne yapacağına bakın
mcpd config, bu çağrının çözümlendiği yapılandırmayı yazdırır ve
çıkar. Seçenekler, ortam değişkenleri ve varsayılan değerler tek bir listede
toplanır; böylece hiçbir şey başlatmadan hangisinin kazandığını görürsünüz.
$ mcpd configlisten 0.0.0.0:4317storage sqlite at ./mcpd.dbconfig file nonelog format textproject defaultprojects noneretention foreveringest auth openread auth openwrite auth openadmin auth openexecute auth openworker auth opensignup offruns sqlite at ./mcpd.runs.dbrun settings lease_ttl_ms 30000, reclaim_window_ms 30000, stall_window_ms 300000, idempotency_window_ms 86400000, park_ttl_ms 86400000, max_depth 8, max_step_repeats 16identity offclient ip peer addresssampling keep everythingquota unlimitedredaction onredact key built in, which is public; set --redact-keycors same-origin onlytimeout 30s per requestlimits 32 MiB per request, 10000 signals per batchderived duration and token metricsaspects offmonitors noneobjectives nonejudge offforwarding off Kurulumu doğrulayın
/healthz, “gerçekten çalışıyor mu” sorusunun yanıtıdır.
Depolamadan hiç okumaz; bu yüzden hızlı kalır ve diske değil sürece dair
dürüst kalır.
$ curl -s localhost:4317/healthz{"status":"ok","version":"0.1.0","spec_version":"1.0.0","uptime_seconds":8,"storage":"sqlite"}$ curl -s -o /dev/null -w "%{http_code}\n" localhost:4317/readyz200 spec_version, bu derlemenin uyguladığı veri modeli sürümüdür.
Bir istemci bunu okuyup anlamadığı bir sunucuyla konuşmayı reddedebilir; bu,
alan alan reddedilecek bir yığın göndermekten iyidir.
/readyz öteki yarıdır. Depolamayı yoklar ve depoya
erişilemediğinde 503 yanıtı verir; böylece bir yük dengeleyici,
okuma isteklerini karşılayamayan bir kopyaya göndermeyi bırakır. Canlılık
için /healthz, hazırlık için /readyz kullanın;
ikisi için asla aynısını kullanmayın.
Sonra localhost:4317 adresini açın; karşınızda arayüz olacak.
Sırada
- Kendi ajanınızdan bir trace gönderin: Hızlı başlangıç.
- Belgelerin geri kalanının kullandığı sözcükleri öğrenin: Kavramlar.
- Her seçenek ve ortam değişkeni tek bir tabloda: Yapılandırma.
- Porta başkası erişebilir hâle gelmeden önce: Docker ve Kubernetes.