Developer Tools Rust ★ 282

Govcraft/rust-docs-mcp-server

Belirli bir Rust crate'inin güncel dokümantasyon bağlamını LLM'lere MCP aracı ile semantic search (embeddings) ve LLM özeti kullanarak sağlar.

Claude Desktop config.json'a ekle

{
  "mcpServers": {
    "govcraft-rust-docs-mcp-server": {
      "command": "node",
      "args": [
        "~/.mcp/rust-docs-mcp-server/index.js"
      ]
    }
  }
}

Rust Docs MCP Server

License: MIT

Bu projeyi beğendiniz mi? Lütfen depoyu yıldızlayın GitHub'da desteğinizi göstermek ve güncellemeleri almak için!

Motivasyon

Modern yapay zeka destekli kod editörleri (Cursor, Cline, Roo Code vb.) kod yapısını ve sözdizimini anlamada mükemmeldir, ancak hızla gelişen kütüphaneler ve framework'ler, özellikle de cratelar sık sık güncellenen Rust ekosisteminde oldukça zorlanabilirler. Eğitim verilerinin kesme tarihi, en son API'ler hakkında bilgi eksikliği anlamına gelebilir ve bu da yanlış veya eski kod önerileriyle sonuçlanır.

Bu MCP sunucusu, belirli bir Rust crate'i için güncel, odaklanmış bir bilgi kaynağı sağlayarak bu sorunu çözer. Bu sunucunun bir örneğini bir crate için çalıştırarak (örn. serde, tokio, reqwest), LLM kod asistanınıza (query_rust_docs) o crate ile ilgili kod yazarken kullanabileceği bir araç sağlarsınız.

Bu aracı kullanmak için talimatlandırıldığında, LLM crate'in API'si veya kullanımı hakkında spesifik sorular sorabilir ve doğrudan mevcut belgelerinden türetilmiş yanıtlar alabilir. Bu, oluşturulan kodun doğruluğunu ve alaka düzeyini önemli ölçüde artırır, manuel düzeltme ihtiyacını azaltır ve geliştirmeyi hızlandırır.

Bu sunucunun birden fazla örneği eş zamanlı olarak çalıştırılabilir, bu da LLM asistanının bir kodlama oturumu sırasında birkaç farklı crate'in belgelerine erişmesine olanak tanır.

Bu sunucu belirtilen bir Rust crate'i için belgeleri alır, içerik için gömülü vektörler oluşturur ve crate hakkında sorulara belgelendirme bağlamına dayalı olarak yanıt vermek için bir MCP aracı sağlar.

Özellikler

  • Hedeflenen Belgeler: Sunucu örneği başına tek bir Rust crate'e odaklanır.
  • Özellik Desteği: Belgelendirme oluşturma için gerekli crate özelliklerini belirtmeye izin verir.
  • Semantik Arama: Belirli bir soru için en alakalı belgelendirme bölümlerini bulmak için OpenAI'nin text-embedding-3-small modelini kullanır.
  • LLM Özetleme: Alınan belgelendirme bağlamına dayalı olarak özlü yanıtlar oluşturmak için OpenAI'nin gpt-4o-mini-2024-07-18 modelini kullanır.
  • Önbelleğe Alma: Oluşturulan belgelendirme içeriğini ve gömülü vektörleri kullanıcının XDG veri dizininde (~/.local/share/rustdocs-mcp-server/ veya benzer) crate, sürüm ve istenen özellikler temelinde önbelleğe alarak sonraki başlatmaları hızlandırır.
  • MCP Entegrasyonu: Stdio üzerinden standart bir MCP sunucusu olarak çalışır, araçlar ve kaynaklar sunar.

