MCP sunucusu ve komut satırı aracı olarak, repository'nizdeki sohbet ile ilgili dosyaların dinamik haritasını function prototipleri ve ilgili dosyalarla birlikte relevans sırasına göre sunar. Aider.chat'in "Repo Map" işlevselliğine dayanır.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"pdavis68-repomapper": {
"command": "node",
"args": [
"~/.mcp/RepoMapper/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/pdavis68/RepoMapper.git ~/.mcp/RepoMapper
cd ~/.mcp/RepoMapper RepoMap, öncelikle LLM'lerin karmaşık kod tabanlarını anlamalarına ve gezinmelerine yardımcı olmak için tasarlanmış güçlü bir araçtır. Hem istek üzerine analiz için komut satırı uygulaması hem de MCP (Model Context Protocol) sunucusu olarak işlev görür ve diğer uygulamalara sürekli depo haritalama özellikleri sağlar. Yazılım deposunun bir "haritasını" oluşturarak RepoMap, önemli dosyaları, kod tanımlarını ve bunların ilişkilerini vurgular. Tree-sitter'ı doğru kod ayrıştırması için ve PageRank algoritmasını kod öğelerini önem açısından sıralamak için kullanır; böylece en ilgili bilgiler her zaman önceliklendirilebilir.
RepoMap, Aider'ın Repo map işlevselliğine %100 dayanmaktadır, ancak onunla herhangi bir kod paylaştığını düşünmüyorum. Bana izin verin açıklayım.
Orijinal çabam, RepoMap sınıfını Aider'dan almak, aider'a özgü tüm bağımlılıkları kaldırmak ve ardından bunu komut satırı aracına dönüştürmekti. Python benim ana dilim değil ve bunu çalıştırmak için gerçekten zorlandım.
Birkaç saat önce, farklı bir fikrim vardı. RepoMap'i ve bunun bazı ilişkili kodlarını aider'dan aldım ve bunları bir LLM'ye (Claude veya Gemini 2.5 Pro olduğunu hatırlayamıyorum) besleyerek temel olarak aider'ın uygulamasından bu için belirtimler oluşturmasını istedi. Dolayısıyla bu uygulamanın (MCP bitleri hariç) çok ayrıntılı bir belirtimini oluşturdu ve ardından bunu, Aider with Claude 3.7 ile besleyerek komut satırı sürümünü oluşturdu.
Daha sonra Aider w/Claude 3.7, Cline w/Gemini 2.5 Pro Preview & Gemini 2.5 Flash Preview ve Phind.com, Gemini.com, Claude.com, ChatGPT.com'un bir kombinasyonunu kullandım ve birkaç saat sonra, sonunda MCP sunucusunu halletim. Yine, Python'ın gerçekten benim ana dilim olmadığını unutmayın.
> python repomap.py . --chat-files repomap_class.py
Chat files: ['/mnt/programming/RepoMapper/repomap_class.py']
repomap_class.py:
(Rank value: 10.8111)
36: CACHE_VERSION = 1
39: TAGS_CACHE_DIR = os.path.join(os.getcwd(), f".repomap.tags.cache.v{CACHE_VERSION}")
40: SQLITE_ERRORS = (sqlite3.OperationalError, sqlite3.DatabaseError)
43: Tag = namedtuple("Tag", "rel_fname fname line name kind".split())
46: class RepoMap:
49: def __init__(
93: def load_tags_cache(self):
102: def save_tags_cache(self):
459: def get_ranked_tags_map_uncached(
483: def try_tags(num_tags: int) -> Tuple[Optional[str], int]:
512: def get_repo_map(
utils.py:
(Rank value: 0.2297)
18: Tag = namedtuple("Tag", "rel_fname fname line name kind".split())
21: def count_tokens(text: str, model_name: str = "gpt-4") -> int:
35: def read_text(filename: str, encoding: str = "utf-8", silent: bool = False) -> Optional[str]:
importance.py:
(Rank value: 0.1149)
8: IMPORTANT_FILENAMES = {
27: IMPORTANT_DIR_PATTERNS = {
34: def is_important(rel_file_path: str) -> bool:
56: def filter_important_files(file_paths: List[str]) -> List[str]:
...
...
...
pip install -r requirements.txt
# Geçerli dizini haritala
python repomap.py .
# Belirli dizini özel token limitiyle haritala
python repomap.py src/ --map-tokens 2048
# Belirli dosyaları haritala
python repomap.py file1.py file2.py
# Chat dosyalarını (daha yüksek öncelik) diğer dosyalara karşı belirt
python repomap.py --chat-files main.py --other-files src/
# Bahsedilen dosyaları ve tanımlayıcıları belirt
python repomap.py --mentioned-files config.py --mentioned-idents "main_function"
# Ayrıntılı çıktıyı etkinleştir
python repomap.py . --verbose
# Önbellekleri yenilemeyi zorla
python repomap.py . --force-refresh
# Token sayımı için modeli belirt
python repomap.py . --model gpt-3.5-turbo
# Maksimum bağlam penceresini ayarla
python repomap.py . --max-context-window 8192
# Page Rank 0 olan dosyaları hariç tut
python repomap.py . --exclude-unranked
Araç dosyaları şu sırayla önceliklendiriyor:
--chat-files: Bu dosyalar en yüksek önceliğe sahiptir, çünkü şu anda üzerinde çalıştığınız dosyalar olarak kabul edilir.--mentioned-files: Bu dosyalar yüksek önceliğe sahiptir, çünkü geçerli bağlamda açıkça bahsedilir.--other-files: Bu dosyalar en düşük önceliğe sahiptir ve ek bağlam sağlamak için kullanılır.# Ayrıntılı çıktıyı etkinleştir
python repomap.py . --verbose
# Önbellekleri yenilemeyi zorla
python repomap.py . --force-refresh
# Token sayımı için modeli belirt
python repomap.py . --model gpt-3.5-turbo
# Maksimum bağlam penceresini ayarla
python repomap.py . --max-context-window 8192
# Page Rank 0 olan dosyaları hariç tut
python repomap.py . --exclude-unranked
# Daha yüksek öncelik için belirli dosya veya tanımlayıcıları bahset
python repomap.py . --mentioned-files config.py --mentioned-idents "main_function"
Araç, kod tabanınızın yapılandırılmış bir görünümünü gösterir:
tiktoken: Çeşitli LLM modelleri için token sayımınetworkx: Grafik algoritmaları (PageRank)diskcache: Kalıcı önbelleklemegrep-ast: Kod ayrıştırması için Tree-sitter entegrasyonutree-sitter: Kod ayrıştırma çerçevesipygments: Sözdizimi vurgulama ve sözcüksel analizAraç, sonraki çalıştırmaları hızlandırmak için kalıcı önbellekleme kullanır:
.repomap.tags.cache.v1/--force-refresh ile temizlenebilirŞu anda Tree-sitter gramer'ine sahip dilleri destekler:
Bu uygulama, Aider projesinden RepoMap tasarımına dayanmaktadır.
RepoMap, diğer uygulamaların depo haritalama yeteneklerine erişmesine olanak tanıyarak bir MCP (Model Context Protocol) sunucusu olarak da çalıştırılabilir.
cline_mcp_settings.json) aşağıdaki yapılandırmayı ekleyin:{
"mcpServers": {
"RepoMapper": {
"disabled": false,
"timeout": 60,
"type": "stdio",
"command": "/usr/bin/python3",
"args": [
"/absolute/path/to/repomap_server.py"
]
}
}
}
"/absolute/path/to/repomap_server.py" yerine repomap_server.py dosyasının gerçek yolunu yazın.repomap_server.py script'ini çalıştırın:python repomap_server.py
repo_map aracını depo haritaları oluşturmak için kullanabilir. Haritamak istedikleri projeye mutlak yolu olarak project_root parametresini belirtmeleri gerekir.7/13/2025 - project.json bağımlılığı kaldırıldı. MCP sunucusu, LLM'nin dosya adları açısından çalışması için biraz daha kolay hale getirildi.
Dil sunucularını kullanarak sembolik kod işlemleri gerçekleştiren, tam özellikli bir kodlama ajanı.
Yerel kodu bir graf veritabanına indeksleyen ve AI asistanlarına bağlam sağlayan, insanlar için grafik kod görselleştirmeleri sunan bir MCP sunucusu.
Temel okuma, yazma ve komut satırı araçlarıyla donatılmış bir kodlama ajanı.
Erişilebilirlik API'lerini kullanarak masaüstü GUI otomasyonu. Vision modelleri veya ekran görüntüleri olmadan Windows, macOS ve Linux uygulamalarını kontrol edin. İş akışı kaydı, yapılandırılmış veri çıkarma ve tarayıcı DOM incelemesini destekler.
MCP kullanarak çoklu ajan sistemleri oluşturmak için bir framework'tür. Koordine edilmiş AI işbirliğini sağlayan görev yönetimi, paylaşılan context ve RAG yetenekleriyle gelir.
Claude gibi yapay zeka sistemlerinin VS Code çalışma alanındaki dizin yapısını okuymasını, linter ve language server tarafından tespit edilen sorunları görmesini, kod dosyalarını okumasını ve düzenlemeler yapmasını sağlayan bir MCP Server.