Skip to content

MCP Sunucusu

Repomix, Model Context Protocol (MCP)'yi destekler ve AI asistanlarının kod tabanınızla doğrudan etkileşime girmesini sağlar. MCP sunucusu olarak çalıştırıldığında Repomix, AI asistanlarının manuel dosya hazırlamaya gerek kalmadan yerel veya uzak depoları analiz için paketleyebileceği araçlar sunar.

NOTE

Bu, kullanıcı geri bildirimlerine ve gerçek dünya kullanımına göre aktif olarak geliştireceğimiz deneysel bir özelliktir

Repomix'i MCP Sunucusu Olarak Çalıştırma

Repomix'i MCP sunucusu olarak çalıştırmak için --mcp bayrağını kullanın:

bash
repomix --mcp

Bu komut Repomix'i MCP sunucusu modunda başlatır ve Model Context Protocol'ü destekleyen AI asistanları tarafından kullanılabilir hale getirir.

Sandbox Modu

Varsayılan olarak MCP sunucusu, kendisini çalıştıran kullanıcının erişebildiği her yolu okuyabilir. Bu, güvenilen yerel bir asistan için uygundur, ancak sunucu güvenilmeyen bir istemciye veya ajana açıldığında çok geniş kapsamlıdır. --sandbox bayrağı, sunucunun dosya araçlarını tek bir çalışma alanı dizinine sınırlar:

bash
# Geçerli çalışma dizinine sınırla
repomix --mcp --sandbox

# Belirli bir dizine sınırla
repomix --mcp --sandbox path/to/project

Sandbox modu açıkken:

  • Her yol, çalışma alanı köküne görelidir. Mutlak yollar, ~, .. ve Windows sürücü/UNC yolları reddedilir; kökün dışına çözümlenen yollar (sembolik bağlantılar üzerinden olanlar dahil) atlanır. Sonuçlar ve hata mesajları da göreli olduğundan ana makine yolları açığa çıkmaz. Bu durum, aşağıdaki araç referansındaki directory ve path argümanları için de geçerlidir: sandbox modunda bu değerleri, tabloların normalde tanımladığı mutlak yollar yerine çalışma alanı köküne göreli olarak verin.
  • Yalnızca salt okunur ve köke sınırlı araçlar kaydedilir: pack_codebase, read_repomix_output, grep_repomix_output, file_system_read_file ve file_system_read_directory. Uzak paketleme, beceri oluşturma ve harici çıktıları ekleme devre dışı bırakılır; çünkü bunlar ağa erişir, dosya yazar veya keyfi yollara başvurur. İki file_system_* aracının kendisi de yalnızca sandbox modunda kullanılabilir; buna erişebilecekleri alanı çalışma alanı kökü sınırlar.

Bu, işletim sistemi düzeyinde bir sandbox değil, araç yüzeyinin uygulama düzeyinde bir sınırlandırmasıdır (katmanlı savunma). Sunucuyu güvenilmeyen istemciler için barındırırken yine de platformunuzun olağan izolasyon yöntemlerini (konteynerler, ayrılmış kullanıcılar) kullanarak çalıştırın.

--sandbox, yalnızca MCP sunucusunu etkiler; --mcp olmadan hiçbir etkisi yoktur.

MCP Sunucularını Yapılandırma

Repomix'i Claude gibi AI asistanlarıyla MCP sunucusu olarak kullanmak için MCP ayarlarını yapılandırmanız gerekir:

VS Code için

VS Code'a Repomix MCP sunucusunu şu yöntemlerden biriyle kurabilirsiniz:

  1. Kurulum Rozetini Kullanarak:

VS Code'a Kur
VS Code Insiders'a Kur

  1. Komut Satırını Kullanarak:
bash
code --add-mcp '{"name":"repomix","command":"npx","args":["-y","repomix","--mcp"]}'

VS Code Insiders için:

bash
code-insiders --add-mcp '{"name":"repomix","command":"npx","args":["-y","repomix","--mcp"]}'

Cline (VS Code eklentisi) için

cline_mcp_settings.json dosyasını düzenleyin:

