Harness
resmiHarness platform verilerine, boru hatları, depolar, günlükler ve yapıt kayıtları dahil olmak üzere erişin ve bunlarla etkileşim kurun.
Harness MCP ile neler yapabilirsiniz?
- Harness kaynaklarını listele — Yapay zekanızdan
harness_listkullanarak organizasyonları, projeleri, pipeline'ları veya diğer kaynakları listelemesini isteyin. - Kaynak ayrıntılarını al —
harness_getile pipeline veya servis gibi herhangi bir Harness kaynağının tam ayrıntılarını edinin. - Yeni kaynaklar oluştur — Yapay zekanıza
harness_createile pipeline, servis veya diğer varlıkları oluşturmasını talimat verin. - Projeler arası keşif — Tüm projelerde başarısız yürütmeler veya kaynaklar için sorun; aracı, hesap hiyerarşisinde dinamik olarak gezinir.
- Çok kullanıcılı kimlik doğrulama — Paylaşılan dağıtımlarda, her oturum
x-harness-api-keybaşlığı aracılığıyla kendi Harness API anahtarıyla kimlik doğrulayabilir.
Dokümantasyon
Harness MCP Sunucusu 2.0
Yapay zeka ajanlarına Harness.io platformuna 11 birleştirilmiş araç ve 255 kaynak türü üzerinden tam erişim sağlayan bir MCP (Model Context Protocol) sunucusu.
Bu MCP Sunucusunu Neden Kullanmalısınız?
Çoğu MCP sunucusu, API uç noktası başına bir araç eşler. Harness kadar geniş bir platform için bu, 240+ araç anlamına gelir — ve araç sayısı arttıkça LLM'ler araç seçiminde daha da kötüleşir. Bağlam pencereleri şemalarla dolar ve her yeni uç nokta yeni kod anlamına gelir.
Bu sunucu farklı şekilde inşa edilmiştir:
- 11 araç, 255 kaynak türü. Kayıt tabanlı bir dağıtım sistemi,
harness_list,harness_get,harness_createvb. öğelerini herhangi bir Harness kaynağına yönlendirir — pipeline'lar, hizmetler, ortamlar, organizasyonlar, projeler, özellik bayrakları, maliyet verileri ve daha fazlası. LLM, yüzlerce yerine 11 araçtan seçim yapar. - Tam platform kapsamı. CI/CD, GitOps, Özellik Bayrakları, Bulut Maliyet Yönetimi, Güvenlik Testi, Kaos Mühendisliği, Veritabanı DevOps'u, Dahili Geliştirici Portalı, Yazılım Tedarik Zinciri, Altyapı Olarak Kod Yönetimi, Sürüm Yönetimi, Yönetişim, Hizmet Geçersiz Kılmaları, Bilgi Grafiği ve daha fazlasını kapsayan 41 varsayılan araç seti. Gerektiğinde isteğe bağlı Ansible ve gözlemlenebilirlik değerlendirme kapsamı mevcuttur.
- Kutudan çıktığı gibi çok projeli iş akışları. Ajanlar organizasyonları ve projeleri dinamik olarak keşfeder — sabit kodlanmış ortam değişkenlerine gerek yoktur. "Tüm projelerde başarısız yürütmeleri göster" diye sorun ve ajan tüm hesap hiyerarşisinde gezinebilir.
- 35 prompt şablonu. Yaygın iş akışları için önceden oluşturulmuş prompt'lar: uçtan uca uygulama derleme ve dağıtma, başarısız pipeline'ları hata ayıklama, DORA metriklerini inceleme, güvenlik açıklarını triyajlama, bulut maliyetlerini optimize etme, erişim kontrolünü denetleme, özellik bayrağı dağıtımlarını planlama, çekme isteklerini inceleme, bekleyen pipeline'ları onaylama ve daha fazlası.
- Her yerde çalışır. Yerel istemciler için Stdio taşıma (Claude Desktop, Cursor, Devin Desktop), uzak/paylaşılan dağıtımlar için HTTP taşıma, Docker ve Kubernetes hazır.
- Sıfır yapılandırma ile başlangıç. Sadece bir Harness API anahtarı sağlayın. Hesap Kimliği, PAT ve SAT belirteçlerinden otomatik olarak çıkarılır, organizasyon/proje varsayılanları isteğe bağlıdır ve araç seti filtreleme, yalnızca ihtiyacınız olanı açığa çıkarmanızı sağlar.
- Tasarım gereği genişletilebilir. Yeni bir Harness kaynağı eklemek, bildirimsel bir veri dosyası eklemek anlamına gelir — yeni araç kaydı, şema değişikliği veya prompt güncellemesi gerekmez.
Ön Koşullar
Sunucuyu kurmadan veya çalıştırmadan önce bir Harness API anahtarına ihtiyacınız var:
- Harness hesabınıza giriş yapın
- Profilim → API Anahtarları → + Yeni API Anahtarı bölümüne gidin
- API anahtarının altında yeni bir Belirteç oluşturun — bu,
<prefix>.<accountId>.<tokenId>.<secret>biçiminde bir PAT veya SAT üretir - Belirteci güvenli bir yere kaydedin — sonraki adımda buna ihtiyacınız olacak
Ayrıntılı talimatlar için Harness API Hızlı Başlangıç bölümüne bakın.
Hızlı Başlangıç
Seçenek 0: Barındırılan Harness MCP
Harness hesabınızda barındırılan MCP hizmeti etkinse, uzak MCP sunucularını destekleyen istemciler, sunucuyu yerel olarak çalıştırmak yerine doğrudan yönetilen uç noktaya bağlanabilir.
Önemli: Barındırılan MCP hizmeti,
HARNESS_API_KEYdeğil Harness Platform OAuth kullanır. Ayrıca, uç nokta kullanılmadan önce Harness Destek tarafından hesap başına etkinleştirilmesi/yapılandırılması gerekir.
Yapılandırma örnekleri için Barındırılan Harness MCP bölümüne bakın.
Seçenek 1: npx (Önerilen)
Kurulum gerekmez — sadece çalıştırın:
HARNESS_API_KEY=pat.xxx.xxx.xxx npx harness-mcp-v2@latest
Veya API anahtarını yapay zeka istemcinizde yapılandırın (aşağıdaki İstemci Yapılandırması bölümüne bakın).
# Stdio transport (default — for Claude Desktop, Cursor, Devin Desktop, etc.)
HARNESS_API_KEY=pat.xxx npx harness-mcp-v2
# HTTP transport (for remote/shared deployments)
HARNESS_API_KEY=pat.xxx npx harness-mcp-v2 http --port 8080
Not: Hesap kimliği, PAT ve SAT belirteçlerinden (
pat.<accountId>...veyasat.<accountId>...) otomatik olarak çıkarılır, bu nedenleHARNESS_ACCOUNT_IDyalnızca gömülü hesap bölümü olmayan API anahtarları için gereklidir.
Seçenek 2: Global Kurulum
npm install -g harness-mcp-v2
# Then run directly
harness-mcp-v2
Seçenek 3: Kaynaktan Derleme
Geliştirme veya özelleştirme için:
git clone https://github.com/harness/mcp-server.git
cd mcp-server
pnpm install
pnpm build
# Run
pnpm start # Stdio transport
pnpm start:http # HTTP transport
pnpm inspect # Test with MCP Inspector
Anthropic MCP Dizin paketi
MCPB paket bildirimi [mcp-directory/](mcp-directory/) içinde, 512×512 paket simgesi ise depo kökünde [icon.png](icon.png) konumunda izlenir. Paketlenmiş arşiv, kök düzeyinde manifest.json, icon.png, server/, package.json, npm-shrinkwrap.json ve üretim node_modules/ içerir.
Arşivi küçük tutmak için MCPB paketlerini bir hazırlık dizininden derleyin:
pnpm prepare:mcpb
Hazırlık dizini, npm'in düz düzeni kullanılarak npm-shrinkwrap.json konumundan üretim bağımlılıklarıyla birlikte dist/mcpb/ konumuna yazılır. Sabitlenmiş resmi MCPB CLI bunu doğrular ve dist/harness-mcp-server-<version>.mcpb oluşturur.
v*.*.* ile eşleşen sürüm etiketleri, bu paketi otomatik olarak ilgili GitHub Sürümüne yayınlar. npm'i yeniden yayınlamadan mevcut bir sürümü geriye doldurmak için, Release iş akışını release_tag girdisiyle (örneğin, v3.2.20) manuel olarak çalıştırın. İş akışı, yalnızca sürümlü MCPB varlığını değiştirmeden önce tam olarak o etiketi kontrol eder ve derler.
CLI Kullanımı
harness-mcp-v2 [stdio|http] [--port <number>]
Options:
--port <number> Port for HTTP transport (default: 3000, or PORT env var)
--help Show help message and exit
--version Print version and exit
Belirtilmezse taşıma varsayılan olarak stdio olur. Uzak/paylaşılan dağıtımlar için http kullanın.
HTTP Taşıma
HTTP modunda çalışırken sunucu şunları sunar:
| Uç Nokta | Yöntem | Açıklama |
|---|---|---|
/mcp | POST | MCP JSON-RPC uç noktası (başlatma + oturum istekleri) |
/mcp | GET | Sunucu tarafından başlatılan mesajlar için SSE akışı (ilerleme, bilgi toplama) |
/mcp | DELETE | Etkin bir MCP oturumunu sonlandır |
/mcp | OPTIONS | CORS ön kontrolü |
/health | GET | Sağlık kontrolü — { "status": "ok", "sessions": <count> } döndürür |
/.well-known/oauth-protected-resource | GET | HARNESS_MCP_MODE=oauth olduğunda RFC 9728 meta verileri |
/.well-known/oauth-protected-resource/mcp | GET | Varsayılan /mcp kaynağı için yola duyarlı RFC 9728 meta verileri |
HTTP taşıma oturum tabanlı modda çalışır. initialize üzerinde yeni bir MCP oturumu oluşturulur, sunucu bir mcp-session-id başlığı döndürür ve bu oturum için sonraki istekler aynı başlığı içermelidir.
HTTP modunda operasyonel kısıtlamalar:
- Paylaşılan veya uzaktan erişilebilir tek kullanıcılı ve çok kullanıcılı dağıtımlar için
HARNESS_MCP_AUTH_TOKENayarlayın. Ayarlandığında,/mcpadresine yapılan herPOST,GETveDELETEisteğiAuthorization: Bearer <token>içermelidir. - OAuth modu,
HARNESS_MCP_AUTH_TOKENyerine HarnessID erişim belirteçlerini kabul eder ve kimlik doğrulamasız devre dışı bırakma olmadan döngü dışı adrese bağlanabilir. - Döngü dışı tek kullanıcılı ve çok kullanıcılı bağlantılar varsayılan olarak
HARNESS_MCP_AUTH_TOKENgerektirir. Yine de döngü dışı bir arayüzde kimlik doğrulamasız çalıştırmak içinHARNESS_MCP_ALLOW_UNAUTHENTICATED_HTTP=trueaçıkça ayarlayın. POST /mcp,mcp-session-idolmadan birinitializeisteği olmalıdır.- Mevcut oturumlar için
POST /mcp,GET /mcpveDELETE /mcp,mcp-session-idbaşlığını gerektirir. GET /mcp, SSE bildirimleri için kullanılır (ilerleme güncellemeleri ve bilgi toplama istemleri).- Boşta kalan oturumlar, hiçbir istek veya SSE akışı etkin olmadığında
MCP_SESSION_TTL_MSmilisaniye sonra sonlandırılır (varsayılan1800000veya 30 dakika). GET /healthtek MCP olmayan uç noktadır.- İstek gövdesi boyutu
HARNESS_MAX_BODY_SIZE_MBtarafından sınırlandırılır (varsayılan10MB). - Bu HTTP oturumu için V0 veya V1 pipeline kaynaklarını seçmek üzere
initializeisteğindex-harness-pipeline-version: 0veya1ayarlayın. - Daha sıkı bir oturum başına otomatik onay eşiği seçmek için
initializeisteğindex-harness-auto-approve-risk: none|low_write|medium_write|high_write|allayarlayın. Sunucu bu değeri dağıtım düzeyindekiHARNESS_AUTO_APPROVE_RISKile sınırlar, böylece bir oturum yapılandırılmış onay tavanını azaltabilir ancak genişletemez.
HarnessID OAuth Modu
Uzak MCP istemcilerinin HarnessID'yi keşfetmesine ve PKCE ile OAuth 2.1 Yetkilendirme Kodu akışını tamamlamasına izin vermek için HARNESS_MCP_MODE=oauth ayarlayın. OAuth modu yalnızca HTTP taşıma ile kullanılabilir. Üretim HarnessID, MCP kaynağı ve API yönlendirme varsayılanları yerleşiktir:
HARNESS_MCP_MODE=oauth
Bu, varsayılan olarak veren https://id.harness.io/idp/realms/HarnessIDP, kaynak https://mcp.harness.io/mcp, OAuth istemcisi mcp-client ve Harness API tabanı https://mcp.harness.io/cli olarak ayarlanır. Bunları yalnızca QA, yerel geliştirme veya başka bir Harness ortamı için geçersiz kılın.
HARNESS_API_KEY bu modda ayarlanmamalıdır. HARNESS_MCP_OAUTH_JWKS_URI varsayılan olarak <issuer>/protocol/openid-connect/certs olur ve HARNESS_ACCOUNT_ID gereksizdir çünkü hesap belirteçten gelir.
Sunucu, RFC 9728 korumalı kaynak meta verilerini yayınlar ve bir istemci kimlik doğrulaması yapmadığında şu yanıtı döndürür:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata="https://mcp.harness.io/.well-known/oauth-protected-resource/mcp"
HarnessID erişim belirtecinin RS256 imzasını, iss, son kullanma tarihini ve sub değerini yapılandırılmış JWKS uç noktasını kullanarak doğrular ve belirtecin azp talebi aracılığıyla HARNESS_MCP_OAUTH_CLIENT_ID adresine verildiğini kontrol eder. HARNESS_MCP_OAUTH_RESOURCE, keşif ve zorluklar için kullanılan RFC 9728 korumalı kaynak tanımlayıcısıdır. Geçerli HarnessID erişim belirteçleri, MCP URL'si yerine aud: account kullanır, bu nedenle kaynak aud ile karşılaştırılmaz.
Hesap kimliği, belirtecin HARNESS_MCP_OAUTH_ACCOUNT_CLAIM talebinden (varsayılan olarak account_id) gelir ve bu, HarnessID organization kapsamı tarafından doldurulur. Her oturum, arayanın erişim belirtecini saklar ve bunu Authorization: Bearer olarak Harness API'sine iletir, böylece Harness RBAC ve denetim kayıtları paylaşılan bir PAT yerine oturum açmış kullanıcıyı yansıtır. Oturum, oluşturulduğu sub ve hesaba bağlıdır: daha sonraki bir istek yenilenmiş bir belirteç taşıyabilir, ancak farklı bir kullanıcı veya hesap için olan reddedilir.
İstemcilerin normalde yalnızca MCP kaynak URL'sine ihtiyacı vardır:
{
"mcpServers": {
"harness": {
"url": "https://mcp.harness.io/mcp"
}
}
}
İstemci, korumalı kaynak meta verilerini okur, HARNESS_MCP_OAUTH_ISSUER keşfeder ve ardından bu yetkilendirme sunucusunun RFC 8414 meta verilerini kullanır. İstemci dinamik istemci kaydını desteklemiyorsa, önceden kayıtlı mcp-client istemci kimliğini kullanın.
QA Keycloak kontrol listesi ve doğrulama komutları için Kendi kendine barındırılan MCP sunucusu için HarnessID OAuth bölümüne bakın.
Çok Kullanıcılı Mod
Her istemcinin farklı bir Harness kullanıcısı olarak kimlik doğruladığı paylaşılan HTTP dağıtımları için HARNESS_MCP_MODE=multi-user ayarlayın. Bu modda:
HARNESS_API_KEY, sunucu yapılandırmasında ayarlanmamalıdır — sunucu hiçbir Harness kimlik bilgisi tutmaz.- Her oturum,
initializeisteğindex-harness-api-keysağlamalıdır.x-harness-account-id, yalnızca API anahtarı bir hesap bölümü gömmediğinde gereklidir. - Oturumlar ayrıca bu oturum için varsayılan kapsamı ayarlamak üzere
x-harness-orgvex-harness-projectbaşlıkları sağlayabilir. - Harness API anahtarı, bu oturum için her Harness API çağrısına akar, böylece Harness'teki denetim izi gerçek kullanıcıyı yansıtır.
HARNESS_MCP_AUTH_TOKENbağımsızdır ve yine de ek bir taşıma katmanı kapısı olarak kullanılabilir.
# Health check
curl http://localhost:3000/health
# MCP initialize request (capture mcp-session-id response header)
# In multi-user mode, x-harness-api-key is required on initialize.
# x-harness-account-id is needed only for API keys without an embedded account segment.
curl -i -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $HARNESS_MCP_AUTH_TOKEN" \
-H "x-harness-api-key: $HARNESS_API_KEY" \
-H "x-harness-account-id: $HARNESS_ACCOUNT_ID" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
# Subsequent MCP request (use returned session ID)
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $HARNESS_MCP_AUTH_TOKEN" \
-H "mcp-session-id: <session-id>" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
# Terminate session
curl -X DELETE http://localhost:3000/mcp \
-H "Authorization: Bearer $HARNESS_MCP_AUTH_TOKEN" \
-H "mcp-session-id: <session-id>"
HARNESS_MCP_ALLOWED_HOSTS, DNS yeniden bağlama koruması için Host başlığı doğrulamasını kontrol eder ve CORS, tarayıcı kaynaklarını sınırlar. Hiçbiri kimlik doğrulama değildir; erişim kontrolü için HARNESS_MCP_AUTH_TOKEN veya kimliği doğrulanmış bir ağ geçidi/ters proxy kullanın.
İstemci Yapılandırması
Not:
HARNESS_ORGveHARNESS_PROJECTisteğe bağlıdır. Araç çağrısı başına belirtilmediğinde kullanılan organizasyon kimliğini ve proje kimliğini ayarlarlar. Ajanlar,harness_list(resource_type="organization")veharness_list(resource_type="project")kullanarak organizasyonları ve projeleri dinamik olarak keşfedebilir. Eski adlarHARNESS_DEFAULT_ORG_IDveHARNESS_DEFAULT_PROJECT_IDgeriye dönük uyumluluk için hâlâ kabul edilir.
Barındırılan Harness MCP
Harness ayrıca, yönetilen hizmetin etkin olduğu hesaplar için barındırılan bir MCP uç noktasını destekler. Bu, npx harness-mcp-v2 çalıştırmak veya HTTP taşımayı kendi kendine barındırmak yerine paylaşılan bir uzak MCP uç noktası istediğinizde kullanışlıdır.
Önemli: Barındırılan MCP kimlik doğrulaması Harness Platform OAuth kullanır. İstemci yapılandırmasında
HARNESS_API_KEYkullanmaz. Barındırılan MCP kullanılabilirliği Harness hesabı başına yapılandırılır; bu nedenle kullanmadan önce ayarı etkinleştirmek/yapılandırmak için Harness Support ile çalışmanız gerekecektir.Barındırılan uç nokta
https://mcp.harness.io/mcpyönetilen bir hizmettir. Claude, Cursor veya Cowork'daki istemci tarafı MCP yapılandırması, hangi Harness ortamına yönlendirileceğini geçersiz kılamaz. Harness0 veya başka bir özel Harness SaaS ortamı için, bu ortam için barındırılan MCP'yi etkinleştirmek/yapılandırmak üzere Harness Support'tan istekte bulunun veya yerel/kendi kendine barındırılan sunucuyu çalıştırıpHARNESS_BASE_URLdeğerini hedef Harness ana bilgisayarına ayarlayın.
Barındırılan MCP örneği:
{
"mcpServers": {
"harness-prod1-mcp": {
"url": "https://mcp.harness.io/mcp",
"auth": {
"CLIENT_ID": "mcp-client"
}
}
}
}
Hem barındırılan hem de yerel girişlerin bulunduğu örnek:
{
"mcpServers": {
"harness-hosted": {
"url": "https://mcp.harness.io/mcp",
"auth": {
"CLIENT_ID": "mcp-client"
}
},
"harness-local": {
"command": "/absolute/path/to/npx",
"args": ["-y", "harness-mcp-v2@latest"],
"env": {
"HARNESS_API_KEY": "pat.xxx.xxx.xxx",
"PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
npx ENOENTveyanode: No such file or directorySorun GidermeBu, bir Harness kimlik doğrulama hatası değil, bir istemci işlem başlatma hatasıdır. MCP sunucusu henüz başlamadı, bu nedenle
HARNESS_API_KEYdeğiştirmekspawn npx ENOENTetkilemeyecektir.GUI uygulamaları (Cursor, Claude Desktop, Devin Desktop, VS Code) kabuğunuzun
PATHher zaman devralmaz, bu nedenle bir yapılandırma yeniden yüklemesinden sonranpxveyanodebulmakta başarısız olabilirler. Bunu mutlak yollar kullanarak veenvbloğundaPATHaçıkça ayarlayarak düzeltin:{ "mcpServers": { "harness": { "command": "/absolute/path/to/npx", "args": ["-y", "harness-mcp-v2"], "env": { "HARNESS_API_KEY": "pat.xxx.xxx.xxx", "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" } } } }Yollarınızı bir terminalde
which npxvewhich nodeile bulun, ardındannodeiçeren dizinin yukarıdakiPATHdeğerine dahil edildiğinden emin olun. Yaygın konumlar:
- Homebrew (macOS):
/opt/homebrew/bin/npx- nvm:
~/.nvm/versions/node/v20.x.x/bin/npx(tam yolu bulmak içinnvm which currentçalıştırın)- Sistem Node:
/usr/local/bin/npx
Claude Desktop (claude_desktop_config.json)
npx (sıfır kurulum)
{
"mcpServers": {
"harness": {
"command": "/absolute/path/to/npx",
"args": ["-y", "harness-mcp-v2@latest"],
"env": {
"HARNESS_API_KEY": "pat.xxx.xxx.xxx",
"PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
node (yerel kurulum)
npm install -g harness-mcp-v2
{
"mcpServers": {
"harness": {
"command": "/absolute/path/to/harness-mcp-v2",
"env": {
"HARNESS_API_KEY": "pat.xxx.xxx.xxx",
"PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
Claude Code (claude mcp add aracılığıyla)
npx (sıfır kurulum)
claude mcp add harness -- npx harness-mcp-v2
node (yerel kurulum)
npm install -g harness-mcp-v2
claude mcp add harness -- harness-mcp-v2
Ardından ortamınızda veya .env dosyasında HARNESS_API_KEY ayarlayın.
Cursor (.cursor/mcp.json)
npx (sıfır kurulum, yerel Cursor yapılandırmaları için önerilir)
{
"mcpServers": {
"harness": {
"command": "/absolute/path/to/npx",
"args": ["-y", "harness-mcp-v2@latest"],
"env": {
"HARNESS_API_KEY": "pat.xxx.xxx.xxx",
"PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
Bir terminalde which npx çalıştırın ve command için bu tam yolu kullanın; which node dizinini PATH başına ekleyin.
node (yerel kurulum)
npm install -g harness-mcp-v2
{
"mcpServers": {
"harness": {
"command": "/absolute/path/to/harness-mcp-v2",
"env": {
"HARNESS_API_KEY": "pat.xxx.xxx.xxx",
"PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
npm install -g harness-mcp-v2 sonrasında which harness-mcp-v2 çalıştırın ve command için bu tam yolu kullanın; which node dizinini PATH başına ekleyin.
Devin Desktop (~/.windsurf/mcp.json)
npx (sıfır kurulum)
{
"mcpServers": {
"harness": {
"command": "/absolute/path/to/npx",
"args": ["-y", "harness-mcp-v2@latest"],
"env": {
"HARNESS_API_KEY": "pat.xxx.xxx.xxx",
"PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
node (yerel kurulum)
npm install -g harness-mcp-v2
{
"mcpServers": {
"harness": {
"command": "/absolute/path/to/harness-mcp-v2",
"env": {
"HARNESS_API_KEY": "pat.xxx.xxx.xxx",
"PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
Kaynaktan yerel bir derleme mi kullanıyorsunuz?
Komutu, derlenmiş index.js yolunuzla değiştirin:
{
"command": "node",
"args": ["/absolute/path/to/harness-mcp-v2/build/index.js", "stdio"]
}
MCP Gateway
Harness MCP sunucusu, MCP Gateway'ler ile tamamen uyumludur — birden fazla MCP sunucusu genelinde merkezi kimlik doğrulama, yönetişim, araç yönlendirme ve gözlemlenebilirlik sağlayan ters proxy'ler. Sunucu, hem stdio hem de HTTP taşımalarıyla standart MCP protokolünü uyguladığından, kod değişikliği olmadan MCP uyumlu herhangi bir gateway'in arkasında çalışır.
Neden bir gateway kullanmalısınız?
- Merkezi kimlik bilgisi yönetimi — aracı yapılandırmalarında API anahtarı yok
- Ekipler arasındaki tüm araç çağrıları için yönetişim ve denetim günlüğü
- N MCP sunucusuna N bağlantı yerine aracılar için tek uç nokta
- Erişim kontrolü — hangi ekiplerin hangi araçları kullanabileceğini kısıtlama
Docker MCP Gateway
Sunucuyu Docker MCP Gateway yapılandırmanıza kaydedin:
{
"mcpServers": {
"harness": {
"command": "npx",
"args": ["harness-mcp-v2"],
"env": {
"HARNESS_API_KEY": "pat.xxx.xxx.xxx"
}
}
}
}
Portkey
Kurumsal yönetişim, maliyet takibi ve çoklu-LLM yönlendirme için Harness MCP sunucusunu Portkey MCP Gateway ekleyin:
{
"mcpServers": {
"harness": {
"command": "npx",
"args": ["harness-mcp-v2"],
"env": {
"HARNESS_API_KEY": "pat.xxx.xxx.xxx"
}
}
}
}
LiteLLM
LiteLLM proxy yapılandırmanıza ekleyin:
mcp_servers:
- name: harness
command: npx
args:
- harness-mcp-v2
env:
HARNESS_API_KEY: "pat.xxx.xxx.xxx"
Envoy AI Gateway
Sunucu, HTTP taşıması üzerinden Envoy AI Gateway'in MCP desteğiyle çalışır:
# Start the server in HTTP mode
HARNESS_API_KEY=pat.xxx.xxx.xxx npx harness-mcp-v2 http --port 8080
Ardından Envoy'u bir yukarı akış MCP arka ucu olarak http://localhost:8080/mcp yönlendirecek şekilde yapılandırın.
Kong
Harness MCP sunucusunu mevcut Kong gateway altyapınız üzerinden sunmak için Kong'un AI MCP Proxy eklentisini kullanın.
Diğer Gateway'ler
MCP spesifikasyonunu destekleyen herhangi bir gateway (Microsoft MCP Gateway, IBM ContextForge, Cloudflare Workers, vb.) bu sunucuyu proxy olarak kullanabilir. stdio tabanlı gateway'ler için varsayılan taşımayı kullanın. HTTP tabanlı gateway'ler için sunucuyu http taşımasıyla başlatın ve gateway'i /mcp uç noktasına yönlendirin.
Docker
Sunucuyu bir Docker kapsayıcısı olarak derleyin ve çalıştırın:
# Build the image
pnpm docker:build
# Run with your .env file
pnpm docker:run
# Or run directly with env vars
docker run --rm -p 3000:3000 \
-e HARNESS_API_KEY=pat.xxx.xxx.xxx \
-e HARNESS_ACCOUNT_ID=your-account-id \
harness-mcp-server
Kapsayıcı varsayılan olarak 3000 portunda HTTP modunda, yerleşik bir sağlık kontrolüyle çalışır.
Kubernetes
Sağlanan manifestleri kullanarak bir Kubernetes kümesine dağıtın:
# 1. Edit the Secret with your real credentials
# k8s/secret.yaml — replace HARNESS_API_KEY and HARNESS_ACCOUNT_ID
# 2. Apply all manifests
kubectl apply -f k8s/
# 3. Verify the deployment
kubectl -n harness-mcp get pods
# 4. Port-forward for local testing
kubectl -n harness-mcp port-forward svc/harness-mcp-server 3000:80
curl http://localhost:3000/health
Dağıtım, hazırlık/canlılık probları, kaynak limitleri ve root olmayan güvenlik bağlamıyla 2 replika çalıştırır. Service, 80 portunu dahili olarak sunar (kapsayıcı portu 3000'i hedefler).
Yapılandırma
Sunucu, proje kökünde bir .env dosyası varsa, otomatik olarak ortam değişkenlerini yükler. .env.example dosyasını .env kopyalayın ve değerlerinizi doldurun. Ortam değişkenleri ayrıca kabuğunuz veya MCP istemci yapılandırması aracılığıyla da ayarlanabilir.
| Değişken | Zorunlu | Varsayılan | Açıklama |
|---|---|---|---|
HARNESS_MCP_MODE | Hayır | single-user | Dağıtım modu: single-user (paylaşılan API anahtarı), multi-user (oturum başına API anahtarlarıyla HTTP) veya oauth (HarnessID erişim tokeni doğrulamasıyla HTTP) |
HARNESS_API_KEY | Evet* | -- | Harness kişisel erişim tokeni veya hizmet hesabı tokeni. single-user modunda gereklidir. multi-user veya oauth modunda AYARLANMAMALIDIR; bu modlarda her oturum kendi kimlik bilgisini getirir |
HARNESS_ACCOUNT_ID | Hayır | (PAT/SAT'ten) | Harness hesap tanımlayıcısı. Tek kullanıcılı modda PAT/SAT tokenlerinden otomatik çıkarılır; çok kullanıcılı oturumlar, API anahtarı bir tane gömmediğinde x-harness-account-id aracılığıyla kendi hesap tanımlayıcısını sağlayabilir |
HARNESS_BASE_URL | Hayır | https://app.harness.io (OAuth modunda https://mcp.harness.io/cli) | Harness API/UI temel URL'si. OAuth modu varsayılan olarak barındırılan MCP /cli proxy'si üzerinden yönlendirir; diğer modlar doğrudan Harness SaaS API'sini kullanır |
HARNESS_MCP_OAUTH_ISSUER | Hayır | https://id.harness.io/idp/realms/HarnessIDP | HarnessID veren, erişim tokeninin iss talebiyle tam olarak eşleştirilir |
HARNESS_MCP_OAUTH_RESOURCE | Hayır | https://mcp.harness.io/mcp | RFC 9728 kaynak tanımlayıcısı olarak yayınlanan genel kanonik MCP URL'si |
HARNESS_MCP_OAUTH_JWKS_URI | Hayır | <issuer>/protocol/openid-connect/certs | RS256 erişim tokeni imzalarını doğrulamak için kullanılan HarnessID JWKS uç noktası |
HARNESS_MCP_OAUTH_CLIENT_ID | Hayır | mcp-client | Erişim tokeninin verilmesi gereken HarnessID istemcisi, tokenin azp talebine karşı kontrol edilir |
HARNESS_MCP_OAUTH_ACCOUNT_CLAIM | Hayır | account_id | Harness hesap kimliğini taşıyan erişim tokeni talebi, HarnessID organization kapsamı tarafından doldurulur |
HARNESS_MCP_OAUTH_SCOPES | Hayır | openid profile email organization | RFC 9728 korumalı kaynak meta verilerinde tanıtılan boşlukla ayrılmış kapsamlar |
HARNESS_FME_API_KEY | Hayır | -- | Yalnızca eski (workspace_id) modunda fme_ kaynakları için kullanılan isteğe bağlı tek kullanıcılı/kendi kendine barındırılan FME/Split Yönetici kimlik bilgisi. Eski FME, OAuth modunda kullanılamaz; bu nedenle HarnessID tokenleri asla api.split.io'ye gönderilmez; bunun yerine Harness yerel org_id+project_id kapsamını kullanın. multi-user veya oauth modunda ayarlanmamalıdır |
HARNESS_FME_BASE_URL | Hayır | https://api.split.io | Yalnızca eski (workspace_id) modunda fme_ kaynakları tarafından kullanılan Split/FME Yönetici API temel URL'si. HTTP URL'leri yerel geliştirme için HARNESS_ALLOW_HTTP=true gerektirir. Harness yerel (org_id+project_id) modu bunu yok sayar ve standart HARNESS_API_KEY/HARNESS_BASE_URL kullanır |
HARNESS_ORG | Hayır | -- | Organizasyon kimliği. Araç çağrısı başına org_id belirtilmediğinde kullanılır. Atlanırsa, org_id açıkça sağlanmalıdır. Ajanlar ayrıca harness_list(resource_type="organization") aracılığıyla organizasyonları dinamik olarak keşfedebilir |
HARNESS_PROJECT | Hayır | -- | Proje kimliği. Araç çağrısı başına project_id belirtilmediğinde kullanılır. Ajanlar ayrıca harness_list(resource_type="project") aracılığıyla projeleri dinamik olarak keşfedebilir |
HARNESS_API_TIMEOUT_MS | Hayır | 30000 | HTTP istek zaman aşımı milisaniye cinsinden |
HARNESS_MAX_RETRIES | Hayır | 3 | Geçici hatalar için yeniden deneme sayısı (429, 5xx) |
HARNESS_MAX_BODY_SIZE_MB | Hayır | 10 | http taşıması için maksimum HTTP istek gövdesi boyutu MB cinsinden |
HARNESS_RATE_LIMIT_RPS | Hayır | 10 | Harness API'lerine istemci tarafı istek sınırlaması (saniye başına istek) |
LOG_LEVEL | Hayır | info | Günlük ayrıntı düzeyi: debug, info, warn, error |
HARNESS_TOOLSETS | Hayır | (varsayılanlar) | Virgülle ayrılmış araç seti listesi. Boş, varsayılan araç setlerini yükler. Opt-in araç setlerini açıkça dahil etmek için +name ve varsayılanları kaldırmak için -name destekler (bkz. Araç Seti Filtreleme) |
HARNESS_READ_ONLY | Hayır | false | Tüm değiştirici işlemleri engelle (oluştur, güncelle, sil, çalıştır). Yalnızca listele ve getir izinlidir. Paylaşılan/demo ortamları için kullanışlıdır |
HARNESS_AUTO_APPROVE_RISK | Hayır | none | Otonom iş akışları için riske dayalı otomatik onay eşiği. Bu eşiğin altındaki veya eşit işlemler onay olmadan ilerler. Değerler: none, low_write, medium_write, high_write, all. Bkz. Elicitation |
HARNESS_SKIP_ELICITATION | Hayır | false | Kullanımdan kaldırıldı — bunun yerine HARNESS_AUTO_APPROVE_RISK=all kullanın. Geriye dönük uyumluluk için korunur |
HARNESS_ALLOW_HTTP | Hayır | false | HTTPS olmayan HARNESS_BASE_URL'e izin ver. Varsayılan olarak sunucu güvenlik için HTTPS uygular. Yalnızca TLS olmayan bir Harness örneğine karşı yerel geliştirme için true olarak ayarlayın |
HARNESS_PIPELINE_VERSION | Hayır | 0 | (Alfa) Pipeline YAML sürümü. 0, pipeline kaynak türünü yükler ve pipeline_v1'i hariç tutar; 1, pipeline_v1'ü yükler ve pipeline'ü hariç tutar. HTTP oturumları bunu başlatma sırasında x-harness-pipeline-version: 0 veya 1 ile geçersiz kılabilir |
HARNESS_MCP_ALLOWED_HOSTS | Hayır | -- | HTTP taşıma Host başlığı doğrulaması tarafından izin verilen virgülle ayrılmış ana bilgisayar adları. mcp.harness.io yerel ana bilgisayar bağlamaları için varsayılan olarak izinlidir; proxy/özel alan adlarını buraya ekleyin |
HARNESS_MCP_AUTH_TOKEN | Hayır | -- | Ayarlanırsa /mcp HTTP yollarında gerekli statik Bearer tokeni. Döngüsel olmayan tek kullanıcılı ve çok kullanıcılı bağlamalar için varsayılan olarak gereklidir. oauth modunda ayarlanmamalıdır |
HARNESS_MCP_ALLOW_UNAUTHENTICATED_HTTP | Hayır | false | Döngüsel olmayan bağlamalarda kimlik doğrulamasız HTTP taşımasına açıkça izin ver. Yalnızca başka bir kimlik doğrulamalı kontrolün arkasında kullanın |
HARNESS_MCP_TRUST_PROXY | Hayır | 0 | İstemci IP çözümlemesi için güvenilecek ters proxy / yük dengeleyici atlama sayısı (Express trust proxy). Sunucunun önündeki proxy sayısına ayarlayın, böylece IP başına hız sınırlaması gerçek istemciye değil proxy soket eşine göre anahtarlanır |
HARNESS_MCP_LOG_FILE | Hayır | ~/.claude/harness-mcp.log | stderr artık mevcut olmadığında stdio bağlantı kesilmesi/çökme teşhisi için kullanılan dosya |
HARNESS_LOG_UNSAFE_BODIES | Hayır | false | Günlüklere ham istek/yanıt gövdelerini dahil et. Gövdeler sırlar içerebileceğinden varsayılan olarak kapalıdır; yalnızca yerel hata ayıklama için etkinleştirin |
HARNESS_AUDIT_FILE | Hayır | -- | Denetim olaylarını kalıcı yerel toplama için yeni satırla ayrılmış bir JSON dosyasına ekle |
HARNESS_AUDIT_WEBHOOK_URL | Hayır | -- | Toplu denetim olaylarını alan HTTPS uç noktası. HTTP URL'leri yerel geliştirme için HARNESS_ALLOW_HTTP=true gerektirir |
HARNESS_AUDIT_WEBHOOK_TOKEN | Hayır | -- | Denetim web kancasına gönderilen isteğe bağlı taşıyıcı tokeni |
HARNESS_AUDIT_WEBHOOK_BATCH_SIZE | Hayır | 10 | Web kancası boşaltmadan önce toplanacak denetim olayı sayısı |
HARNESS_AUDIT_WEBHOOK_FLUSH_MS | Hayır | 5000 | Webhook flush öncesinde denetim olaylarının tutulabileceği maksimum süre |
OTEL_EXPORTER_OTLP_ENDPOINT | Hayır | -- | İsteğe bağlı OpenTelemetry paketleri kurulduğunda OpenTelemetry denetim span'lerini etkinleştirir |
HARNESS_SEARCH_PROVIDER | Hayır | local | Anlamsal arama arka ucu: local (süreç içi ONNX embeddings, varsayılan), remote (HTTP üzerinden harici arama servisi, çok kullanıcılı mod için gereklidir) veya none (anlamsal aramayı devre dışı bırakır, yalnızca anahtar kelime scatter-gather'a geri döner). Hava boşluklu ortamlarda veya başlangıçta model yüklemenin istenmediği durumlarda none kullanın |
HARNESS_SEARCH_SERVICE_URL | Hayır | -- | HARNESS_SEARCH_PROVIDER=remote olduğunda uzak arama servisinin temel URL'si (örn. http://search-svc:8080). remote sağlayıcısını kullanırken gereklidir |
HARNESS_SEARCH_SERVICE_HEADERS | Hayır | -- | Uzak arama servisine gönderilen her istekle birlikte gönderilen başlıkların JSON nesnesi. Her türlü kimlik doğrulama düzenini destekler: {"Authorization":"Bearer tok"}, {"x-api-key":"key"} veya birden fazla dahili servisler arası başlık |
HARNESS_HF_CACHE_DIR | Hayır | /tmp/hf-cache | local arama sağlayıcısı tarafından kullanılan @huggingface/transformers model önbelleği için dizin. Docker imajı, çalışma zamanı indirmelerini önlemek için modeli /app/.cache/hf içine önceden yükler. Üretim dağıtımlarında kalıcı bir birim yoluna ayarlayın |
HARNESS_DIAGNOSE_LOG_FETCH_CONCURRENCY | Hayır | 3 | Başarısız adımlar için günlükleri getirirken harness_diagnose tarafından başlatılan maksimum eşzamanlı log-blob indirme sayısı. Yalnızca tanılama gecikmesi log-getirme duvar saati süresi tarafından domine ediliyorsa ve pod'un bellek alanı varsa artırın |
Anlamsal Arama
harness_search, scatter-gather API çağrılarını Harness'e dağıtmadan önce daraltmak için anlamsal yönlendirme kullanır. Üç arama sağlayıcısı mevcuttur:
| Sağlayıcı | Ne zaman kullanılır |
|---|---|
local (varsayılan) | Tek kullanıcılı stdio modu. all-MiniLM-L6-v2'ü @huggingface/transformers aracılığıyla süreç içinde çalıştırır. İlk kullanımda ~23 MB model indirir; sonraki başlatmalar önbelleği kullanır. |
remote | Çok kullanıcılı HTTP modu (Harness tarafından barındırılır). Gömmeyi ve almayı harici bir arama hizmetine devreder. Kiracı izolasyonu tenant_id aracılığıyla zorunlu kılınır — statik bilgi/dokümanlar global kullanır, hesap başına varlık verileri hesap kimliğini kullanır. |
none | Anlamsal aramayı tamamen devre dışı bırakır; tüm kaynak türlerinde anahtar kelime scatter-gather'a geri döner. |
Uzak sağlayıcı yapılandırması:
HARNESS_SEARCH_PROVIDER=remote
HARNESS_SEARCH_SERVICE_URL=http://search-svc:8080
# Auth — any scheme via HARNESS_SEARCH_SERVICE_HEADERS (JSON object):
HARNESS_SEARCH_SERVICE_HEADERS='{"Authorization":"Bearer <token>"}' # standard bearer
HARNESS_SEARCH_SERVICE_HEADERS='{"x-api-key":"<key>"}' # API key header
HARNESS_SEARCH_SERVICE_HEADERS='{"x-harness-token":"<svc-token>"}' # internal service-to-service
# Multiple headers (e.g. service mesh + tenant routing):
HARNESS_SEARCH_SERVICE_HEADERS='{"x-harness-token":"<tok>","x-tenant":"<id>"}'
# No auth (service mesh / mTLS handles it):
# omit HARNESS_SEARCH_SERVICE_HEADERS entirely
Uzak sağlayıcıyı yerel olarak test etme dahil edilen stub hizmetiyle (harici bağımlılık yok):
# 1. Create a venv and install FastAPI
python3 -m venv .venv-stub
.venv-stub/bin/pip install fastapi uvicorn
# 2. Start the stub (in-memory, cosine similarity, corpus + tenant filtering)
.venv-stub/bin/uvicorn stub-search-service:app --port 8082
# 3. Build the MCP server
pnpm build
# 4. Run the integration smoke test
node test-remote-provider.mjs
# Expected output:
# available: true
# indexed 2 docs
# entity search results: pipeline:ts-test score=... corpus=entities
# knowledge search results: schema:trigger score=...
# all-corpus search results: (merged, sorted by score)
# isolation check (other-acct, should be empty): PASS
# 5. Tear down
kill $(lsof -ti :8082)
Stub (stub-search-service.py), üretim arama hizmetiyle aynı /v1/health, /v1/ingest ve /v1/search sözleşmesini uygular. Basit bir karakter torbası gömmesi kullanır, bu nedenle model indirme gerekmez — sonuçlar anlamsal olarak makuldür ancak üretim kalitesinde değildir.
HTTPS Zorunluluğu
HARNESS_BASE_URL varsayılan olarak HTTPS kullanmalıdır. HTTPS olmayan bir URL ayarlarsanız (örn. http://localhost:8080), sunucu şu hatayla başlamayı reddeder:
HARNESS_BASE_URL must use HTTPS (got "http://..."). If you need HTTP for local development, set HARNESS_ALLOW_HTTP=true.
Denetim Günlüğü
Kayıt defteri tarafından dağıtılan tüm Harness API işlemleri (list, get, create, update, delete ve execute), denetim havuzları yapılandırıldığında yapılandırılmış denetim olayları yayar. Değiştiren olaylar, bir onay bağlamı mevcut olduğunda sorgulama veya otomatik onay tarafından kullanılan onay yolunu içerir; okuma olayları şu anda onay meta verilerini atlar. Kayıt defterini atlayan yerel meta veri ve şema keşif araçları, örneğin harness_describe ve harness_schema, bu denetim akışının parçası değildir. Varsayılan olarak bir stderr havuzu kayıtlıdır ancak normal günlükçüden geçer ve LOG_LEVEL'e uyar; kalıcı denetim toplama için dosya veya webhook havuzları yapılandırın:
HARNESS_AUDIT_FILE, yerel toplama için satır sonuyla ayrılmış JSON olayları ekler.HARNESS_AUDIT_WEBHOOK_URL,{ "events": [...] }gruplarını bir HTTPS webhook'una gönderir, isteğe bağlı olarakHARNESS_AUDIT_WEBHOOK_TOKENile. Başarısız gruplar sınırlı kapasiteyle yeniden kuyruğa alınır ve araç yürütmeyi engellemek yerine bir uyarıyla sonunda atılır.OTEL_EXPORTER_OTLP_ENDPOINT, isteğe bağlı OpenTelemetry eş bağımlılıkları yüklendiğinde denetim aralıklarını etkinleştirir. Havuz, kayıtlı bir izleyici sağlayıcısı olduğunda onu yeniden kullanır, aksi takdirde bağımsız bir OTLP dışa aktarıcı başlatır.
Her olay, araç adını, kaynak türünü, işlemi, tanımlayıcıları, zaman damgasını, riski, sonucu, HTTP yöntemini/yolunu, süreyi ve uygulanabilir olduğunda onay yöntemini içerir. Denetim havuzları en iyi çaba telemetrisidir; teslimat sorunları günlüğe kaydedilir ve alttaki Harness API işlemini asla yeniden oynatmaz veya değiştirmez. OTel kurulum ayrıntıları ve aralık öznitelikleri için bkz. specs/005-otel-audit-sink.md.
Araçlar Referansı
Sunucu 11 MCP aracı sunar. Çoğu API aracı, isteğe bağlı geçersiz kılmalar olarak org_id ve project_id kabul eder — atlanırsa, HARNESS_ORG ve HARNESS_PROJECT'e geri dönerler. harness_describe yalnızca yerel meta veridir ve org/proje kapsamını kullanmaz.
URL desteği: API odaklı araçların çoğu bir url parametresi kabul eder — bir Harness UI URL'si yapıştırın ve sunucu org, proje, kaynak türü, kaynak kimliği, boru hattı kimliği ve yürütme kimliğini otomatik olarak çıkarır. harness_describe, url kabul etmez.
Kapsam desteği: Hesap/org/proje varyantlarına sahip kaynak türleri, harness_describe içinde supportedScopes sunar. Belirli bir düzeye ihtiyacınız olduğunda resource_scope iletin:
resource_scope: "account"yalnızcaaccountIdentifiergönderir.resource_scope: "org",accountIdentifierveorgIdentifiergönderir.resource_scope: "project", hesap, org ve proje tanımlayıcılarını gönderir.
Mevcut çok kapsamlı kaynaklar connector, service, environment, infrastructure, secret, file_store, template, policy ve policy_set içerir. resource_scope atlanırsa, kayıt defteri kaynağın varsayılan kapsamını ve yapılandırılmış varsayılanları kullanır; isteğe bağlı kapsam olarak işaretlenen kaynaklar, açıkça iletilmedikçe org/projeyi atlayabilir. Harness URL'leri, yol hesap düzeyinde veya proje düzeyinde bağlam içerdiğinde kapsamı otomatik olarak da ayarlayabilir.
Yapılandırılmış çıktı: Her araç bir MCP outputSchema bildirir. harness_list, liste benzeri Harness yanıtlarını nesne biçimli yapılandırılmış içeriğe normalleştirir, böylece katı istemciler bunu doğrulayabilir: üst düzey diziler { "items": [...], "total": <count>, "page": <page> } olur ve content, data, body, objects veya features gibi yaygın sarmalayıcı anahtarlar, gerektiğinde items'e yükseltilir. Metin yanıtı, tüm istemcilere döndürülen kompakt JSON yükünü hâlâ içerir.
| Araç | Açıklama |
|---|---|
harness_describe | Kullanılabilir kaynak türlerini, işlemleri ve alanları keşfedin. API çağrısı yok — yerel kayıt meta verilerini döndürür. |
harness_schema | Kaynak oluşturma/güncelleme için tam YAML/JSON Şema tanımlarını ve örnekleri getirin. Pipeline/şablon şemaları paketlenmiştir; bağlayıcı, ortam, hizmet, sır ve altyapı şemaları, paketlenmiş anlık görüntülerden veya NG /yaml-schema'den getirilen kapsam farkında varlık şemalarıdır; release_process ve release_activity şemaları RMG /api/yamlSchema'den canlı olarak getirilir. path aracılığıyla derinlemesine incelemeyi destekler. |
harness_list | Belirli bir türdeki kaynakları filtreleme, arama ve sayfalama ile listeler. |
harness_get | Tanımlayıcısına göre tek bir kaynağı alır. |
harness_create | Yeni bir kaynak oluşturur. Satır içi ve uzak (Git destekli) pipeline'ları destekler. elicitation aracılığıyla kullanıcı onayı ister. |
harness_update | Mevcut bir kaynağı günceller. Satır içi ve uzak (Git destekli) pipeline'ları destekler. elicitation aracılığıyla kullanıcı onayı ister. |
harness_delete | Bir kaynağı siler. elicitation aracılığıyla kullanıcı onayı ister. Yıkıcıdır. |
harness_execute | Bir kaynak üzerinde işlem yürütür (pipeline çalıştır/tekrar dene, Git'ten pipeline içe aktar, özellik bayrağını değiştir, uygulamayı senkronize et). elicitation aracılığıyla kullanıcı onayı ister. Pipeline çalıştırmaları için aşağıdaki çalışma zamanı girdi iş akışını kullanın (branch/tag/pr_number/commit_sha kısayol genişletmeyi destekler). |
harness_search | Tek bir sorguyla Harness kaynak türleri arasında arama yapar. Anlamsal yönlendirme kullanır (yerel all-MiniLM-L6-v2 ONNX embeddings, 384-boyutlu) — başlangıçta dizine eklenen knowledge külliyatından ilgili kaynak türlerini tahmin eder; genellikle dağıtık toplamadan önce ~163 türden 1–8'e daraltır. Anlamsal güven düşük olduğunda tam anahtar kelime dağıtık toplamaya geri döner. Yanıt, yönlendirme tetiklendiğinde semantic_routed ve types_skipped içerir. Yeni kaynak türlerini nasıl keşfedilebilir yapacağınız için docs/search-guidelines.md bölümüne bakın. |
harness_diagnose | pipeline, connector, delegate ve gitops_application kaynaklarını teşhis edin (takma adlar: execution -> pipeline, gitops_app -> gitops_application). Pipeline'lar için aşama/adım zamanlaması ve hata ayrıntılarını döndürür; bağlayıcılar/delegate'ler/GitOps uygulamaları için hedefli sağlık ve sorun giderme sinyalleri döndürür. |
harness_status | Gerçek zamanlı proje sağlık panosu alın — son yürütmeler, hata oranları ve derin bağlantılar. |
Şema Arama İş Akışı
YAML destekli kaynakları oluşturmadan veya güncellemeden önce harness_schema kullanın; böylece aracılar düz metinden tahmin etmek yerine tam alan adlarını ve kısıtlamaları kopyalayabilir.
- Paketlenmiş şemalar
pipeline,template,trigger,pipeline_v1,template_v1,inputSet_v1,overlayInputSet_v1veagent-pipelineiçerir. - Varlık şemaları
connector,environment,service,secretveinfrastructureiçerir. Kapsam farkındadırlar (account,orgveyaproject) ve seçilen kapsam gerektirdiğindeorg_id/project_idgerektirirler. - Sürüm Yönetimi tanımları (
release_process,release_activity) RMG/api/yamlSchema'den canlı JSON Şema getirir (paketlenmemiş). Organizasyon veya proje kapsamına alırkenscope,org_idveproject_idgeçirin. - Satıcı varlık anlık görüntüleri, çalışma zamanı hesabıyla eşleştiklerinde önce kullanılır; aksi takdirde araç Harness NG
/yaml-schemaAPI'sine geri döner ve sonucu önbelleğe alır. - Alan/bölüm özeti için
pathatlayın, ardından iç içe bir tanımı incelemek için nokta ile ayrılmış birpathgeçirin.
Örnekler:
{ "resource_type": "pipeline", "path": "pipeline.stages" }
{
"resource_type": "connector",
"scope": "project",
"org_id": "default",
"project_id": "payments"
}
Bakım sahipleri, Harness varlık YAML şemaları değiştiğinde satıcı varlık anlık görüntülerini pnpm sync-entity-schemas ile yenileyebilir.
Araç Örnekleri
Hangi kaynakların mevcut olduğunu keşfedin:
{ "resource_type": "pipeline" }
Hesaptaki organizasyonları listeleyin:
{ "resource_type": "organization" }
Bir organizasyondaki projeleri listeleyin:
{ "resource_type": "project", "org_id": "default" }
Bir projedeki pipeline'ları listeleyin:
{ "resource_type": "pipeline", "search_term": "deploy", "size": 10 }
Belirli bir hizmeti alın:
{ "resource_type": "service", "resource_id": "my-service-id" }
Bir pipeline çalıştırın:
{
"resource_type": "pipeline",
"action": "run",
"resource_id": "my-pipeline",
"inputs": { "tag": "v1.2.3" },
"wait": true
}
Bir özellik bayrağını değiştirin:
{
"resource_type": "feature_flag",
"action": "toggle",
"resource_id": "new_checkout_flow",
"enable": true,
"environment": "production"
}
Tüm kaynak türlerinde arama yapın:
{ "query": "payment-service" }
Bir yürütmeyi kimliğe göre teşhis edin (özet modu — varsayılan):
{ "execution_id": "abc123XYZ" }
Bir Harness URL'sinden teşhis edin:
{ "url": "https://app.harness.io/ng/account/.../pipelines/myPipeline/executions/abc123XYZ/pipeline" }
Bağlayıcı bağlantısını teşhis edin:
{ "resource_type": "connector", "resource_id": "my_github_connector" }
Delegate sağlığını teşhis edin:
{ "resource_type": "delegate", "resource_id": "delegate-us-east-1" }
Bir GitOps uygulamasını teşhis edin (seçeneklerle):
{
"resource_type": "gitops_application",
"resource_id": "checkout-app",
"options": { "agent_id": "gitops-agent-1" }
}
Bir pipeline için en son yürütme raporunu alın:
{ "pipeline_id": "my-pipeline" }
YAML ve başarısız adım günlükleriyle tam teşhis modu:
{ "execution_id": "abc123XYZ", "summary": false }
Günlükler etkinleştirilmiş özet modu (ikisinin en iyisi):
{ "execution_id": "abc123XYZ", "include_logs": true }
Proje sağlık durumunu alın:
{ "org_id": "default", "project_id": "my-project", "limit": 5 }
Geçiş türüne göre filtrelenmiş veritabanı şemalarını listeleyin:
{ "resource_type": "database_schema", "migration_type": "Liquibase" }
Bir şema için veritabanı örneklerini listeleyin:
{ "resource_type": "database_instance", "dbschema_id": "my_schema" }
Bir şema ve örnek için çözümlenmiş LLM yazma pipeline'ını alın:
{ "resource_type": "database_llm_authoring_pipeline", "resource_id": "my_schema", "dbinstance_id": "prod_db" }
Bir şema örneği için anlık görüntü nesne adlarını (örn. tablolar) listeleyin:
{
"resource_type": "database_snapshot_object",
"dbschema_id": "my_schema",
"dbinstance_id": "prod_db",
"object_type": "Table"
}
Belirli adlandırılmış nesneler için tam anlık görüntü meta verilerini alın:
{
"resource_type": "database_snapshot_object",
"resource_id": "prod_db",
"params": {
"dbschema_id": "my_schema",
"object_type": "Table",
"object_names": ["users", "orders"]
}
}
Pipeline Çalıştırma İş Akışı (Önerilen)
v0 pipeline'ları için, yürütme zamanı girdi hatalarını azaltmak için bu sırayı kullanın:
- Gerekli çalışma zamanı girdilerini keşfedin
harness_get(resource_type="runtime_input_template", resource_id="<pipeline_id>")- Döndürülen şablon, değer gerektiren
<+input>yer tutucularını gösterir.
- Girdi stratejisini seçin
-
Basit değişkenler: düz anahtar-değer
inputsgeçirin (örneğin{"branch":"main","env":"prod"}). -
Karmaşık/yapısal girdiler:
input_set_idskullanın (CI kod tabanı/derleme blokları ve iç içe şablon girdileri en iyi bu şekilde işlenir). -
CI kod tabanı kısayol anahtarları (yalnızca pipeline çalıştırma):
Kısayol anahtarı Genişletilmiş yapı branchbuild.type=branch,build.spec.branch=<value>tagbuild.type=tag,build.spec.tag=<value>pr_numberbuild.type=PR,build.spec.number=<value>commit_shabuild.type=commitSha,build.spec.commitSha=<value> -
Kısıtlama:
inputs.buildzaten mevcut olduğunda kısayol genişletme atlanır (açıkbuildkazanır).
- Çalıştırmayı yürütün
-
harness_execute(resource_type="pipeline", action="run", resource_id="<pipeline_id>", ...) -
YAML'si varsayılan olmayan bir daldan yüklenmesi gereken Git destekli pipeline'lar için
params.pipeline_branchgeçirin (Harness'ebrancholarak gönderilir). Bu açık tanım seçici,params.branchtakma adına göre önceliklidir.inputs.branchbağımsız olarak CI kod tabanı dalını seçer:{ "resource_type": "pipeline", "action": "run", "resource_id": "deploy_app", "params": { "pipeline_branch": "feature/new-stage" }, "inputs": { "branch": "main" }, "wait": true }
- İsteğe bağlı: her ikisini birleştirin
- Temel şekil için
input_set_idsve basit geçersiz kılmalar içininputskullanın.
v1 pipeline'ları için:
harness_get(resource_type="runtime_input_template_v1", resource_id="<pipeline_id>")getirin. Git destekli pipeline'lar içinbranch_name,connector_refverepo_namedeğerleriniparamsaracılığıyla geçirin.- Döndürülen her
inputs[].details.namedeğeriniharness_execute.inputsiçinde üst düzey anahtar olarak kullanın. harness_execute(resource_type="pipeline_v1", action="run", resource_id="<pipeline_id>", inputs={...})çalıştırın. Sunucu bu değerleri birinputs:YAML kökü altında sarar ve API'nininputs_yamlgövdesini gönderir. Gerekli alanlar çözümlenemezse, araç beklenen anahtarlar ve önerilen girdi kümeleriyle birlikte bir ön uçuş hatası döndürür. Mevcut kısayol eşlemeleriniharness_describe(resource_type="pipeline")(executeActions.run.inputShorthands) ile inceleyebilirsiniz.
Dinamik Pipeline Yürütme
Bir aracı veya harici sistem, çalışma zamanında tam v0 pipeline YAML'ını ürettiğinde ve bunu mevcut bir Harness pipeline kabuğuna karşı çalıştırması gerektiğinde pipeline_dynamic_execution.run kullanın. Bu, normal pipeline.run işleminin yerine geçmez: kaydedilmiş v0 pipeline zaten mevcut olmalı, hesap düzeyinde ve pipeline düzeyinde Allow Dynamic Execution etkinleştirilmiş olmalı ve çağıranın pipeline üzerinde Düzenleme ve Yürütme izinlerine sahip olması gerekir.
{
"resource_type": "pipeline_dynamic_execution",
"action": "run",
"resource_id": "deploy_app",
"body": {
"yaml": "pipeline:\n identifier: deploy_app\n name: Deploy App\n stages: []"
},
"params": {
"module_type": "CD",
"notes": "agent-generated dynamic run",
"notify_only_user": true
}
}
Kısıtlamalar:
body, biryamlalanına sahip bir nesne olmalıdır. Ham dize gövdeleri, genelharness_executeşeması tarafından reddedilir.body.yamlbir YAML dizesi veya bir JSON pipeline nesnesi olabilir; istekten önce JSON, YAML'a serileştirilir.- Çalışma zamanı
<+input>yer tutucuları bu API tarafından çözümlenmez. Tamamen çözümlenmiş YAML gönderin. - Girdi kümeleri, seçici aşama yürütme, yeniden deneme ve tetikleyiciler dinamik yürütme uç noktası tarafından desteklenmez.
- Eylem
high_writeşeklindedir ve normal onay/otomatik onay yolunu kullanır. Yanıt, API zarfını{ "execution_id": "...", "status": "..." }projeksiyonuna yansıtır ve kapsam verileri mevcut olduğunda biropenInHarnessyürütme bağlantısı içerir.
Harness çalıştırmayı etkin değil olarak reddederse, hem hesap düzeyindeki Allow Dynamic Execution ayarını hem de Pipeline -> Advanced Options -> Dynamic Execution Settings altındaki pipeline düzeyindeki anahtarı kontrol edin.
Yürütme Girdi Analizi
Bir çalıştırmadan sonra belirli bir yürütmeyi üreten birleştirilmiş girdi YAML'ını incelemek için execution_inputs kullanın. Bu, bir hata girdi kümesi birleştirmeye, Git destekli girdi kümesi dallarına veya yürütme sayfasından yeniden oluşturulması zor olan tetikleyici/çalışma zamanı değerlerine bağlı olduğunda kullanışlıdır.
{
"resource_type": "execution_inputs",
"resource_id": "PLAN_EXECUTION_ID",
"params": {
"resolve_expressions": true,
"resolve_expressions_type": "RESOLVE_ALL_EXPRESSIONS"
}
}
Get yanıtı şunlara yansıtılır:
executionId-resource_idkaynaklı plan yürütme kimliği.inputSetYaml- çalıştırma için kullanılan birleştirilmiş çalışma zamanı girdi YAML'ı veyanull.inputSetTemplateYaml- yürütme sırasındaki girdi şablonu veyanull.resolvedYaml-resolve_expressions=trueolduğunda ifade çözümlenmiş YAML, aksi takdirde genelliklenull.inputSetDetails- katkıda bulunan kayıtlı girdi kümeleri{ identifier, name }çiftleri olarak.inputSetBranchName- Git destekli girdi kümeleri için kaynak dal veyanull.
execution_inputs yalnızca get amaçlıdır ve okuma riski taşır. resolve_expressions atlanırsa, sunucu API sorgu parametrelerini atlar ve Harness varsayılan UNKNOWN çözümleme modunu kullanır.
Pipeline Yürütme Bekleme Modu
pipeline.run, pipeline.retry ve pipeline_v1.run için, sunucunun yürütme terminal durumuna ulaşana kadar yoklamasını sağlamak üzere wait: true değerini iletin. Bu, istemcinin veya LLM'nin bir yoklama döngüsü çalıştırmasını istemek yerine bir pipeline başlatma ve durum kontrolünü tek bir araç çağrısında tutar.
{
"resource_type": "pipeline",
"action": "run",
"resource_id": "deploy_app",
"inputs": { "branch": "main" },
"wait": true,
"wait_timeout_seconds": 900,
"wait_poll_interval_seconds": 5
}
Bekleme modu davranışı:
- Varsayılan zaman aşımı 600 saniyedir; izin verilen aralık 10 saniye ile 7200 saniye arasındadır.
- İlk yoklama aralığı varsayılan olarak 3 saniyedir, 1,5 kat geri çekilir ve 30 saniyede sınırlanır.
- Başarı veya hata durumunda, yanıt
execution_id,execution_status,execution_terminal,execution_elapsed_msveexecution_poll_countgibi alanları içerir. - Zaman aşımı tetiklenirse, orijinal tetikleyici yine de başarılı olmuştur; yanıt, son gözlemlenen durumla birlikte
execution_timed_out: trueve_wait.hintiçerir. - Tetikleyici başarılı olduktan sonra yoklama başarısız olursa, yanıt
_wait.errorve bir yeniden kontrol ipucu içerir. İlk yürütmenin çalışmadığını onaylamadığınız sürece pipeline'ı körü körüne yeniden çalıştırmayın. - Başarısız terminal durumları,
harness_diagnose(resource_type="execution", options={execution_id: "..."})işaret eden_diagnose_hintiçerir.
AI DevOps Agent'ten bir pipeline oluşturmasını isteyin:
{
"prompt": "Create a pipeline that builds a Go app with Docker and deploys to Kubernetes",
"action": "CREATE_PIPELINE"
}
Doğal dil ile bir hizmeti güncelleyin:
{
"prompt": "Add a sidecar container for logging",
"action": "UPDATE_SERVICE",
"conversation_id": "prev-conversation-id",
"context": [{ "type": "yaml", "payload": "<existing service YAML>" }]
}
Pipeline Depolama Modları
Harness pipeline'ları üç şekilde saklanabilir:
| Mod | Açıklama | Ne zaman kullanılır |
|---|---|---|
| Satır İçi | Pipeline YAML'ı Harness'te saklanır | Varsayılan. En basit kurulum, Git gerektirmez. |
| Uzak (Harici Git) | Pipeline YAML'ı GitHub, GitLab, Bitbucket vb. içinde saklanır. | Harici bir sağlayıcıyla Git destekli pipeline-as-code kullanan ekipler. |
| Uzak (Harness Code) | Pipeline YAML'ı bir Harness Code deposunda saklanır | Harness'in yerleşik Git barındırmasını kullanan ekipler. |
Satır içi bir pipeline oluşturun (varsayılan):
// harness_create
{
"resource_type": "pipeline",
"body": {
"yamlPipeline": "pipeline:\n name: My Pipeline\n identifier: my_pipeline\n stages:\n - stage:\n name: Build\n type: CI\n spec:\n execution:\n steps:\n - step:\n type: Run\n name: Echo\n spec:\n command: echo hello"
}
}
Uzak bir pipeline oluşturun (Harici Git — örn. GitHub):
// harness_create
{
"resource_type": "pipeline",
"body": {
"yamlPipeline": "pipeline:\n name: Deploy Service\n identifier: deploy_service\n stages: []"
},
"params": {
"store_type": "REMOTE",
"connector_ref": "my_github_connector",
"repo_name": "my-repo",
"branch": "main",
"file_path": ".harness/deploy-service.yaml",
"commit_msg": "Add deploy pipeline via MCP"
}
}
Uzak bir pipeline oluşturun (Harness Code — bağlayıcı gerekmez):
// harness_create
{
"resource_type": "pipeline",
"body": {
"yamlPipeline": "pipeline:\n name: Build App\n identifier: build_app\n stages: []"
},
"params": {
"store_type": "REMOTE",
"is_harness_code_repo": true,
"repo_name": "product-management",
"branch": "main",
"file_path": ".harness/build-app.yaml",
"commit_msg": "Add build pipeline via MCP"
}
}
Uzak bir pipeline'ı güncelleyin:
// harness_update
{
"resource_type": "pipeline",
"resource_id": "deploy_service",
"body": {
"yamlPipeline": "pipeline:\n name: Deploy Service\n identifier: deploy_service\n stages:\n - stage:\n name: Deploy\n type: Deployment"
},
"params": {
"store_type": "REMOTE",
"connector_ref": "my_github_connector",
"repo_name": "my-repo",
"branch": "main",
"file_path": ".harness/deploy-service.yaml",
"commit_msg": "Update deploy pipeline via MCP",
"last_object_id": "abc123",
"last_commit_id": "def456"
}
}
Harici bir Git deposundan bir pipeline içe aktarın:
// harness_execute
{
"resource_type": "pipeline",
"action": "import",
"params": {
"connector_ref": "my_github_connector",
"repo_name": "my-repo",
"branch": "main",
"file_path": ".harness/existing-pipeline.yaml"
},
"body": {
"pipeline_name": "Existing Pipeline",
"pipeline_description": "Imported from GitHub"
}
}
Bir Harness Code deposundan bir pipeline içe aktarın:
// harness_execute
{
"resource_type": "pipeline",
"action": "import",
"params": {
"is_harness_code_repo": true,
"repo_name": "product-management",
"branch": "main",
"file_path": ".harness/existing-pipeline.yaml"
},
"body": {
"pipeline_name": "Existing Pipeline"
}
}
Bir bağlayıcı oluşturun:
{
"resource_type": "connector",
"body": { "connector": { "name": "My Docker Hub", "identifier": "my_docker", "type": "DockerRegistry" } }
}
Bir tetikleyiciyi silin:
{
"resource_type": "trigger",
"resource_id": "nightly-trigger",
"pipeline_id": "my-pipeline"
}
Bir pipeline için girdi kümelerini listeleyin:
{
"resource_type": "input_set",
"pipeline_id": "my-pipeline"
}
Belirli bir girdi kümesini alın:
{
"resource_type": "input_set",
"resource_id": "prod-inputs",
"pipeline_id": "my-pipeline"
}
Bir girdi kümesi oluşturun:
{
"resource_type": "input_set",
"pipeline_id": "my-pipeline",
"body": "inputSet:\n name: Production Inputs\n identifier: prod_inputs\n pipeline:\n identifier: my-pipeline\n variables:\n - name: env\n type: String\n value: production"
}
Bir girdi kümesini güncelleyin:
{
"resource_type": "input_set",
"resource_id": "prod_inputs",
"pipeline_id": "my-pipeline",
"body": "inputSet:\n name: Production Inputs\n identifier: prod_inputs\n pipeline:\n identifier: my-pipeline\n variables:\n - name: env\n type: String\n value: production\n - name: replicas\n type: String\n value: \"3\""
}
Bir girdi kümesini silin:
{
"resource_type": "input_set",
"resource_id": "prod_inputs",
"pipeline_id": "my-pipeline"
}
Kaynak Türleri
41 araç setinde düzenlenmiş 255 kaynak türü. Her kaynak türü, bir CRUD işlemleri alt kümesini ve isteğe bağlı yürütme eylemlerini destekler.
Platform
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
organization | x | x | x | x | x | |
project | x | x | x | x | x |
Pipeline'lar
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
pipeline | x | x | x | x | x | run, retry |
pipeline_v1 (Alfa) | x | x | x | x | x | run |
pipeline_dynamic_execution | run | |||||
execution | x | x | interrupt | |||
execution_inputs | x | |||||
trigger | x | x | x | x | x | |
pipeline_summary | x | |||||
input_set | x | x | x | x | x | |
runtime_input_template | x | |||||
runtime_input_template_v1 | x | |||||
pipeline_resolved_yaml | x | |||||
approval_instance | x | approve, reject |
Her iki pipeline YAML kaynak türü de pipelines araç seti etkinleştirildiğinde kullanılabilir. HARNESS_PIPELINE_VERSION ve HTTP x-harness-pipeline-version başlatma başlığı varsayılan sürüm tercihini seçer; diğer sürümü gizlemezler.
AI Aracıları
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
agent | x | x | x | x | x | |
agent_run | x |
Hizmetler
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
service | x | x | x | x | x |
Ortamlar
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
environment | x | x | x | x | x | move_configs |
Bağlayıcılar
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
connector | x | x | x | x | x | test_connection |
connector_catalogue | x |
Altyapı
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
infrastructure | x | x | x | x | x | move_configs |
Sırlar
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
secret | x | x |
Yürütme Günlükleri
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
execution_log | x |
Denetim İzleri
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
audit_event | x | x |
Delegeler
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
delegate | x | x | ||||
delegate_token | x | x | x | x | revoke, get_delegates |
Kod Depoları
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Yürütme Eylemleri |
|---|---|---|---|---|---|---|
repository | x | x | x | x | ||
branch | x | x | x | x | ||
commit | x | x | x | diff, diff_stats | ||
file_content | x | x | blame | |||
tag | x | x | x | |||
repo_rule | x | x | ||||
space_rule | x | x |
commit oluşturma, kopyalama yapmadan Harness Code API aracılığıyla doğrudan bir veya daha fazla dosya eylemi işler. body.title, body.branch ve body.actions değerlerini iletin; her eylem CREATE, UPDATE, DELETE veya MOVE şeklindedir ve UPDATE geçerli blob SHA'sını gerektirir.
file_content listesi, bir referanstaki her yolu döndürür; get, dosya veya dizin içeriğini döndürür (depo kökü için path değerini atlayın veya boş iletin; iç içe yollar eğik çizgileri korur). Depo varsayılan dalını kullanmak için git_ref değerini atlayın — main değerini tahmin etmeyin.
Yapıt Kayıt Defterleri
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
registry | x | x | ||||
artifact | x | |||||
artifact_version | x | |||||
artifact_file | x |
Dosya Deposu
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
file_store | x | x | x | x | x | list_children |
file_store, genel araçlar aracılığıyla Harness Dosya Deposu dosyalarını ve klasörlerini yönetir. Hesap, organizasyon ve proje kapsamını destekler; sunucunun kapsamı ve kimlikleri türetebilmesi için resource_scope="account"|"org"|"project" değerini iletin veya bir Harness Dosya Deposu URL'sini yapıştırın.
Yaygın çağrılar:
# List the account-level File Store.
harness_list(resource_type="file_store", resource_scope="account")
# Create a folder at the current scope root.
harness_create(resource_type="file_store", body={
name: "scripts",
type: "FOLDER",
parent_identifier: "Root"
})
# Upload a UTF-8 script file. Use content_base64 instead for binary data.
harness_create(resource_type="file_store", body={
name: "deploy.sh",
type: "FILE",
parent_identifier: "Root",
content: "#!/usr/bin/env bash\n./deploy",
mime_type: "text/x-shellscript",
file_usage: "SCRIPT"
})
# Rename metadata without replacing file content.
harness_update(resource_type="file_store", resource_id="deploy_script", body={
name: "deploy-prod.sh",
type: "FILE",
parent_identifier: "Root"
})
# List first-level children of a folder. This is a read-risk execute action.
harness_execute(resource_type="file_store", action="list_children",
resource_id="scripts_folder", params={folder_name: "scripts"})
Çok parçalı gövde kısıtlamaları:
- Oluştur/güncelle JSON
bodykabul eder, ardından/ng/api/file-storeiçinmultipart/form-databiçimine dönüştürür. name,type(FILEveyaFOLDER) veparent_identifiergereklidir; seçilen kapsamın kökü için yalnızca"Root"değişmez değerini kullanın.FILEoluşturma,content(UTF-8 dizesi) veyacontent_base64(geçerli boş olmayan base64) öğelerinden tam olarak birini gerektirir.FILEgüncelleme, yalnızca meta veri güncellemeleri için içeriği atlayabilir veya içeriği değiştirmek için tam olarak bir içerik alanı sağlayabilir.FOLDERoluşturma/güncelleme,contentvecontent_base64öğelerini atlamalıdır.- İsteğe bağlı
file_usage,MANIFEST_FILE,CONFIGveyaSCRIPTolmalıdır;description,mime_type,pathvetagsgibi isteğe bağlı skaler meta veriler dizeler olmalıdır. - Yükleme içeriği 100 MB ile sınırlıdır. Onay istemleri, talep öncesinde
content,content_base64vecontentBase64önizlemelerini gizler.
list_children kısa gösterimi (resource_id artı params.folder_name veya params.file_store_id/params.folder_identifier artı params.folder_name) veya identifier, name ve type: "FOLDER" içeren tam bir FileStoreNode body kabul eder. Tam gövdeler Harness camelCase parentIdentifier kullanır; kısa gösterim params.parent_identifier kullanabilir.
Şablonlar
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
template | x | x | x | x | x |
Şablon işlemleri Harness Şablon hizmet yollarını (/template/api/templates...) kullanır. Oluşturma ve güncelleme, body.template_yaml veya body.yaml içinde tam şablon YAML dizesini gerektirir; version_label, güncelleme/silme için belirli bir sürümü hedeflerken, version_label olmadan silme tüm sürümleri siler.
Panolar
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
dashboard | x | x | ||||
dashboard_data | x |
Veritabanı DevOps
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
database_schema | x | x | x | x | x | |
database_instance | x | x | x | x | x | |
database_snapshot_object | x | x | ||||
database_llm_authoring_pipeline | x |
Altyapı Olarak Kod Yönetimi (IaCM)
IaCM kaynakları varsayılan olarak etkindir ve çoğunlukla proje kapsamlıdır. Çalışma alanı tanımlayıcılarını bulmak için iacm_workspace ile başlayın, ardından çalışma alanı kaynakları, maliyetler ve etkinlik farkları için bu workspace_id değerini kullanın. Hesap, organizasyon veya proje kapsamında yeniden kullanılabilir değişken setleri için iacm_variable_set kullanın. Sağlayıcı kayıt defteri hesap kapsamlıdır.
iacm_module, hesap, organizasyon ve proje kapsamını kapsar. Varsayılan olarak hesap kayıt defterini kullanır; her işlem (listele, getir, oluştur, güncelle) aynı scope_org / scope_project sorgu parametrelerini gönderir; böylece oluşturduğunuz bir modül, oluşturduğunuz kapsamda keşfedilebilir. Kapsamı resource_scope="account" | "org" | "project" artı org_id/project_id ile seçin. Kapsam belirleme isteğe bağlıdır: resource_scope atlandığında, org_id/project_id yalnızca açıkça iletirseniz uygulanır — yapılandırılmış HARNESS_ORG/HARNESS_PROJECT varsayılanları uygulanmaz; bu nedenle ortam proje yapılandırması, bir hesap modülünü sessizce bir proje altında kaydedemez. Bir modül gövdesinin kendi org/project alanları Git bağlayıcısını bulur ve bu görünürlük kapsamıyla ilgisizdir.
iacm_workspace oluşturma/güncelleme yalnızca { policy_evaluation } döndürür — çalışma alanını getirmek için harness_get ile devam edin. iacm_variable_set ve iacm_module oluşturma/güncelleme kaynağın kendisini döndürür. iacm_provider oluşturma yalnızca { id } döndürür — harness_get ile devam edin; güncelleme yalnızca sürüm odaklıdır (POST/PUT /providers/{id}/version) — meta veri PUT'u yoktur. Sürüm yazmaları boş bir gövde döndürebilir; HarnessClient bunu { status: "SUCCESS", message: "No content" } olarak normalleştirir.
Değişken seti güncellemesi, tam değiştirme koleksiyonlarıyla HTTP PUT'tur — önce her zaman harness_get yapın, ardından tam istenen gövdeyi PUT ile gönderin (terraform_variables / environment_variables güncellemede gereklidir; bağlayıcıları ve değişken dosyalarını temizlemek için atlayın/boşaltın). Modül güncellemesi de PUT'tur — isteğe bağlı alanlar için get-then-put tercih edin. Yazmalar medium_write ve onay gerektirir (elicitation veya confirm: true).
Değişken seti ve sağlayıcı kayıt defteri RBAC (iac_variableset_*, iac_providerregistry_*) şu anda Harness'te Deneyseldir — iac-server zorunlu kılmayı etkinleştirene kadar erişim kontrolleri her zaman izin verir. Modül kayıt defteri RBAC (iac_registry_view / iac_registry_edit) Aktif ve zorunlu kılınabilir. MCP, çağıranın PAT/SAT değerini her zaman değiştirmeden iletir.
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
iacm_workspace | x | x | x | x | ||
iacm_variable_set | x | x | x | x | ||
iacm_resource | x | |||||
iacm_module | x | x | x | x | ||
iacm_provider | x | x | x | x | ||
iacm_workspace_costs | x | |||||
iacm_activity_resource_change | x |
Tipik iş akışı:
- Çalışma alanını bulmak için
harness_list(resource_type="iacm_workspace", org_id="...", project_id="..."). - Sıfırdan veya bir şablondan (
associated_template) oluşturmak veya mevcut bir çalışma alanını güncellemek içiniacm_workspaceüzerindeharness_create/harness_update— yanıt yalnızca{ policy_evaluation }içerir. - Oluşturulan/güncellenen çalışma alanını getirmek için
harness_get(resource_type="iacm_workspace", workspace_id="..."). - Yeniden kullanılabilir Terraform/env değişken setleri için
iacm_variable_setüzerindeharness_list/harness_create/harness_update(isteğe bağlı olarakresource_scopeile) — yanıt VariableSet kaynağıdır. - Modül kayıt defteri için
iacm_moduleüzerindeharness_list/harness_create/harness_update(name+systemgereklidir; organizasyon veya proje kapsamlı bir modül içinorg_id/project_idileresource_scopeekleyin) — yanıt modül kaynağıdır. - Hesap sağlayıcı kayıt defteri için
iacm_providerüzerindeharness_list/harness_create/harness_update(oluşturma içinbody.typegereklidir; oluşturma yalnızca{ id }döndürür — ardındanharness_get; güncelleme yalnızca sürümler oluşturur/günceller) — sürüm güncellemesi boş başarı döndürebilir. - Terraform kaynaklarını, çıktılarını ve veri kaynaklarını incelemek için
harness_list(resource_type="iacm_resource", org_id="...", project_id="...", workspace_id="..."). - Yürütme başına maliyet girişlerini gözden geçirmek için
harness_list(resource_type="iacm_workspace_costs", org_id="...", project_id="...", workspace_id="..."). - Bir plan, uygulama veya yok etme etkinliği için önceki/sonraki kaynak farklarını incelemek üzere
harness_list(resource_type="iacm_activity_resource_change", org_id="...", project_id="...", activity_id="...", workspace_id="...").
IaCM liste yanıtları, page_count değerini yalnızca geçerli sayfa için sayı olarak gösterir (sayfalanmayan iacm_variable_set hariç). has_more doğru olduğunda, sonraki 1 tabanlı sayfayı istemeye devam edin ve toplam gerekiyorsa sayfa sayılarını toplayın.
Dahili Geliştirici Portalı (IDP)
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
idp_entity | x | x | ||||
scorecard | x | x | ||||
scorecard_check | x | x | ||||
scorecard_stats | x | |||||
scorecard_check_stats | x | |||||
idp_score | x | x | ||||
idp_workflow | x | execute | ||||
idp_tech_doc | x |
Çekme İstekleri
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
pull_request | x | x | x | x | close, merge | |
pr_reviewer | x | x | submit_review | |||
pr_comment | x | x | x | |||
pr_check | x | |||||
pr_activity | x |
Açık bir kapatma işlemi için harness_execute(resource_type="pull_request", action="close", ...) kullanın. harness_update ayrıca body.state (open veya closed) kabul eder ve durum değişikliklerini özel Harness Code PR durum uç noktasına yönlendirir; başlık/açıklama düzenlemelerini ayrı bir güncelleme çağrısında gönderin.
PR yorumlarını okumak için harness_list(resource_type="pr_activity", filters={type: ["comment", "code-comment"]}, ...) kullanın. Yorum yazma işlemleri için pr_comment kullanın.
Sürüm Yönetimi
Sürüm Yönetimi (RMG) kaynakları varsayılan olarak etkindir. Tanım kaynakları (release_process, release_activity), body.yaml ile listele/getir/oluştur/güncelle/sil destekler; oluşturma/güncelleme öncesinde harness_schema(resource_type="release_process"|"release_activity") çağırın. Yürütme kaynakları çalışan sürümleri izler — çoğu liste işlemi release_id gerektirir (harness_list resource_type=release'ten UUID veya identifier-1.0.0-abc gibi UI URL slug'ı). harness_list içine bir RMG sürüm URL'si yapıştırarak release_id otomatik doldurun.
RMG çağrıları, Harness-Account başlığı aracılığıyla hesap kapsamıyla ${HARNESS_BASE_URL}/gateway/rmg kullanır. Organizasyon/proje kapsamı, org_id/project_id sağlandığında başlık tabanlı kapsam kullanır. release_execution_phase yalnızca listeleme amaçlıdır — faz giriş/çıkış kaynaklarında harness_get çağrılırken her faz öğesinin identifier alanını params.phase_identifier olarak kullanın (release_execution_phase üzerinde harness_get çağırmayın). Sürüm listesi status filtrelemesi yalnızca geçerli sayfada istemci tarafında uygulanır; sonuçlar birden fazla sayfaya yayılabileceğinde aynı filtrelerle sayfalamaya devam edin.
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Çalıştır |
|---|---|---|---|---|---|---|
release_process | x | x | x | x | x | |
release_activity | x | x | x | x | x | |
release | x | x | ||||
release_execution_phase | x | |||||
release_execution_task | x | |||||
release_execution_activity | x | |||||
release_input | x | |||||
release_execution_phase_input | x | |||||
release_execution_phase_output | x | |||||
release_execution_activity_input | x | |||||
release_execution_activity_output | x |
Tipik iş akışı:
- Orkestrasyon süreç tanımlarını keşfetmek için
harness_list(resource_type="release_process", org_id="...", project_id="...")kullanın. - Oluşturma/güncelleme öncesinde
harness_schema(resource_type="release_process")(veyarelease_activity) kullanın; ardındanbody.yamlileharness_create/harness_updateçağrısı yapın. - Aktif veya yakın tarihli sürümleri bulmak için
harness_list(resource_type="release", org_id="...", project_id="...")kullanın (varsayılan 30 günlük geriye dönük bakış; isteğe bağlıfilters.status,filters.search_term,filters.days_back). - Sürüm ayrıntıları için
harness_get(resource_type="release", release_id="...")kullanın. - Aşama durumu için
harness_list(resource_type="release_execution_phase", filters={ release_id: "..." })kullanın;release_execution_taskverelease_execution_activityiçin aynırelease_idgeçerlidir. release_input,release_execution_phase_input,release_execution_phase_output,release_execution_activity_outputveyarelease_execution_activity_inputüzerinde, her kaynakta belgelendiği şekilderelease_idartıparams.phase_identifier/params.activity_identifier/activity_execution_idkullanarakharness_getçağrısı yapın.
Vibe
Varsayılan olarak etkin olan vibe araç seti, ${HARNESS_BASE_URL}/vibe/v1 altındaki Vibe Orchestrator BFF sözleşmesini kapsar. Mevcut Harness bağlantısını ve hesap başlığını kullanır; istek gövdelerine hesap/kuruluş/proje sorgu parametreleri veya kapsam alanları eklemez. Ekip, Vibe akışını Harness API anahtarı kimlik doğrulaması (PAT/SAT) kullanarak doğruladı; bu nedenle varsayılan oturumlar için herhangi bir devre dışı bırakma ayarı gerekmez. Düzenlenmiş OpenAPI belgeleri, taşıyıcı/oturum kimlik doğrulamasını belgeler; sunucunun OAuth modu, mevcut oturumun taşıyıcı belirtecini iletir. Otomatik regresyonlar her iki başlık yolunu da doğrular; ağ geçidi kimlik doğrulaması, hedef ortamın yapılandırmasına tabidir.
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Çalıştır |
|---|---|---|---|---|---|---|
vibe_project | x | prepare, deploy | ||||
vibe_app_lifecycle | x | events |
API iki alım yolunu destekler. Bu API'ye özgü istek şekillerini koruyun:
| Kodlama ajanına sunulan kaynak | API akışı |
|---|---|
| GitHub deposu bağlantısı/bağlayıcısı | resource_type="vibe_project" ve body.mode ile birlikte moda özgü alanlar ve harness_create kullanın. Sözleşme, github_link ve github_connector adlarını belirtir ancak URL, dal veya bağlayıcı alan şekillerini tanımlamaz; bu alanlar, bir eşleme icat edilmeden arka uca iletilir. |
| ZIP dosyası | Uygulama adı ve dosya meta verileriyle prepare çağrısı yapın, baytları döndürülen imzalı hedefe yükleyin, ardından deploy çağrısı yapın. |
| Yerel kaynak dizini | Kodlama ajanı, amaçlanan çalışma alanı kaynağını yerel olarak bir ZIP'e arşivler ve ardından ZIP akışını izler. Yerel bir yol veya konuşma bağlamı, API tarafından desteklenen bir kaynak yüklemesi değildir. |
Bir dizini paketlerken, oluşturmak için gereken kaynağı, bildirimleri, kilit dosyalarını, yapılandırmayı ve amaçlanan kaydedilmemiş düzenlemeleri ekleyin. Kimlik bilgilerini, .git öğesini, yüklü bağımlılıkları ve oluşturulan yapıtları hariç tutun. Paketleme ve imzalı yükleme, dosyaların erişilebilir olduğu yerde gerçekleşir; barındırılan bir MCP sunucusu, kodlama ajanının yerel dizinini okuyamaz.
Mevcut bir ZIP için yüklemeyi hazırlayın:
{
"resource_type": "vibe_project",
"action": "prepare",
"body": {
"name": "demo-app",
"file": {
"path": "app.zip",
"size_bytes": 12345,
"content_type": "application/zip"
}
}
}
Bunu harness_execute öğesine iletin. Boyut, gerçek ZIP'i tanımlamalıdır; size_bytes, content_type ve md5 isteğe bağlıdır ve null olabilir. Ek hazırlık alanları, OpenAPI tarafından izin verildiği şekilde arka uç doğrulaması için korunur. Hazırlık, her dosyanın uploadUrl, method, headers ve expiresAt değerleri dahil olmak üzere projectId, sourceId ve upload döndürür. Dosya baytlarını doğrudan bu imzalı URL, yöntem ve başlıkları kullanarak yükleyin; URL'yi tam olarak koruyun ve depolama isteğine Harness kimlik bilgileri eklemeyin. Hazırlama eylemi yerel dosyaları okumaz veya yüklemez.
Başarılı bir yüklemeden sonra açıkça dağıtın:
{
"resource_type": "vibe_project",
"action": "deploy",
"resource_id": "<projectId returned by prepare>"
}
JSON içe aktarmaları için döndürülen id değerini bunun yerine kullanın. Dağıtım ayrıca body: {"project_id": "<Vibe app id>"} veya params.app_id kabul eder; API tel alanı, hazırlık camelCase projectId döndürse bile snake_case project_id biçimindedir. Genel aracın üst düzey project_id alanı bir Harness kapsam tanımlayıcısıdır ve asla Vibe uygulama kimliği olarak kullanılmaz. İçe aktarma ve hazırlama, uygulamayı/kaynağı oluşturur; hiçbiri dağıtımı başlatmaz. Yazma işlemleri otomatik olarak yeniden denenmez ve dağıtım, mevcut yüksek riskli onay politikasını kullanır.
İlerlemeyi harness_get(resource_type="vibe_app_lifecycle", resource_id="<Vibe app id>") ile okuyun. Uygulama URL'lerini, yürütme aşamalarını, alt adımları, hataları, günlük satırlarını ve derleme analizörü ayrıntılarını korur. events eylem eylemi, resource_id veya params.app_id kabul eder ve SSE uç noktasını sonlu bir toplu iş olarak tüketir: bağlantıdan sonra en fazla 20 JSON olayı veya beş saniye, 1 MiB yanıt sınırıyla. Bu sınırlar Vibe uç noktasına aittir. Bağlantının HARNESS_API_TIMEOUT_MS öğesi ayrıca bağlantı ve akış tüketimini birlikte sınırlar; süre sonu bir zaman aşımı hatası döndürür. Tamamlanan bir toplu iş, events ve stop_reason (end, event_limit veya duration_limit) döndürür ve akışı kapatır. Ne ilk bağlantı hataları ne de kesilen akışlar yeniden denenir. Olaylar, belgelenmiş bir yürütme imleci olmayan geçici farklardır; yetkili bir anlık görüntü için yaşam döngüsü getirme işlemini kullanın. Her iki yaşam döngüsü okuması da salt okunur modda kullanılabilir.
Özellik Bayrakları
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Çalıştır |
|---|---|---|---|---|---|---|
fme_workspace | x | |||||
fme_environment | x | x | x | x | x | |
fme_feature_flag | x | x | x | x | x | kill, restore, reallocate, archive, unarchive |
fme_feature_flag_definition | x | x | x | x | x | kill, restore, reallocate |
fme_rollout_status | x | |||||
fme_rule_based_segment | x | x | x | x | ||
fme_rule_based_segment_definition | x | x | enable, disable, change_request | |||
fme_traffic_type | x | |||||
fme_identity | x | x | ||||
fme_standard_segment | x | x | ||||
fme_segment_keys | x | x | ||||
fme_segment | x | x | x | x | x | |
fme_segment_definition | x | x | x | x | x | list_keys, add_keys, remove_keys |
fme_metric | x | x | x | x | x | |
fme_event_type | x | x |
FME (Split.io) kaynakları — fme_* kaynakları çift modlu kapsamlamayı destekler: eski çağrılar workspace_id iletir ve Split.io API'sine (api.split.io) isabet eder; daha yeni çağrılar org_id+project_id birlikte iletir ve Harness yerel uç noktalarına (standart HARNESS_API_KEY/HARNESS_BASE_URL, diğer tüm harness_* kaynaklarıyla aynı kimlik doğrulama) isabet eder. Aynı çağrıda hem workspace_id hem de org_id/project_id iletmek veya org_id ile yalnızca project_id karıştırmak bir hatadır — çağrı başına bir mod seçin. Kaynak yalnızca Harness yerel olarak işaretlenmediği sürece, aşağıdaki her işlem eski modda değişmeden kullanılabilir. Harness yerel mod kapsamı şu anda daha dardır:
-
fme_workspace— Harness'e özgü bir karşılığı yoktur; yalnızca eski sistemde mevcuttur (workspace_iddeğerlerini keşfetmek için kullanılır). -
fme_environment— çift modlulist(workspace_idveyaorg_id+project_id).get/create/update/deleteyalnızca Harness'e özgüdür (/fme/api/v4/environments) — MCP'nin bu işlemler için hiçbir zaman birworkspace_idsözleşmesi olmamıştır. Yerel liste, isteğe bağlıoffset/limitkullanır (maks. 100;harness_listsize,limitile eşlenir); zarf{data, limit, offset, totalCount},items/totalkonumuna yükseltilir. Yerel oluşturma/güncellemeisProductionkullanır (productiontakma ad olarak kabul edilir). Yerel güncelleme JSON Merge Patch'tir;nameveisProductiontemizlenemez. Ad maks. 15 karakterdir. -
fme_feature_flag— çift modlu, her iki dal da tamamen bağlı. Harness'e özgü (org_id+project_id):list/get/create/delete,/fme/api/v4/feature-flagsadresini çağırır (createiçin gövde:name,trafficType, isteğe bağlıdescription/tags/owners,CreateFeatureFlagRequestbaşına);update,/fme/api/v4/feature-flags/{name}adresine bir merge-patch gönderir;archive/unarchive,/fme/api/v4/feature-flags/{name}/archive|unarchiveadresini çağırır (yalnızca isteğe bağlıcomment—titleyok,ArchiveUnarchiveRequestbaşına);kill/restore/reallocate,/fme/api/v4/feature-flag-definitions/{name}/kill|restore|reallocateadresinienvironment_idsorgu parametresiyle çağırır (isteğe bağlıcomment/title,FeatureFlagDefinitionActionRequestbaşına). -
fme_feature_flag_definition—get/create/updateçift modlu kalır (workspace_idveyaorg_id+project_id).list/delete/kill/restore/reallocateyalnızca Harness'e özgüdür (org_id+project_id) — MCP'nin bu işlemler için hiçbir zaman birworkspace_idsözleşmesi olmamıştır. Yerel listefeature_flag_namegerektirir veoffset/limitkullanır (varsayılan 100, maks. 100);environment_idalmaz. Silme ve çalıştırmaenvironment_idgerektirir. Kill/restore/reallocate,fme_feature_flagile aynı eylemlerdir. Get/create/update gövdesi eski sistemle eşleşir (treatments,defaultTreatment,defaultRule, isteğe bağlırules/baselineTreatment/trafficAllocation/comment), ayrıca Harness'e özgü modda isteğe bağlıtitleeklenir. Yerel güncelleme JSON Merge Patch'tir. -
fme_rollout_status— çift modlulist.org_id+project_id(tercihen) veya kullanımdan kaldırılmışworkspace_idiletin. Yerel sayfalamaoffset/limitkullanır (maks. 100;harness_listsize,limitile eşlenir); sonuçlaritems/totalkonumuna yükseltilir. Her öğeninid,nameve isteğe bağlıdescriptionalanı vardır. -
fme_rule_based_segment— (Kullanımdan kaldırıldı —fme_segmentbölümüne bakın.) Harness'e özgü mod her işlemde reddedilir (list/get/create/delete) — bunun yerinefme_segmentkullanın; bu kaynak yalnızca eskiworkspace_idsözleşmesini destekler. -
fme_rule_based_segment_definition— (Kullanımdan kaldırıldı —fme_segment_definitionbölümüne bakın.) Harness'e özgü mod her işlemde/eylemde reddedilir (list/update/enable/disable/change_request) — bunun yerinefme_segment_definitionkullanın (oradaenable/disable/change_requestkarşılığı yoktur); bu kaynak yalnızca eskiworkspace_id/environment_idsözleşmesini destekler. -
fme_traffic_type— çift modlulist.org_id+project_id(tercihen) veya kullanımdan kaldırılmışworkspace_idiletin. Yerel sayfalamaoffset/limitkullanır (maks. 100;harness_listsize,limitile eşlenir); sonuçlaritems/totalkonumuna yükseltilir. Her öğeninidvenamealanı vardır (displayAttributeIdyoktur). -
fme_identity—create/update,org_id+project_idbirlikte iletilirse henüz uygulanmamıştır; aksi takdirde normal bir eski sistem çağrısı olarak ilerler. -
fme_standard_segment— kullanımdan kaldırıldı. Eskiworkspace_idhâlâ Split v2'yi çağırır. Harness'e özgü reddedilir —fme_segmentkullanın. -
fme_segment_keys—list/updateeski sistemde kalır (workspace_id/environment_id+segment_name). Harness'e özgü (org_id+project_id) reddedilir —fme_segment_definitionçalıştırmalist_keys/add_keys/remove_keyskullanın. -
fme_segment— Yalnızca yerel (org_id+project_id). CRUD.list/get/update/delete,segment_typegerektirir:STANDARD|LARGE|RULE_BASED. Oluşturma gövdesi:name,trafficType,segmentType; isteğe bağlıdescription,tags,owners. -
fme_segment_definition— Yalnızca yerel. CRUD artı çalıştırmalist_keys/add_keys/remove_keys. Güncelleme yalnızca açıklama içindir. Anahtarlar mevcutken silmehasDependentsile başarısız olur. -
fme_metric— Yalnızca Harness'e özgü (eskiworkspace_iddesteği yoktur).list/get/create/update/delete,/fme/api/v4/metricsadresine bağlıdır (list'inharness_listsize,limitile eşlenir).create, arka uçCreateMetricRequestonu isteğe bağlı tutsa bilespreadgerektirir (varsayılanPER) — bu, MCP tarafına özgü daha katı bir sözleşmedir, çünkü atlanması birRATEmetriğinin anlamını sessizce değiştirir.updateJSON Merge Patch'tir;name/trafficTypedeğişmezdir ve kabul edilmez.deletekalıcı bir sert silmedir (arşivleme/geri yükleme yoktur) —destructiveolarak sınıflandırılır. -
fme_event_type— Yalnızca Harness'e özgü (eskiworkspace_iddesteği yoktur). Salt okunur:list/get,/fme/api/v4/event-typesadresine bağlıdır;idolay adıdır. Yalnızca son 30 gün içinde olayı olan olay türleri görünür;get, istek yapan çalışma alanının trafik türü kapsamı dışındaki bir olay türü veya 30 günden uzun süredir boşta olan bir olay türü için 404 döndürür. Liste filtreleri:name(alt dize),traffic_type(kimliğe veya ada göre),offset/limit(harness_listsize,limitile eşlenir).fme_metric'ünbaseEventTypes/filterEventTypeveyaevent_type_idsfiltresinde bir kimliğe başvurmadan önce gerçek olay türü kimliklerini keşfetmek için bunu kullanın, kimlik tahmin etmek yerine.
Tek kullanıcılı/kendi kendine barındırılan modda, eski sistem kimlik doğrulaması HARNESS_FME_API_KEY kaynağından bir Bearer belirteci kullanır ve yer tutucu olmayan bir HARNESS_API_KEY'e geri döner. HARNESS_FME_API_KEY, eski bir Split yönetici anahtarı veya FME yetkili bir Harness PAT/SAT olabilir, ancak multi-user modunda reddedilir, böylece paylaşılan dağıtımlar her oturum kullanıcısının kimlik bilgisini geçersiz kılamaz. Harness platform API'leri için barındırılan OAuth/hizmet yönlendirme kimlik bilgileri, doğrudan Split.io isteklerinin kimliğini doğrulamaz. fme_feature_flag, eski sistem modunda tam yaşam döngüsü yönetimini destekler: oluşturma (traffic_type_id gerektirir), listeleme, getirme, meta verileri güncelleme, silme ve kill/restore/reallocate/archive/unarchive çalıştırma eylemleri. Trafik türü kimliklerini keşfetmek için fme_traffic_type, kimlik öznitelikleri oluşturmak/güncellemek için fme_identity ve standart segmentleri incelemek ve üye anahtarları eklemek için fme_standard_segment / fme_segment_keys kullanın. fme_rule_based_segment, hedefleme segmentleri için CRUD sağlarken, fme_rule_based_segment_definition, etkinleştirme/devre dışı bırakma ve değişiklik isteği onay akışlarıyla ortama özgü segment kurallarını yönetir.
GitOps
| Kaynak Türü | Listele | Get | Oluştur | Güncelle | Sil | Çalıştırma Eylemleri |
|---|---|---|---|---|---|---|
gitops_agent | x | x | ||||
gitops_argo_project | x | |||||
gitops_app_project_mapping | x | x | x | x | import | |
gitops_autocreate_log | x | |||||
gitops_application | x | x | sync | |||
gitops_cluster | x | x | ||||
gitops_repository | x | x | ||||
gitops_applicationset | x | x | ||||
gitops_repo_credential | x | x | ||||
gitops_app_event | x | |||||
gitops_pod_log | x | |||||
gitops_managed_resource | x | |||||
gitops_resource_action | x | |||||
gitops_dashboard | x | |||||
gitops_app_resource_tree | x | |||||
gitops_cluster_link | x | x | x |
Kaos Mühendisliği
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
chaos_experiment | x | x | x | x | run, stop | |
chaos_experiment_run | x | |||||
chaos_experiment_variable | x | |||||
chaos_component_variable | x | |||||
chaos_input_set | x | x | x | x | x | |
chaos_experiment_template | x | x | x | create_from_template, list_revisions, get_variables, get_yaml, compare_revisions | ||
chaos_probe | x | x | x | x | enable, verify, get_manifest | |
chaos_probe_in_run | x | |||||
chaos_probe_template | x | x | x | get_variables | ||
chaos_infrastructure | x | |||||
chaos_k8s_infrastructure | x | x | x | check_health | ||
chaos_enabled_infrastructure | x | |||||
chaos_environment | x | |||||
chaos_hub | x | x | x | x | x | |
chaos_hub_fault | x | |||||
chaos_fault | x | x | x | get_variables, get_yaml | ||
chaos_fault_template | x | x | x | list_revisions, get_variables, get_yaml, compare_revisions | ||
chaos_fault_experiment_run | x | |||||
chaos_action | x | x | x | x | get_manifest | |
chaos_action_template | x | x | x | list_revisions, get_variables, compare_revisions | ||
chaos_loadtest | x | x | x | x | x | run, stop |
chaos_service | x | x | x | x | x | list_experiment_runs, list_load_tests |
chaos_application_map | x | x | ||||
discovered_agent | x | |||||
discovered_namespace | x | |||||
discovered_service | x | |||||
discovered_network_map | x | |||||
chaos_guard_condition | x | x | x | |||
chaos_guard_rule | x | x | x | enable | ||
chaos_recommendation | x | x | ||||
chaos_risk | x | x | ||||
chaos_dr_test | x | x | ||||
scanned_risk | x | x | occurrences, summary_by_service | |||
chaos_risk_rule | x | x | ||||
chaos_risk_scan | x | x | x | x | x | retry, abort, report, report_download, heatmap |
Bulut Maliyet Yönetimi (CCM)
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
cost_perspective | x | x | x | x | x | |
cost_breakdown | x | |||||
cost_timeseries | x | |||||
cost_summary | x | x | ||||
cost_recommendation | x | x | update_state, override_savings, create_jira_ticket, create_snow_ticket | |||
cost_anomaly | x | |||||
cost_anomaly_summary | x | |||||
cost_category | x | x | ||||
cost_account_overview | x | |||||
cost_filter_value | x | |||||
cost_recommendation_stats | x | |||||
cost_recommendation_detail | x | |||||
cost_commitment | x | |||||
ai_budget | x | x | x | x | x | |
ai_budget_overview | x | |||||
ai_budget_consumption | x | |||||
ai_budget_override_request | x | x | x | approve, reject |
Yazılım Mühendisliği Analizleri (SEI)
SEI kaynakları, token verimliliği için birleştirilmiştir. DORA, ekip/kuruluş ağacı ayrıntıları ve yapay zeka içgörüleri için metric veya aspect parametrelerini kullanın.
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
sei_metric | x | |||||
sei_productivity_metric | x | |||||
sei_dora_metric | x | metric değerini iletin: deployment_frequency, change_failure_rate, mttr, lead_time veya *_drilldown | ||||
sei_team | x | x | ||||
sei_team_detail | x | aspect değerini iletin: integrations, developers, integration_filters | ||||
sei_org_tree | x | x | ||||
sei_org_tree_detail | x | x | aspect değerini iletin: efficiency_profile, productivity_profile, business_alignment_profile, integrations, teams | |||
sei_business_alignment | x | x | Getirme için aspect değerini iletin: feature_metrics, feature_summary, drilldown | |||
sei_ai_usage | x | x | aspect değerini iletin: metrics, breakdown, summary, top_languages | |||
sei_ai_adoption | x | x | aspect değerini iletin: metrics, breakdown, summary | |||
sei_ai_impact | x | aspect değerini iletin: pr_velocity, rework | ||||
sei_ai_raw_metric | x |
Yazılım Tedarik Zinciri Güvencesi (SCS)
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
scs_artifact_source | x | |||||
artifact_security | x | x | ||||
scs_artifact_component | x | |||||
scs_artifact_remediation | x | |||||
scs_chain_of_custody | x | |||||
scs_compliance_result | x | |||||
code_repo_security | x | x | ||||
scs_sbom | x |
Kanıt Kasası
Kanıt Kasası, in-toto tasdiklerini (SDLC kanıtları) saklar. Listeleme, resource_scope aracılığıyla hesap/organizasyon/proje kapsamını destekler. Tekil serbest metin filtreleri (yalnızca pipeline, yalnızca artifact, gitoid) search_term kullanır; ek bir Ad kısıtı filters.subject_name kullanır; konu içerik özeti filters.subject_digest kullanır. Getir, gitoid_sha256 ile arama yapar ve org_id/project_id (liste satırından) gerektirir. İndirme (harness_execute eylemi download) zaman sınırlı bir download_url döndürür — bu bağlantıyı her zaman kullanıcıya gösterin. SCS_EVIDENCE_VAULT özellik bayrağını gerektirir.
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
attestation | x | x | download |
Güvenlik Testi Orkestrasyonu (STO)
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
security_issue | x | |||||
security_issue_filter | x | |||||
security_exemption | x | x | approve, reject | |||
remediation_diff | x |
security_exemption oluşturma bir high_write işlemidir. Sunucu, requester_id değerini kimliği doğrulanmış PAT'ten türetir, exemptFutureOccurrences=true değerini ayarlar ve sağlanmadığında duration_days değerini 30 olarak varsayılan yapar. Muafiyetleri listelerken küçük bir açık sayfa boyutu iletin (örneğin filters: { "status": "Pending", "size": 5 }) ve her yanıtta döndürülen _nextPageHint değerini takip edin.
Güvenlik muafiyeti yürütme iş akışı:
harness_listileresource_type="security_exemption"vePending,Approved,Rejected,ExpiredveyaCanceledgibi açık birstatuskullanın.harness_executeileaction="approve"ve gerekli birbody.scopekullanın:CURRENT,ACCOUNT,ORGveyaPROJECT.CURRENT, muafiyetin mevcut kapsamında onaylar; diğer kapsamlar dahili olarak STO teşvik uç noktasını kullanır. Sunucu, atlandığındabody.approver_iddeğerini kimliği doğrulanmış kullanıcıdan otomatik doldurur;body.commentisteğe bağlıdır.- Bir muafiyeti reddetmek için
action="reject"kullanın.body.approver_idde atlandığında otomatik doldurulur. - Ayrı bir
promoteyürütme eylemi yoktur. İstenen sonuç hesap, organizasyon veya proje kapsamında onay olduğunda,CURRENTolmayan birbody.scopeileaction="approve"kullanın.
Erişim Kontrolü
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
user | x | x | ||||
user_group | x | x | x | x | x | |
service_account | x | x | x | x | ||
role | x | x | x | x | ||
role_assignment | x | x | ||||
resource_group | x | x | x | x | ||
permission | x |
Yönetişim
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
policy | x | x | x | x | x | |
policy_set | x | x | x | x | x | |
policy_evaluation | x | x |
Dağıtım Dondurma
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
freeze_window | x | x | x | x | x | toggle_status |
global_freeze | x | manage |
Hizmet Geçersiz Kılmaları
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
service_override | x | x | x | x | x |
Ayarlar
| Kaynak Türü | Listele | Getir | Oluştur | Güncelle | Sil | Eylemleri Yürüt |
|---|---|---|---|---|---|---|
setting | x |
MCP İstemleri
DevOps
| Prompt | Description | Parameters |
|---|---|---|
build-deploy-app | Uçtan uca CI/CD iş akışı: bir git deposunu tarayın, CI pipeline'ı oluşturun (Docker imajı derleyin ve push edin), K8s manifestlerini keşfedin veya oluşturun, CD pipeline'ı oluşturun ve dağıtın — CI hatalarında otomatik yeniden deneme (en fazla 5 deneme) ve CD hatalarında (kullanıcı izniyle en fazla 3 deneme) ile birlikte. Yeniden denemeler tükendiğinde, manuel inceleme için oluşturulan tüm kaynaklara Harness UI derin bağlantıları sağlar. | repoUrl (gerekli), imageName (gerekli), projectId (isteğe bağlı), namespace (isteğe bağlı) |
debug-pipeline-failure | Başarısız bir yürütmeyi analiz edin: bir yürütme kimliği, pipeline kimliği veya Harness URL'si kabul eder. harness_diagnose aracılığıyla aşama/adım dökümü, hata ayrıntıları, delegate bilgisi ve başarısız adım günlüklerini alır, ardından kök neden analizi ve önerilen düzeltmeleri sağlar. Zincirlenmiş pipeline hatalarını otomatik olarak takip eder. | executionId (isteğe bağlı), projectId (isteğe bağlı) |
pipeline_summarizer | Bir pipeline yürütmesinden TÜM adım günlüklerini getirin ve özetleyin. Her adımın günlüğünü almak için harness_diagnose ile include_logs: true, include_all_step_logs: true kullanır, ardından Adım Adı, Durum, Süre ve Ne Oldu (günlük tabanlı özet) içeren bir tablo sunar. Hiçbir adımı atlamaz. | executionId (isteğe bağlı), projectId (isteğe bağlı) |
create-pipeline | Doğal dil gereksinimlerinden yeni bir pipeline YAML'ı oluşturun, bağlam için mevcut kaynakları inceleyerek | description (gerekli), projectId (isteğe bağlı) |
create-agent | Etkileşimli olarak bir Harness AI ajanı oluşturun — mevcut ajanları kontrol edin (güncellerken mevcut agent.uses ile eski agent.step.group.steps spec formatını algılayarak), gereksinimleri toplayın, uygun formatta ajan spec'ini oluşturun, kullanıcıyla onaylayın, ardından harness_create/harness_update aracılığıyla oluşturun veya güncelleyin | agent_name (gerekli), task_description (gerekli), org_id (isteğe bağlı), project_id (isteğe bağlı) |
onboard-service | Ortamlar ve bir dağıtım pipeline'ı ile yeni bir hizmetin onboarding sürecini adım adım yürütün | serviceName (gerekli), projectId (isteğe bağlı) |
dora-metrics-review | Elite/Yüksek/Orta/Düşük sınıflandırması ve iyileştirme önerileriyle DORA metriklerini (dağıtım sıklığı, değişiklik başarısızlık oranı, MTTR, teslim süresi) inceleyin | teamRefId (isteğe bağlı), dateStart (isteğe bağlı), dateEnd (isteğe bağlı) |
setup-gitops-application | Bir GitOps uygulamasının onboarding sürecinde rehberlik edin — ajanı, kümei, depoyu doğrulayın ve uygulamayı oluşturun | agentId (gerekli), projectId (isteğe bağlı) |
chaos-resilience-test | Hata enjeksiyonu, problar ve beklenen sonuçlarla hizmet dayanıklılığını test etmek için bir kaos deneyi tasarlayın | serviceName (gerekli), projectId (isteğe bağlı) |
feature-flag-rollout | Güvenlik kapılarıyla ortamlar arasında aşamalı bir özellik bayrağı (feature flag) dağıtımı planlayın ve yürütün | flagIdentifier (gerekli), projectId (isteğe bağlı) |
migrate-pipeline-to-template | Mevcut bir pipeline'ı analiz edin ve bundan yeniden kullanılabilir aşama/adım şablonları çıkarın | pipelineId (gerekli), projectId (isteğe bağlı) |
delegate-health-check | Delegate bağlantısını, sağlığını, token durumunu kontrol edin ve altyapı sorunlarını giderin | projectId (isteğe bağlı) |
developer-portal-scorecard | Hizmetler için IDP skor kartlarını inceleyin ve geliştirici deneyimini iyileştirmek için boşlukları belirleyin | projectId (isteğe bağlı) |
pending-approvals | Onay bekleyen pipeline yürütmelerini bulun, ayrıntıları gösterin ve onaylama veya reddetme seçeneği sunun | projectId (isteğe bağlı), orgId (isteğe bağlı), pipelineId (isteğe bağlı) |
FinOps
| Prompt | Description | Parameters |
|---|---|---|
optimize-costs | Bulut maliyet verilerini analiz edin, potansiyel tasarruflara göre önceliklendirilmiş önerileri ve anormallikleri yüzeye çıkarın | projectId (isteğe bağlı) |
cloud-cost-breakdown | Trend analizi ve anormallik tespiti ile hizmet, ortam veya küme bazında bulut maliyetlerine derinlemesine inin | perspectiveId (isteğe bağlı), projectId (isteğe bağlı) |
commitment-utilization-review | Ayrılmış örnek ve tasarruf planı kullanımını analiz ederek israfı bulun ve taahhütleri optimize edin | projectId (isteğe bağlı) |
cost-anomaly-investigation | Maliyet anormalliklerini araştırın — kök nedeni, etkilenen kaynakları ve düzeltmeyi belirleyin | projectId (isteğe bağlı) |
rightsizing-recommendations | Doğru boyutlandırma (rightsizing) önerilerini inceleyin ve önceliklendirin, isteğe bağlı olarak Jira veya ServiceNow biletleri oluşturun | projectId (isteğe bağlı), minSavings (isteğe bağlı) |
DevSecOps
| Prompt | Description | Parameters |
|---|---|---|
security-review | Harness kaynaklarındaki güvenlik sorunlarını inceleyin ve önem derecesine göre düzeltme önerileri sunun | projectId (isteğe bağlı), severity (isteğe bağlı, varsayılan: critical,high) |
vulnerability-triage | Pipeline'lar ve yapıtlar genelinde güvenlik açıklarını triyajlayın, önem derecesine ve istismar edilebilirliğe göre önceliklendirin | projectId (isteğe bağlı), severity (isteğe bağlı) |
sbom-compliance-check | Yapıtlar için SBOM ve uyumluluk duruşunu denetleyin — lisans riskleri, politika ihlalleri, bileşen güvenlik açıkları | artifactId (isteğe bağlı), projectId (isteğe bağlı) |
supply-chain-audit | Uçtan uca yazılım tedarik zinciri güvenlik denetimi — kaynak, emanet zinciri, politika uyumluluğu | projectId (isteğe bağlı) |
security-exemption-review | Bekleyen güvenlik muafiyetlerini inceleyin ve toplu onaylama veya reddetme kararları verin | projectId (isteğe bağlı) |
bulk-exemption-create | Açık kapsam ve süre rehberliğiyle birden fazla STO sorunu için gerekçeli güvenlik muafiyetleri oluşturun | projectId (gerekli), exemption_type (gerekli), reason (gerekli), sorun filtreleri (isteğe bağlı) |
access-control-audit | En az ayrıcalık ilkesini uygulamak için kullanıcı izinlerini, aşırı yetkili hesapları ve rol atamalarını denetleyin | projectId (isteğe bağlı), orgId (isteğe bağlı) |
Harness Code
| Prompt | Açıklama | Parametreler |
|---|---|---|
code-review | Bir pull request'i inceleyin — hatalar, güvenlik, performans ve stil hakkında yapılandırılmış geri bildirim sağlamak için diff, commit'ler, kontroller ve yorumları analiz edin | repoId (gerekli), prNumber (gerekli), projectId (isteğe bağlı) |
pr-summary | Bir dalın commit geçmişinden ve diff'inden otomatik olarak bir PR başlığı ve açıklaması oluşturun | repoId (gerekli), sourceBranch (gerekli), targetBranch (isteğe bağlı, varsayılan: main), projectId (isteğe bağlı) |
branch-cleanup | Bir depodaki dalları analiz edin ve silinmesi gereken bayat veya birleştirilmiş dalları önerin | repoId (gerekli), projectId (isteğe bağlı) |
MCP Kaynakları
| Kaynak URI'si | Açıklama | MIME Türü |
|---|---|---|
pipeline:///{pipelineId} | Pipeline YAML tanımı | application/x-yaml |
pipeline:///{orgId}/{projectId}/{pipelineId} | Pipeline YAML (açık kapsamla) | application/x-yaml |
executions:///recent | Son 10 pipeline yürütme özeti | application/json |
schema:///pipeline | Harness pipeline JSON Şeması | application/schema+json |
schema:///template | Harness şablon JSON Şeması | application/schema+json |
schema:///trigger | Harness tetikleyici JSON Şeması | application/schema+json |
schema:///pipeline_v1 (Alpha) | Harness V1 pipeline JSON Şeması (basitleştirilmiş aşama/adım formatı) | application/schema+json |
schema:///agent-pipeline | Harness AI ajanı pipeline JSON Şeması | application/schema+json |
agent-docs:///legacy-format | Eski ajan spesifikasyon formatı referansı (agent.step.group.steps / PLUGIN_TASK), mevcut eski formatlı bir ajanı güncellerken create-agent prompt'u tarafından okunur | text/markdown |
Araç Seti Filtreleme
Varsayılan olarak, 45 araç setinden 41'i etkindir. Dört araç seti isteğe bağlıdır ve varsayılanlardan hariç tutulmuştur:
ansible— Harness Ansible (envanterler, playbook'lar, ana bilgisayarlar, etkinlik). Proje kapsamlı olduğu ve birçok kullanıcının ihtiyaç duymadığı kavramlar eklediği için isteğe bağlıdır.autonomous_work— Geliştirme Harness'i (özerk çalışma). İsteğe bağlıdır; kapsam için araç seti açıklamasına bakın.observability-evaluations— Zamanlanmış üretim telemetri değerlendirme kuralları. Dağıtılmış puanlama kontrol düzlemine bağlı olduğu için isteğe bağlıdır.registries-v3— Harness Artifact Registry v3 (paketler, sürümler, dosyalar, meta veriler, taramalar, güvenlik duvarı istisnaları). v3 yazma işlemleri yayınlanana kadar isteğe bağlıdır, böylece ajanların v1 kayıt defterleri/artifacts ile v3 paketleri/sürümleri arasında ayrım yapması gerekmez.
+ önekiyle araç setleri ekleme
Tüm varsayılanların yanında isteğe bağlı araç setlerini açıkça dahil etmek için + önekini kullanın:
# Explicitly include Ansible alongside all defaults
HARNESS_TOOLSETS=+ansible
Varsayılan araç setlerini kaldırma
İhtiyacınız olmayan araç setlerini hariç tutmak için - önekini kullanın:
# Remove chaos and ccm from defaults
HARNESS_TOOLSETS=-chaos,-ccm
+ ve - birleştirme
# Add Ansible, remove chaos
HARNESS_TOOLSETS=+ansible,-chaos
Açık izin listesi
Açık bir virgülle ayrılmış liste (önek olmadan) varsayılanları tamamen değiştirir. Yalnızca listelenen araç setleri etkindir:
# Only expose pipelines, services, and connectors
HARNESS_TOOLSETS=pipelines,services,connectors
Mevcut araç seti adları:
| Araç Seti | Kaynak Türleri |
|---|---|
platform | organization, project |
pipelines | pipeline, pipeline_v1, pipeline_dynamic_execution, execution, execution_inputs, trigger, pipeline_summary, input_set, approval_instance |
agents | agent, agent_run |
services | service |
environments | environment |
connectors | connector, connector_catalogue |
infrastructure | infrastructure |
secrets | secret |
logs | execution_log |
audit | audit_event |
delegates | delegate, delegate_token |
repositories | repository, branch, commit, file_content, tag, repo_rule, space_rule |
registries | registry, artifact, artifact_version, artifact_file |
file_store | file_store |
templates | template |
dashboards | dashboard, dashboard_data |
idp | idp_entity, scorecard, scorecard_check, scorecard_stats, scorecard_check_stats, idp_score, idp_workflow, idp_tech_doc |
pull-requests | pull_request, pr_reviewer, pr_comment, pr_check, pr_activity |
feature-flags | fme_workspace, fme_environment, fme_feature_flag, fme_feature_flag_definition, fme_rollout_status, fme_rule_based_segment, fme_rule_based_segment_definition, fme_traffic_type, fme_identity, fme_standard_segment, fme_segment_keys, fme_segment, fme_segment_definition, fme_metric, fme_event_type |
gitops | gitops_agent, gitops_argo_project, gitops_app_project_mapping, gitops_autocreate_log, gitops_application, gitops_cluster, gitops_repository, gitops_applicationset, gitops_repo_credential, gitops_app_event, gitops_pod_log, gitops_managed_resource, gitops_resource_action, gitops_dashboard, gitops_app_resource_tree, gitops_cluster_link |
chaos | chaos_experiment, chaos_experiment_run, chaos_experiment_variable, chaos_component_variable, chaos_input_set, chaos_experiment_template, chaos_probe, chaos_probe_in_run, chaos_probe_template, chaos_infrastructure, chaos_k8s_infrastructure, chaos_enabled_infrastructure, chaos_environment, chaos_hub, chaos_hub_fault, chaos_fault, chaos_fault_template, chaos_fault_experiment_run, chaos_action, chaos_action_template, chaos_loadtest, chaos_service, chaos_application_map, discovered_agent, discovered_namespace, discovered_service, discovered_network_map, chaos_guard_condition, chaos_guard_rule, chaos_recommendation, chaos_risk, chaos_dr_test, scanned_risk, chaos_risk_rule, chaos_risk_scan |
ccm | cost_perspective, cost_breakdown, cost_timeseries, cost_summary, cost_recommendation, cost_anomaly, cost_anomaly_summary, cost_category, cost_account_overview, cost_filter_value, cost_recommendation_stats, cost_recommendation_detail, cost_commitment |
sei | sei_metric, sei_productivity_metric, sei_dora_metric, sei_team, sei_team_detail, sei_org_tree, sei_org_tree_detail, sei_business_alignment, sei_ai_usage, sei_ai_adoption, sei_ai_impact, sei_ai_raw_metric |
scs | scs_artifact_source, artifact_security, scs_artifact_component, scs_artifact_remediation, scs_chain_of_custody, scs_compliance_result, code_repo_security, scs_sbom |
evidence-vault | attestation |
sto | security_issue, security_issue_filter, security_exemption, remediation_diff |
dbops | database_schema, database_instance, database_snapshot_object, database_llm_authoring_pipeline |
autonomous_work (isteğe bağlı) | work_item, work_item_resume, work_item_approve, work_timeline, work_budget, work_phase, work_phase_artifact, work_artifact, budget, budget_grant, budget_usage, work_class, work_trigger, capability, risk_evaluator, team, member, member_template, software_component, content_source_connector |
access_control | user, user_group, service_account, role, role_assignment, resource_group, permission |
governance | policy, policy_set, policy_evaluation |
freeze | freeze_window, global_freeze |
overrides | service_override |
settings | setting |
knowledge-graph | kg_queryable_type_summary, kg_grammar, hql_query |
semantic-layer | kg_type, kg_related_type |
ai-evals | eval_dataset, eval_dataset_item, evaluation, eval_run, eval_run_item, eval_run_by_eval, eval_metric, eval_metric_set, eval_metric_set_entry, eval_suite, eval_suite_evaluation, eval_suite_run, eval_target, eval_annotation, eval_analytics, eval_git_settings, eval_registry_item, eval_git_registration, online_eval |
observability-evaluations (opt-in) | observability_evaluation_rule |
iacm | iacm_workspace, iacm_variable_set, iacm_resource, iacm_module, iacm_provider, iacm_workspace_costs, iacm_activity_resource_change |
ansible (opt-in) | ansible_inventory, ansible_playbook, ansible_host, ansible_host_activity, ansible_activity |
registries-v3 (opt-in) | package_v3, version_v3, file_v3, registry_metadata_v3, package_metadata_v3, version_metadata_v3, file_metadata_v3, metadata_key_v3, metadata_value_v3, artifact_scan_v3, bulk_scan_evaluation_v3, firewall_exception_v3, firewall_exception_version_v3 |
release-management | release_process, release_activity, release, release_execution_phase, release_execution_task, release_execution_activity, release_input, release_execution_phase_input, release_execution_phase_output, release_execution_activity_input, release_execution_activity_output |
vibe | vibe_project, vibe_app_lifecycle |
Mimari
+------------------+
| AI Agent |
| (Claude, etc.) |
+--------+---------+
| MCP (stdio or HTTP)
+--------v---------+
| MCP Server |
| 11 Generic Tools |
+--------+---------+
|
+--------v---------+
| Registry | <-- Declarative resource definitions
| 45 Toolsets (41 default) |
| 255 Resource Types|
+--------+---------+
|
+--------v---------+
| HarnessClient | <-- Auth, retry, rate limiting
+--------+---------+
| HTTPS
+--------v---------+
| Harness REST API |
+-------------------+
Nasıl Çalışır
- Araçlar genel fiillerdir:
harness_list,harness_get, vb. Doğru API uç noktasına yönlendiren birresource_typeparametresi kabul ederler. - Kayıt Defteri, her
resource_typedeğerini birResourceDefinitionile eşler — HTTP yöntemini, URL yolunu, yol/sorgu parametresi eşlemelerini ve yanıt çıkarma mantığını belirten bildirimsel bir veri yapısıdır. - Dağıtım, kaynak tanımını çözer, HTTP isteğini oluşturur (yol değiştirme, sorgu parametreleri,
resource_scopefarkındalıklı hesap/kuruluş/proje ekleme), Harness API'siniHarnessClientüzerinden çağırır ve ilgili yanıt verilerini çıkarır. - Araç seti filtreleme (
HARNESS_TOOLSETS), başlangıçta kayıt defterine hangi kaynak tanımlarının yükleneceğini kontrol eder. - Yapılandırılmış çıktı, MCP
outputSchemaile bildirilir;harness_list, dizileri ve yaygın liste sarmalayıcılarını katı istemciler için nesne biçimlistructuredContentdeğerlerine dönüştürür. - Derin bağlantılar, yanıtlara otomatik olarak eklenir ve her kaynak için doğrudan Harness UI URL'leri sağlar.
- Kompakt mod, liste sonuçlarından ayrıntılı meta verileri kaldırır ve yalnızca eyleme dönüştürülebilir alanları (kimlik, durum, tür, zaman damgaları, derin bağlantılar) tutarak belirteç kullanımını en aza indirir.
Yeni Bir Kaynak Türü Ekleme
src/registry/toolsets/ içinde yeni bir dosya oluşturun veya mevcut bir araç setine bir kaynak ekleyin:
// src/registry/toolsets/my-module.ts
import type { ToolsetDefinition } from "../types.js";
export const myModuleToolset: ToolsetDefinition = {
name: "my-module",
displayName: "My Module",
description: "Description of the module",
resources: [
{
resourceType: "my_resource",
displayName: "My Resource",
description: "What this resource represents",
toolset: "my-module",
scope: "project", // "project" | "org" | "account"
identifierFields: ["resource_id"],
listFilterFields: ["search_term"],
operations: {
list: {
method: "GET",
path: "/my-module/api/resources",
queryParams: { search_term: "search", page: "page", size: "size" },
responseExtractor: (raw) => raw,
description: "List resources",
},
get: {
method: "GET",
path: "/my-module/api/resources/{resourceId}",
pathParams: { resource_id: "resourceId" },
responseExtractor: (raw) => raw,
description: "Get resource details",
},
},
},
],
};
Ardından src/registry/index.ts içine aktarın ve ALL_TOOLSETS dizisine ekleyin. Herhangi bir araç dosyasında değişiklik yapmanıza gerek yoktur.
Geliştirme
# Build
pnpm build
# Watch mode
pnpm dev
# Type check
pnpm typecheck
# Run tests
pnpm test
# Watch tests
pnpm test:watch
# Interactive MCP Inspector
pnpm inspect
# Refresh generated README counts from the built registry
pnpm docs:generate
# Verify README counts and clone instructions are current
pnpm docs:check
# Sync and verify JSON Schemas used by harness_schema
pnpm sync-schemas
pnpm check-schema-coverage
Proje Yapısı
src/
index.ts # Entrypoint, transport setup
config.ts # Env var validation (Zod)
client/
harness-client.ts # HTTP client (auth, retry, rate limiting)
types.ts # Shared API types
registry/
index.ts # Registry class + dispatch logic
types.ts # ResourceDefinition, ToolsetDefinition, etc.
toolsets/ # One file per toolset (declarative data)
platform.ts
pipelines.ts
services.ts
ccm.ts
access-control.ts
...
tools/ # 11 generic MCP tools
harness-list.ts
harness-get.ts
harness-create.ts
harness-update.ts
harness-delete.ts
harness-execute.ts
harness-search.ts
harness-diagnose.ts
harness-describe.ts
harness-status.ts
harness-schema.ts
resources/ # MCP resource providers
pipeline-yaml.ts
execution-summary.ts
prompts/ # MCP prompt templates
build-deploy-app.ts # DevOps: end-to-end build & deploy workflow
debug-pipeline.ts # DevOps: debug failed executions
create-pipeline.ts # DevOps: generate pipeline from requirements
onboard-service.ts # DevOps: onboard new service
dora-metrics.ts # DevOps: DORA metrics review
setup-gitops.ts # DevOps: GitOps application setup
chaos-resilience.ts # DevOps: chaos experiment design
feature-flag-rollout.ts # DevOps: progressive flag rollout
migrate-to-template.ts # DevOps: extract templates from pipeline
delegate-health.ts # DevOps: delegate health check
developer-scorecard.ts # DevOps: IDP scorecard review
optimize-costs.ts # FinOps: cost optimization
cloud-cost-breakdown.ts # FinOps: cost deep-dive
commitment-utilization.ts # FinOps: RI/savings plan analysis
cost-anomaly.ts # FinOps: anomaly investigation
rightsizing.ts # FinOps: rightsizing recommendations
security-review.ts # DevSecOps: security issue review
vulnerability-triage.ts # DevSecOps: vulnerability triage
sbom-compliance.ts # DevSecOps: SBOM compliance audit
supply-chain-audit.ts # DevSecOps: supply chain audit
exemption-review.ts # DevSecOps: exemption approval
access-control-audit.ts # DevSecOps: access control audit
code-review.ts # Harness Code: PR code review
pr-summary.ts # Harness Code: auto-generate PR summary
branch-cleanup.ts # Harness Code: stale branch cleanup
pending-approvals.ts # Approvals: find and act on pending approvals
utils/
cli.ts # CLI arg parsing (transport, port)
errors.ts # Error normalization
logger.ts # stderr-only logger
progress.ts # MCP progress & logging notifications
rate-limiter.ts # Client-side rate limiting
deep-links.ts # Harness UI deep link builder
response-formatter.ts # Consistent MCP response formatting
compact.ts # Compact list output for token efficiency
tests/
config.test.ts # Config schema validation tests
utils/
response-formatter.test.ts
deep-links.test.ts
errors.test.ts
registry/
registry.test.ts # Registry loading, filtering, dispatch tests
Bilgi Toplama (Elicitation)
Yazma araçları (harness_create, harness_update, harness_delete, harness_execute), eylemin riski gerektirdiğinde kullanıcıdan onay istemek için MCP elicitation kullanır — yalnızca medium_write, high_write ve destructive işlemleri. Düşük riskli oluşturma / güncelleme / okuma işlemleri (örn. pipeline.create, pipeline.update, hql_query.run) soru sormadan sessizce ilerler. Bir istem görüntülendiğinde, kullanıcı ne olacağını görür ve kabul eder veya reddeder; gerçekten değişiklik yapan veya çalıştıran işlemler için gerçek bir insan onayı sağlar.
Nasıl çalışır:
- LLM,
medium_write+ riski olan bir yazma aracını çağırır (örn.harness_delete,harness_execute pipeline.run). Düşük riskli oluşturma / güncelleme / okuma işlemleri istem göstermez. - Sunucu, istemciye işlemin bir özeti ve
confirmonay kutusu (varsayılan olarak işaretli) ile bir elicitation isteği gönderir. - Kullanıcı ayrıntıları görür ve Kabul Et (
confirmişaretliyken) veya Reddet / İptal Et düğmesine tıklar. confirm: trueile kabul edilirse işlem devam eder.confirmişaretsizken kabul edilirse, reddedilirse veya iptal edilirse işlem engellenir ve LLM bilgilendirilir (açık bir ret yetkilidir ve araç çağrısındakiconfirm: truetarafından atlanmaz).
İstemci desteği:
| İstemci | Elicitation Desteği |
|---|---|
| Cursor | Evet |
| VS Code (Copilot) | Evet |
| Claude Desktop | Henüz değil |
| Devin Desktop | Henüz değil |
| MCP Inspector | Evet |
İstemci desteği eksik olduğunda elicitation davranışı işlem riskine göre değişir:
| Risk Seviyesi | İstemci elicitation'ı destekliyor | confirm: true iletildi | Davranış |
|---|---|---|---|
read, low_write | herhangi | herhangi | Sessizce ilerle — istem görüntülenmez (confirm bu risk seviyesinde etkisizdir) |
medium_write, high_write, destructive | Evet | herhangi | Kullanıcıya sor. Yalnızca kullanıcı confirm: true ile kabul ederse ilerle (şemanın varsayılanı). Açık bir ret, iptal veya confirm: false ile kabul (kullanıcı kutuyu işaretlemedi) yetkilidir ve araç çağrısındaki confirm: true tarafından atlanmaz. confirm alanını içermeyen bir kabul, istemcinin kullanılabilir bir istem gösteremediği şeklinde değerlendirilir — confirm: true ile yeniden deneyerek kurtarılabilir |
medium_write, high_write, destructive | Hayır | Hayır | ENGELLE (confirm: true ile yeniden deneme ipucu içeren hata döndür) |
medium_write, high_write, destructive | Hayır | Evet | İlerle (etkileşimli olmayan otomasyon için açık katılım) |
herhangi (HARNESS_AUTO_APPROVE_RISK veya altı) | herhangi | herhangi | Sormadan otomatik onayla |
elicitInput çalışma zamanında başarısız olursa (taşıma hatası, desteklenmeyen yöntem) bir medium_write+ işlemi için, çağıran confirm: true iletmedikçe çağrı engellenir. İstemci bir istem gösteremediğinde veya bozuk bir kabul döndürdüğünde ({action: "accept"} onay alanı olmadan) confirm: true bir geri dönüş olarak onurlandırılır, ancak elicitation el sıkışmasını tamamlayan bir istemciden gelen açık bir reddi/iptali geçersiz kılmaz.
Otonom Mod
Otonom mod, sunucunun onay istemeden tüm işlemleri — yazma ve yıkıcı eylemler dahil — gerçekleştirmesi anlamına gelir. Şu şekilde etkinleştirin:
HARNESS_AUTO_APPROVE_RISK=all
Bu, dağıtım düzeyindeki tavan değerdir: ayarlandığında, bireysel oturumlar bunun üzerine çıkamaz (ancak x-harness-auto-approve-risk başlığı aracılığıyla oturum başına daha sıkı bir eşik seçebilirler).
Veya MCP istemci yapılandırmanızda:
{
"mcpServers": {
"harness": {
"command": "npx",
"args": ["harness-mcp-v2"],
"env": {
"HARNESS_API_KEY": "pat.xxx.xxx.xxx",
"HARNESS_AUTO_APPROVE_RISK": "all"
}
}
}
}
Kısmi otonomi: Ayrıca yalnızca belirli bir risk seviyesine kadar otomatik onay verebilir, daha yüksek riskli işlemler için yine de sorabilirsiniz:
# Auto-approve reads and low-risk writes; prompt for medium_write, high_write, destructive
HARNESS_AUTO_APPROVE_RISK=low_write
# Auto-approve up to high-risk writes; only prompt for destructive operations
HARNESS_AUTO_APPROVE_RISK=high_write
| Değer | Otomatik onaylanan |
|---|---|
none (varsayılan) | Hiçbir şey — otomatik onay eşiği yok |
low_write | Okumalar + düşük riskli yazmalar |
medium_write | Okumalar + düşük + orta riskli yazmalar |
high_write | Okumalar + düşük + orta + yüksek riskli yazmalar |
all | Yıkıcı işlemler dahil her şey |
Otonom mod uyarısı:
HARNESS_AUTO_APPROVE_RISK=all,harness_deletedahil tüm işlemler için onayı atlar. Dikkatli kullanın ve hangi kaynak türlerinin kullanılabilir olduğunu kısıtlamak içinHARNESS_TOOLSETSile birlikte kullanmayı düşünün.
Geçiş notu:
HARNESS_SKIP_ELICITATION=truehâlâ desteklenmektedir veHARNESS_AUTO_APPROVE_RISK=allile eşlenir. stderr'e bir kullanımdan kaldırma uyarısı kaydedilir. Her ikisi de ayarlanırsa,HARNESS_AUTO_APPROVE_RISKönceliklidir.
Güvenlik
- Sırlar asla ifşa edilmez.
secretkaynak türü yalnızca meta verileri döndürür (ad, tür, kapsam) — sır değerleri hiçbir yanıta dahil edilmez. - Onay gerektiren işlemler, mevcut olduğunda elicitation kullanır. Bir yazma veya çalıştırma eylemi
medium_write,high_writeveyadestructiveriskine sahip olduğunda,harness_create,harness_update,harness_deleteveharness_executedevam etmeden önce MCP elicitation'ı dener (bkz. Elicitation). Düşük riskli eylemler (read,low_write— örn.pipeline.create,pipeline.update,hql_query.run) soru sormadan sessizce ilerler. - Orta risk ve üzeri kapalı kalır.
medium_write,high_writeveyadestructiveişlemleri için onay alınamazsa, körlemesine yürütmek yerine engellenirler. Otonom iş akışları içinHARNESS_AUTO_APPROVE_RISKile geçersiz kılın. - CORS yalnızca aynı kaynakla sınırlıdır. HTTP taşıması yalnızca aynı kaynaklı isteklere izin verir; yerel ana bilgisayardaki MCP sunucusunu hedefleyen kötü niyetli web sitelerinden gelen CSRF saldırılarını önler.
- HTTP hız sınırlama. HTTP taşıması, istek taşkınlarını önlemek için IP başına dakikada 60 istek uygular.
- API hız sınırlama. Harness API istemcisi, üst akış hız sınırlarına takılmamak için saniyede 10 istek sınırı uygular.
- Sayfalama sınırları zorunludur. Liste sorguları, bellek tükenmesini önlemek için toplam 10.000 öğe ve sayfa başına 100 öğe ile sınırlandırılmıştır.
- Geri çekilmeli yeniden denemeler. Geçici hatalar (HTTP 429, 5xx), üstel geri çekilme ve jitter ile yeniden denenir.
- Yerel ana bilgisayar bağlama. HTTP taşıması varsayılan olarak
127.0.0.1adresine bağlanır — ağdan erişilemez. - stdout günlüğü yok. Tüm günlükler, stdio JSON-RPC taşımasını bozmamak için stderr'e gider.
Tamamlayıcı Beceriler
Harness MCP sunucusu, Harness Skills ile iyi çalışır — yaygın Harness iş akışları için tasarlanmış hazır Claude Code becerileri (eğik çizgi komutları) koleksiyonu. Özel istemler yazmadan /deploy, /rollback, /triage ve daha fazlası gibi üst düzey otomasyon elde etmek için bu MCP sunucusunun yanına kurun.
Sorun Giderme ve Yaygın Tuzaklar
| Belirti | Olası Neden | Ne Yapılmalı |
|---|---|---|
HARNESS_ACCOUNT_ID is required when the API key does not include an account ID segment... | API anahtarı desteklenen bir hesap kapsamlı formatta değil (pat.<accountId>... veya sat.<accountId>...), bu yüzden hesap kimliği çıkarılamıyor | HARNESS_ACCOUNT_ID değerini açıkça ayarlayın |
Başlangıçta Unknown transport: "..." | Desteklenmeyen CLI taşıma (transport) argümanı | Yalnızca stdio veya http kullanın |
Başlangıçta Invalid HARNESS_TOOLSETS: ... | Bir veya daha fazla araç seti adı tanınmıyor | Yalnızca Araç Seti Filtreleme bölümündeki adları kullanın (birebir eşleşme) |
HTTP mcp-session-id header is required... | Oturum başlığı olmadan oturum isteği gönderildi | Önce initialize gönderin, ardından POST/GET/DELETE /mcp üzerinde mcp-session-id değerini ekleyin |
HTTP Session not found... | Oturum, MCP_SESSION_TTL_MS boşta kalma milisaniyesinden sonra süresi doldu veya zaten kapatıldı | Yeni bir oturum oluşturmak için initialize komutunu yeniden çalıştırın, ardından yeni başlıkla tekrar deneyin |
/mcp üzerinde HTTP 405 Method Not Allowed | MCP uç noktası için desteklenmeyen yöntem | Yalnızca POST, GET, DELETE veya OPTIONS kullanın |
HTTP Invalid request | Geçersiz JSON gövdesi veya istek gövdesi HARNESS_MAX_BODY_SIZE_MB sınırını aştı | JSON yük boyutunu/şeklini doğrulayın; gerekirse HARNESS_MAX_BODY_SIZE_MB değerini artırın |
Araçlardan Unknown resource_type "..." | Kaynak türü yanlış yazılmış veya HARNESS_TOOLSETS ile filtrelenmiş | Geçerli türleri keşfetmek için harness_describe çağrısını yapın (isteğe bağlı search_term ile) |
Missing required field "... for path parameter ..." | Proje/org kapsamlı bir çağrıda tanımlayıcılar eksik | HARNESS_ORG/HARNESS_PROJECT ayarlayın veya her araç çağrısında org_id/project_id değerlerini iletin |
resource_scope "org" requires org_id... veya resource_scope "project" requires project_id... | Çok kapsamlı bir kaynak, yeterli tanımlayıcı olmadan org/proje kapsamına zorlandı | Eksik org_id/project_id değerlerini iletin, HARNESS_ORG/HARNESS_PROJECT yapılandırın veya desteklendiğinde resource_scope: "account" kullanın |
Read-only mode is enabled ... operations are not allowed | HARNESS_READ_ONLY=true oluşturma/güncelleme/silme/çalıştırma işlemlerini engelliyor | Yazma işlemleri amaçlanıyorsa HARNESS_READ_ONLY=false ayarlayın |
| Pipeline çalıştırması, çözümlenmemiş zorunlu girdilerle ön kontrol aşamasında başarısız oluyor | Sağlanan inputs zorunlu çalışma zamanı yer tutucularını kapsamadı | runtime_input_template değerini getirin, eksik basit anahtarları sağlayın veya yapısal girdiler için input_set_ids kullanın |
Pipeline CI kısayolu (branch, tag, pr_number, commit_sha) uygulanmadı | inputs.build zaten sağlandı, bu yüzden kısayol genişletmesi bilinçli olarak atlandı | Kısayol genişletmesini kullanmak için inputs.build değerini kaldırın veya tam açık build yapısını koruyun |
| Pipeline çalıştırması yanlış YAML revizyonunu yükledi | Pipeline tanımı Git'te saklanıyor ve çalıştırma istenen pipeline dalını belirtmedi | run eyleminde params.pipeline_branch değerini iletin; bu, Harness branch değerine karşılık gelir |
wait: true _wait.error döndürdü | Pipeline tetikleyicisi başarılı oldu, ancak sunucu tarafı yoklama başarısız oldu | Yeniden çalıştırmaya karar vermeden önce harness_get(resource_type="execution", ...) ile execution_id değerini yeniden kontrol edin |
wait: true execution_timed_out: true döndürdü | Yürütme, wait_timeout_seconds süresinden önce terminal durumuna ulaşmadı | Durumu yeniden kontrol etmek için döndürülen execution_id değerini kullanın; harness_diagnose çalıştırmadan önce terminal durumunu bekleyin |
| Yürütme günlükleri boş veya blob indirmeleri 403 döndürüyor | Harness tarafından barındırılan günlük blob URL'leri, özellikle dahili veya kendi kendine yönetilen ana bilgisayarlar için yapılandırılmış Harness istemci/auth yolunu gerektirir | HARNESS_BASE_URL değerini hedef Harness ana bilgisayarına yönlendirin ve MCP istemcisini atlamak yerine harness_get(resource_type="execution_log", ...) veya harness_diagnose(..., include_logs=true) kullanın |
Operation declined by user / Operation cancelled by user | Kullanıcı, bilgi toplama onay iletişim kutusunu reddetti veya iptal etti — yetkili | Kullanıcıyla işlem ayrıntılarını doğrulayın; confirm: true açık bir reddi atlamaz. Kullanıcı istemi kabul etmelidir |
Operation blocked: the client could not surface a usable confirmation prompt | İstemci bilgi toplama desteğinden yoksun, elicitInput başarısız oldu veya bozuk bir kabul döndürdü | Etkileşimli olmayan otomasyon için confirm: true ile yeniden deneyin veya bilgi toplamayı destekleyen bir istemci kullanın |
Şablon oluşturma/güncelleme için body.template_yaml (or body.yaml) is required | Şablon API'leri tam YAML yükü bekler | body içinde tam template_yaml dizesini sağlayın; silme işlemleri için bir sürümü silmek üzere version_label iletin (tüm sürümleri silmek için atlayın) |
Başlangıçta HARNESS_BASE_URL must use HTTPS | HARNESS_BASE_URL bir HTTP URL'sine ayarlı | HTTPS kullanın veya yerel geliştirme için HARNESS_ALLOW_HTTP=true ayarlayın |
Lisans
MIT