Ön Koşullar

  • OpenAI API Anahtarı: Gömülü vektörler oluşturmak ve yanıtları özetlemek için gereklidir. Sunucu bu anahtarı OPENAI_API_KEY ortam değişkeninde bekler. (Sunucu ayrıca crate bağımlılıklarını indirmek ve OpenAI API'si ile iletişim kurmak için ağ erişimine ihtiyaç duyar).

Kurulum

Önerilen kurulum yöntemi, işletim sisteminiz için önceden derlenmiş ikili dosyasını GitHub Releases sayfasından indirmektir.

  1. Releases sayfasına gidin.
  2. Sisteminiz için uygun arşivi indirin (Windows için .zip, Linux/macOS için .tar.gz).
  3. rustdocs_mcp_server (veya rustdocs_mcp_server.exe) ikili dosyasını çıkarın.
  4. İkili dosyayı sisteminizin PATH ortam değişkenine dahil olan bir dizine yerleştirin (örn. /usr/local/bin, ~/bin).

Kaynaktan Derleme (Alternatif)

Kaynaktan derlemek istiyorsanız, Rust Toolchain yüklü olması gerekir.

  1. Depoyu klonlayın:
    git clone https://github.com/Govcraft/rust-docs-mcp-server.git
    cd rust-docs-mcp-server
    
  2. Sunucuyu derleyin:
    cargo build --release
    

Kullanım

Yeni Cratelar için Önemli Not:

Sunucuyu ilk kez bir crate ile kullanırken (veya yeni bir sürüm/özellik seti ile), belgeleri indirmesi ve gömülü vektörler oluşturması gerekir. Bu işlem, özellikle kapsamlı belgelendirmeye sahip cratelar için uzun sürebilir ve etkin internet bağlantısı ile OpenAI API anahtarı gerektirir.

Yeni bir crate yapılandırmasını AI kod editörünüze (Roo Code, Cursor vb.) eklemeden önce sunucuyu doğrudan komut satırından bir kez çalıştırmanız önerilir. Bu, ilk gömülü vektör oluşturmanın ve önbelleğe almanın tamamlanmasına olanak tanır. Sunucunun başlangıç mesajlarını gördüğünüzde (örn. "MCP Server listening on stdio"), onu kapatabilirsiniz (Ctrl+C). Sonraki başlatmalar, kod editörü tarafından başlatılanlar da dahil olmak üzere, önbelleğe alınan verileri kullanır ve çok daha hızlı başlar.

Sunucuyu Çalıştırma

Sunucu komut satırından başlatılır ve hedef crate için Package ID Specification gerektirir. Bu spesifikasyon Cargo tarafından kullanılan biçimi izler (örn. crate_name, crate_name@version_req). Tam spesifikasyon ayrıntıları için bkz. man cargo-pkgid veya Cargo belgelendirmesi.

İsteğe bağlı olarak, gerekli crate özelliklerini -F veya --features bayrağını kullanarak belirtebilirsiniz, arkasından virgülle ayrılmış özellik listesi. Bu, cargo doc başarılı olması için belirli özellikler etkinleştirilmesi gereken cratelar için gereklidir (örn. çalışma zamanı özelliği gerektiren async-stripe gibi).

# API anahtarını ayarlayın (gerçek anahtarınızla değiştirin)
export OPENAI_API_KEY="sk-..."

# Örnek: serde'nin en son 1.x sürümü için sunucuyu çalıştırın
rustdocs_mcp_server "serde@^1.0"

# Örnek: reqwest'in belirli bir sürümü için sunucuyu çalıştırın
rustdocs_mcp_server "reqwest@0.12.0"

# Örnek: tokio'nun en son sürümü için sunucuyu çalıştırın
rustdocs_mcp_server tokio

# Örnek: async-stripe için sunucuyu çalıştırın, gerekli runtime özelliğini etkinleştirin
rustdocs_mcp_server "async-stripe@0.40" -F runtime-tokio-hyper-rustls

# Örnek: birden fazla özellik içeren başka bir crate için sunucuyu çalıştırın
rustdocs_mcp_server "some-crate@1.2" --features feat1,feat2

Belirli bir crate sürümü ve özellik seti için ilk çalıştırmada, sunucu:

  1. cargo doc kullanarak crate belgelendirmesini indirir (belirtilen özellikler ile).
  2. HTML belgelendirmesini ayrıştırır.
  3. OpenAI API kullanarak belgelendirme içeriği için gömülü vektörler oluşturur (bu biraz zaman alabilir ve maliyete neden olabilir, ancak çoğu crate için genellikle sadece bir ABD dolarının kesirleri; test sırasında 5000'den fazla belgelendirme sayfasına sahip async-stripe gibi büyük bir crate bile gömülü vektör oluşturma için sadece 0,18 USD'ye mal olmuştur).
  4. Belgelendirme içeriğini ve gömülü vektörleri önbelleğe alır, böylece maliyet tekrar oluşmaz.
  5. MCP sunucusunu başlatır.

Aynı crate sürümü ve özellik seti için sonraki çalıştırmalar verileri önbellekten yükler, başlangıcı çok daha hızlı hale getirir.

MCP Etkileşimi

Sunucu, Model Context Protocol kullanarak standart giriş/çıkış (stdio) üzerinden iletişim kurar. Aşağıdakileri sunar:

  • Araç: query_rust_docs

    • Açıklama: Sunucunun başlatıldığı belirli Rust crate'i için belgelendirmeyi semantik arama ve LLM özetleme kullanarak sorgulayın.
    • Giriş Şeması:
      {
        "type": "object",
        "properties": {
          "question": {
            "type": "string",
            "description": "Crate'in API'si veya kullanımı hakkındaki spesifik soru."
          }
        },
        "required": ["question"]
      }
      
    • Çıkış: Alakalı belgelendirme bağlamına dayalı olarak LLM tarafından oluşturulan yanıtı içeren metin yanıtı, From <crate_name> docs: ön eki ile.
    • Örnek MCP Çağrısı:
      {
        "jsonrpc": "2.0",
        "method": "callTool",
        "params": {
          "tool_name": "query_rust_docs",
          "arguments": {
            "question": "reqwest ile basit bir GET isteği nasıl yapabilirim?"
          }
        },
        "id": 1
      }
      
  • Kaynak: crate://<crate_name>

    • Açıklama: Bu sunucu örneğinin yapılandırıldığı Rust crate'in adını sağlar.
    • URI: crate://<crate_name> (örn. crate://serde, crate://reqwest)
    • İçerik: Crate adını içeren düz metin.
  • Günlüklendirme: Sunucu bilgilendirici günlükleri (başlangıç iletileri, sorgu işleme adımları) MCP istemcisine logging/message bildirimleri aracılığıyla geri gönderir.

Örnek İstemci Yapılandırması (Roo Code)

Roo Code gibi MCP istemcilerini, her biri farklı bir crate'i hedefleyen bu sunucunun birden fazla örneğini çalıştıracak şekilde yapılandırabilirsiniz. Roo Code'un mcp_settings.json dosyası için reqwest ve async-stripe için sunucuları yapılandıran bir örnek kod parçası aşağıdadır (async-stripe için eklenen özellikler argümanını not edin):

{
  "mcpServers": {
    "rust-docs-reqwest": {
      "command": "/path/to/your/rustdocs_mcp_server",
      "args": [
        "reqwest@0.12"
      ],
      "env": {
        "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE"
      },
      "disabled": false,
      "alwaysAllow": []
    },
    "rust-docs-async-stripe": {
      "command": "rustdocs_mcp_server",
      "args": [
        "async-stripe@0.40",
        "-F",
        " runtime-tokio-hyper-rustls"
      ],
      "env": {
        "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE"
      },
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

Not:

  • /path/to/your/rustdocs_mcp_server yerine sisteminizde derlenmiş ikili dosyasının gerçek yolunu yazın (PATH'te yoksa).
  • YOUR_OPENAI_API_KEY_HERE yerine gerçek OpenAI API anahtarınızı yazın.
  • Anahtarlar (rust-docs-reqwest, rust-docs-async-stripe) Roo Code içinde sunucu örneklerini tanımlamak için seçtiğiniz isteğe bağlı isimlerdir.

Örnek İstemci Yapılandırması (Claude Desktop)

Claude Desktop kullanıcıları için sunucuyu MCP ayarlarında yapılandırabilirsiniz. serde ve async-stripe için sunucuları yapılandıran bir örnek:

{
  "mcpServers": {
    "rust-docs-serde": {
      "command": "/path/to/your/rustdocs_mcp_server",
      "args": [
        "serde@^1.0"
      ]
    },
    "rust-docs-async-stripe-rt": {
      "command": "rustdocs_mcp_server",
      "args": [
        "async-stripe@0.40",
        "-F",
        "runtime-tokio-hyper-rustls"
      ]
    }
  }
}

Not:

  • rustdocs_mcp_server sistemin PATH'inde olduğundan emin olun veya tam yol sağlayın (örn. /path/to/your/rustdocs_mcp_server).
  • Anahtarlar (rust-docs-serde, rust-docs-async-stripe-rt) sunucu örneklerini tanımlamak için seçtiğiniz isteğe bağlı isimlerdir.
  • OPENAI_API_KEY ortam değişkenini Claude Desktop'ın erişebileceği yerde ayarlamayı unutmayın (bu sistem genelinde olabilir veya Claude Desktop'ı nasıl başlattığınıza bağlı olabilir). Claude Desktop'ın MCP yapılandırması Roo Code gibi sunucu başına ortam değişkenlerini doğrudan desteklemeyebilir.
  • Örnek async-stripe gibi belirli özellikler gerektiren cratelar için -F argümanını nasıl ekleyeceğini gösterir.

Önbelleğe Alma

  • Konum: Önbelleğe alınan belgeler ve gömülü vektörler XDG veri dizininde depolanır, genellikle ~/.local/share/rustdocs-mcp-server/<crate_name>/<sanitized_version_req>/<features_hash>/embeddings.bin altında. sanitized_version_req sürüm gereksiniminden türetilir ve features_hash başlangıçta istenen belirli özellikler kombinasyonunu temsil eden bir karmaşadır. Bu, farklı özellik setlerinin ayrı şekilde önbelleğe alınmasını sağlar.
  • Format: Veri bincode serileştirmesi kullanılarak önbelleğe alınır.
  • Yeniden Oluşturma: Önbellek dosyası eksikse, bozuksa veya dekodasyon yapılamıyorsa, sunucu belgeleri ve gömülü vektörleri otomatik olarak yeniden oluşturur.

Nasıl Çalışır

  1. Başlatma: clap kullanarak komut satırından crate spesifikasyon ve isteğe bağlı özellikleri ayrıştırır.
  2. Önbellek Kontrolü: Belirli crate, sürüm gereksinimi ve özellik seti için önceden var olan önbellek dosyasını arar.
  3. Belgelendirme Oluşturma (önbellek kaçırması durumunda):
    • Hedef crate'e bağlı olan geçici bir Rust projesi oluşturur, belirtilen özellikleri Cargo.toml'de etkinleştirir.
    • Geçici dizinde HTML belgelendirmesini oluşturmak için cargo kütüphanesi API'sini kullanarak cargo doc çalıştırır.
    • index.html içeren alt dizini arayarak target/doc içinde doğru çıkış dizinini dinamik olarak konumlandırır.
  4. İçerik Çıkarma (önbellek kaçırması durumunda):
    • Konumlandırılan belgelendirme dizini içindeki HTML dosyalarında yürür.
    • Ana içerik alanından (<section id="main-content">) metin içeriğini çıkarmak için scraper crate'ini kullanarak her HTML dosyasını ayrıştırır.
  5. Gömülü Vektör Oluşturma (önbellek kaçırması durumunda):
    • async-openai crate'i ve tiktoken-rs kullanarak text-embedding-3-small modelini kullanarak her çıkarılan belge yığını için gömülü vektörler oluşturur.
    • İşlenen belirteç sayısına dayalı olarak tahmini maliyeti hesaplar.
  6. Önbelleğe Alma (önbellek kaçırması durumunda): Çıkarılan belge içeriğini ve karşılık gelen gömülü vektörleri bincode kullanarak önbellek dosyasına kaydeder (yol özellikler karmaşasını içerir).
  7. Sunucu Başlatması: RustDocsServer'ı yüklenen/oluşturulan belgeler ve gömülü vektörler ile başlatır.
  8. MCP Sunumu: Stdio üzerinde rmcp kullanarak MCP sunucusunu başlatır.
  9. Sorgu İşleme (query_rust_docs aracı):
    • Kullanıcının sorusu için bir gömülü vektör oluşturur.
    • Soru gömülü vektörü ile tüm önbelleğe alınan belge gömülü vektörleri arasında kosinüs benzerliğini hesaplar.
    • Yüksek benzerliğe sahip belge yığınını tanımlar.
    • Kullanıcının sorusu ve en iyi eşleşen belge yığınının içeriğini OpenAI API aracılığıyla gpt-4o-mini-2024-07-18 modeline gönderir.
    • LLM soruyu yalnızca sağlanan bağlama dayalı olarak cevaplamaya talimatlandırılır.
    • LLM'nin yanıtını MCP istemcisine döndürür.

Lisans

Bu proje MIT Lisansı altında lisanslanmıştır.

Telif Hakkı (c) 2025 Govcraft

Sponsor

Govcraft tek kişilik bir işletmedir—kurumsal destek yok, yatırımcı yok, sadece ben faydalı araçlar yapıyorum. Bu proje size yardımcı olursa, sponsorluk çalışmaların devam etmesini sağlar.

GitHub'da Sponsor Olun

Benzer MCP sunucuları

eyaltoledano/claude-task-master Developer Tools

AI destekli geliştirme için yapay zeka tabanlı görev yönetim sistemi. PRD ayrıştırma, görev genişletme, çoklu provider desteği (Claude, OpenAI, Gemini, Perplexity, xAI) ve optimize edilmiş context kullanımı için seçmeli tool yükleme özelliklerine sahiptir.

eyaltoledano/claude-task-master ★ 27,664
GLips/Figma-Context-MCP Developer Tools

Kodlama ajanlarına Figma verilerine doğrudan erişim sağlayarak tasarım implementasyonunu tek adımda tamamlamalarını sağlar.

GLips/Figma-Context-MCP ★ 15,186
DeusData/codebase-memory-mcp Developer Tools

Yüksek performanslı kod zekası MCP sunucusu. Codebase'leri kalıcı bir knowledge graph'e indeksler — ortalama repo milisaniyeler içinde. 66 dil desteği, sub-ms sorgular, %99 daha az token. Tek statik binary, hiç bağımlılık yok.

DeusData/codebase-memory-mcp ★ 10,848
idosal/git-mcp Developer Tools

gitmcp.io, herhangi bir GitHub repository veya projeye bağlanıp belgelendirme yapabilen genel amaçlı bir remote MCP server'ıdır.

idosal/git-mcp ★ 8,197
mobile-next/mobile-mcp Developer Tools

Android/iOS uygulamaları ve cihazların otomasyon, geliştirme ile app scraping işlemleri için MCP Server. iPhone, Google Pixel, Samsung gibi simülatör, emülatör ve fiziksel cihazları destekler.

mobile-next/mobile-mcp ★ 5,247
21st-dev/magic-mcp Developer Tools

21st.dev'in en iyi tasarım mühendislerinden ilham alarak özel olarak hazırlanmış UI bileşenleri oluşturun.

21st-dev/magic-mcp ★ 5,202
Daha fazla: Developer Tools →