json
{
  "mcpServers": {
    "repomix": {
      "command": "npx",
      "args": [
        "-y",
        "repomix",
        "--mcp"
      ]
    }
  }
}

Cursor için

Cursor'da Cursor Settings > MCP > + Add new global MCP server yolunu izleyerek Cline ile benzer bir yapılandırmayla yeni bir MCP sunucusu ekleyin.

Claude Desktop için

claude_desktop_config.json dosyasını Cline yapılandırmasına benzer şekilde düzenleyin.

Claude Code için

Claude Code'da Repomix'i MCP sunucusu olarak yapılandırmak için şu komutu kullanın:

bash
claude mcp add repomix -- npx -y repomix --mcp

Alternatif olarak, daha kolay bir deneyim için resmi Repomix eklentilerini kullanabilirsiniz. Eklentiler doğal dil komutları ve daha basit kurulum sunar. Ayrıntılar için Claude Code Eklentileri belgelerine bakın.

npx yerine Docker Kullanımı

npx yerine Docker kullanarak da Repomix'i MCP sunucusu olarak çalıştırabilirsiniz:

json
{
  "mcpServers": {
    "repomix-docker": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/yamadashy/repomix",
        "--mcp"
      ]
    }
  }
}

Kullanılabilir MCP Araçları

MCP sunucusu olarak çalışırken Repomix şu araçları sunar:

pack_codebase

Bu araç, yerel bir kod dizinini AI analizine uygun birleşik bir XML dosyasına paketler. Kod tabanı yapısını analiz eder, ilgili kod içeriğini çıkarır ve metrikler, dosya ağacı ile biçimlendirilmiş kod içeriği dahil kapsamlı bir rapor oluşturur.

Parametreler:

ParametreZorunluVarsayılanAçıklama
directoryEvetPaketlenecek dizinin mutlak yolu
compressHayırfalseUygulama ayrıntılarını kaldırırken temel kod imzalarını ve yapısını çıkarmak için Tree-sitter sıkıştırmasını etkinleştirin. Token kullanımını yaklaşık %70 azaltırken anlam bütünlüğünü korur. grep_repomix_output artımlı içerik getirmeye izin verdiğinden genellikle gerekli değildir.
includePatternsHayırfast-glob desenleri kullanarak eklenecek dosyalar. Virgülle ayrılmış (örn. "**/*.{js,ts}", "src/**,docs/**")
ignorePatternsHayırfast-glob desenleri kullanarak hariç tutulacak ek dosyalar. Virgülle ayrılmış (örn. "test/**,*.spec.js"). .gitignore ve yerleşik dışlamaları tamamlar.
outputPatternsHayırYapılandırma dosyasındaki output.patterns seçeneğini yansıtan, dosya başına dahil etme düzeyleri. { "pattern": string, "compress"?: boolean, "directoryStructureOnly"?: boolean } girdilerinden oluşan bir dizi. Eşleşen ilk desen kazanır; directoryStructureOnly, compress'e göre önceliklidir ve her iki bayrağın da bulunmadığı bir eşleşme tam içeriği zorunlu kılar (dosyaları genel bir compress'ten muaf tutmak için kullanışlıdır). Hedef deponun repomix.config.json dosyasındaki tüm output.patterns ayarlarının yerine geçer.
topFilesLengthHayır10Metrik özetinde gösterilecek boyuta göre en büyük dosya sayısı
styleHayırxmlÇıktı format stili: xml, markdown, json veya plain

Örnek:

json
{
  "directory": "/path/to/your/project",
  "compress": true,
  "includePatterns": "src/**/*.ts,**/*.md",
  "ignorePatterns": "**/*.log,tmp/",
  "outputPatterns": [
    { "pattern": "src/core/**" },
    { "pattern": "docs/**/*", "directoryStructureOnly": true }
  ],
  "topFilesLength": 10
}

Yukarıdaki örnekte (compress: true, eşleşmeyen dosyalar için genel kural görevi görür), src/core/ altındaki dosyalar tam içerikli tutulur, docs/ altındaki dosyalar yalnızca dizin yapısında listelenir ve geri kalan her şey sıkıştırılır.

pack_remote_repository

Bu araç, bir GitHub deposunu getirir, klonlar ve AI analizine uygun birleşik bir XML dosyasına paketler. Uzak depoyu otomatik olarak klonlar, yapısını analiz eder ve kapsamlı bir rapor oluşturur.

Parametreler:

ParametreZorunluVarsayılanAçıklama
remoteEvetGitHub deposu URL'si veya kullanıcı/depo biçimi (örn. "yamadashy/repomix", "https://github.com/user/repo" veya "https://github.com/user/repo/tree/branch")
compressHayırfalseUygulama ayrıntılarını kaldırırken temel kod imzalarını ve yapısını çıkarmak için Tree-sitter sıkıştırmasını etkinleştirin. Token kullanımını yaklaşık %70 azaltırken anlam bütünlüğünü korur. grep_repomix_output artımlı içerik getirmeye izin verdiğinden genellikle gerekli değildir.
includePatternsHayırfast-glob desenleri kullanarak eklenecek dosyalar. Virgülle ayrılmış (örn. "**/*.{js,ts}", "src/**,docs/**")
ignorePatternsHayırfast-glob desenleri kullanarak hariç tutulacak ek dosyalar. Virgülle ayrılmış (örn. "test/**,*.spec.js"). .gitignore ve yerleşik dışlamaları tamamlar.
outputPatternsHayırYapılandırma dosyasındaki output.patterns seçeneğini yansıtan, dosya başına dahil etme düzeyleri. { "pattern": string, "compress"?: boolean, "directoryStructureOnly"?: boolean } girdilerinden oluşan bir dizi. Eşleşen ilk desen kazanır; directoryStructureOnly, compress'e göre önceliklidir ve her iki bayrağın da bulunmadığı bir eşleşme tam içeriği zorunlu kılar (dosyaları genel bir compress'ten muaf tutmak için kullanışlıdır).
topFilesLengthHayır10Metrik özetinde gösterilecek boyuta göre en büyük dosya sayısı
styleHayırxmlÇıktı format stili: xml, markdown, json veya plain

Örnek:

json
{
  "remote": "yamadashy/repomix",
  "compress": true,
  "includePatterns": "src/**/*.ts,**/*.md",
  "ignorePatterns": "**/*.log,tmp/",
  "outputPatterns": [
    { "pattern": "src/core/**" },
    { "pattern": "docs/**/*", "directoryStructureOnly": true }
  ],
  "topFilesLength": 10
}

read_repomix_output

Bu araç, Repomix tarafından oluşturulan çıktı dosyasının içeriğini okur. Büyük dosyalar için satır aralığı belirterek kısmi okumayı destekler. Bu araç, doğrudan dosya sistemi erişiminin sınırlı olduğu ortamlar için tasarlanmıştır.

Parametreler:

ParametreZorunluVarsayılanAçıklama
outputIdEvetOkunacak Repomix çıktı dosyasının kimliği
startLineHayırDosya başıBaşlangıç satır numarası (1 tabanlı, dahil)
endLineHayırDosya sonuBitiş satır numarası (1 tabanlı, dahil)

Özellikler:

  • Web tabanlı ortamlar veya korumalı uygulamalar için özel olarak tasarlanmıştır
  • Daha önce oluşturulan çıktıların içeriğini kimliklerini kullanarak getirir
  • Dosya sistemi erişimi gerektirmeden paketlenmiş kod tabanına erişim sağlar
  • Büyük dosyalar için kısmi okumayı destekler

Örnek:

json
{
  "outputId": "8f7d3b1e2a9c6054",
  "startLine": 100,
  "endLine": 200
}

grep_repomix_output

Bu araç, JavaScript RegExp sözdizimini kullanan grep benzeri işlevsellikle bir Repomix çıktı dosyasında desen arar. Eşleşmelerin çevresinde isteğe bağlı bağlam satırlarıyla birlikte eşleşen satırları döndürür.

Parametreler:

ParametreZorunluVarsayılanAçıklama
outputIdEvetAranacak Repomix çıktı dosyasının kimliği
patternEvetArama deseni (JavaScript RegExp sözdizimi)
contextLinesHayır0Her eşleşmeden önce ve sonra gösterilecek bağlam satırı sayısı. beforeLines/afterLines belirtilmişse geçersiz kılınır.
beforeLinesHayırHer eşleşmeden önce gösterilecek satırlar (grep -B gibi). contextLines'dan önceliklidir.
afterLinesHayırHer eşleşmeden sonra gösterilecek satırlar (grep -A gibi). contextLines'dan önceliklidir.
ignoreCaseHayırfalseBüyük/küçük harfe duyarsız eşleşme gerçekleştirin

Özellikler:

  • Güçlü desen eşleştirme için JavaScript RegExp sözdizimini kullanır
  • Eşleşmeleri daha iyi anlamak için bağlam satırlarını destekler
  • Önceki/sonraki bağlam satırlarının ayrı kontrolüne olanak tanır
  • Büyük/küçük harfe duyarlı ve duyarsız arama seçenekleri

Örnek:

json
{
  "outputId": "8f7d3b1e2a9c6054",
  "pattern": "function\\s+\\w+\\(",
  "contextLines": 3,
  "ignoreCase": false
}

file_system_read_file ve file_system_read_directory

Bu iki dosya sistemi aracı yalnızca sandbox modunda (--sandbox) kullanılabilir; buna erişebilecekleri alanı çalışma alanı kökü sınırlar. --sandbox olmadan kaydedilmezler.

  1. file_system_read_file
  • Çalışma alanı köküne göreli bir yoldaki dosya içeriğini okur (örn. src/index.ts)
  • Ek bir sezgisel önlem olarak bilinen gizli bilgi biçimleriyle (Secretlint) eşleşen içeriği reddeder; erişim sınırı tarama değil, çalışma alanı köküdür
  • Geçersiz yollar için ana makine yollarını açığa çıkarmadan açık hata mesajları döndürür
  1. file_system_read_directory
  • Çalışma alanı köküne göreli bir yoldaki dizinin içeriğini listeler (örn. . veya src)
  • Hem dosyaları hem dizinleri açık göstergelerle ([FILE] veya [DIR]) gösterir
  • Proje yapısını keşfetmek ve kod tabanı organizasyonunu anlamak için kullanışlıdır

Örnek:

typescript
// Dosya okuma
const fileContent = await tools.file_system_read_file({
  path: 'src/index.ts'
});

// Dizin içeriğini listeleme
const dirContent = await tools.file_system_read_directory({
  path: 'src'
});

Bu araçlar, AI asistanlarının şunları yapması gerektiğinde özellikle kullanışlıdır:

  • Çalışma alanındaki belirli dosyaları analiz etmek
  • Dizin yapılarında gezinmek
  • Dosya varlığını ve erişilebilirliğini doğrulamak

Repomix'i MCP Sunucusu Olarak Kullanmanın Avantajları

Repomix'i MCP sunucusu olarak kullanmak birçok avantaj sunar:

  1. Doğrudan Entegrasyon: AI asistanları, manuel dosya hazırlamaya gerek kalmadan kod tabanınızı doğrudan analiz edebilir.
  2. Verimli İş Akışı: Dosyaları manuel olarak oluşturma ve yükleme ihtiyacını ortadan kaldırarak kod analizi sürecini kolaylaştırır.
  3. Tutarlı Çıktı: AI asistanının kod tabanını tutarlı ve optimize edilmiş bir biçimde almasını sağlar.
  4. Gelişmiş Özellikler: Kod sıkıştırma, token sayımı ve güvenlik kontrolleri gibi Repomix'in tüm özelliklerinden yararlanır.

Yapılandırıldıktan sonra AI asistanınız, kod tabanlarını analiz etmek için Repomix'in yeteneklerini doğrudan kullanabilir ve kod analizi iş akışlarını daha verimli hale getirir.

İlgili Kaynaklar

Released under the MIT License.