Command Line Python ★ 171

MladenSU/cli-mcp-server

Güvenli yürütme ve özelleştirilebilir güvenlik politikaları ile komut satırı arayüzü.

Claude Desktop config.json'a ekle

{
  "mcpServers": {
    "mladensu-cli-mcp-server": {
      "command": "python",
      "args": [
        "-m",
        "cli_mcp_server"
      ]
    }
  }
}

CLI MCP Server


Kontrollü komut satırı işlemlerini yürütmek için kapsamlı güvenlik özellikleri içeren güvenli bir Model Context Protocol (MCP) sunucu uygulaması.

License Python Version MCP Protocol smithery badge Python Tests


İçindekiler

  1. Genel Bakış
  2. Özellikler
  3. Konfigürasyon
  4. Mevcut Araçlar
  5. Claude Desktop ile Kullanım
  6. Güvenlik Özellikleri
  7. Hata İşleme
  8. Geliştirme
  9. Lisans

Genel Bakış

Bu MCP sunucusu, komut satırı yürütmeyi komut beyaz listesi, yol doğrulaması ve yürütme denetimleri dahil olmak üzere güçlü güvenlik önlemleriyle güvenli bir şekilde sağlar. LLM uygulamalarına kontrollü CLI erişimi sağlarken güvenliği korumak için mükemmeldir.

Özellikler

  • 🔒 Sıkı doğrulama ile güvenli komut yürütme
  • ⚙️ 'all' seçeneği ile yapılandırılabilir komut ve flag beyaz listesi
  • 🛡️ Path traversal önleme ve doğrulama
  • 🚫 Shell operatörü injection koruması
  • ⏱️ Yürütme zaman aşımları ve uzunluk sınırları
  • 📝 Detaylı hata raporlaması
  • 🔄 Async işlem desteği
  • 🎯 Çalışma dizini kısıtlaması ve doğrulaması

Konfigürasyon

Sunucuyu ortam değişkenleri kullanarak yapılandırın:

Değişken Açıklama Varsayılan
ALLOWED_DIR Komut yürütme için temel dizin (Gerekli) None (Gerekli)
ALLOWED_COMMANDS Virgülle ayrılmış izin verilen komutlar veya 'all' ls,cat,pwd
ALLOWED_FLAGS Virgülle ayrılmış izin verilen flagler veya 'all' -l,-a,--help
MAX_COMMAND_LENGTH Maksimum komut dizesi uzunluğu 1024
COMMAND_TIMEOUT Komut yürütme zaman aşımı (saniye) 30
ALLOW_SHELL_OPERATORS Shell operatörlerine izin ver (&&, ||, |, >, vb.) false

Not: ALLOWED_COMMANDS veya ALLOWED_FLAGS değerini 'all' olarak ayarlamak sırasıyla herhangi bir komuta veya flaga izin verecektir.

Kurulum

CLI MCP Server'ı Smithery aracılığıyla Claude Desktop'a otomatik olarak kurmak için:

npx @smithery/cli install cli-mcp-server --client claude

Mevcut Araçlar

run_command

İzin verilen dizinler içinde beyaz listeye alınan CLI komutlarını yürütür.

Input Schema:

{
  "command": {
    "type": "string",
    "description": "Yürütülecek tek komut (örn: 'ls -l' veya 'cat file.txt')"
  }
}

Güvenlik Notları:

  • Shell operatörleri (&&, |, >, >>) varsayılan olarak desteklenmez, ancak ALLOW_SHELL_OPERATORS=true ile etkinleştirilebilir
  • Komutlar ALLOWED_COMMANDS='all' olmadığı sürece beyaz listeye alınmalıdır
  • Flagler ALLOWED_FLAGS='all' olmadığı sürece beyaz listeye alınmalıdır
  • Tüm yollar ALLOWED_DIR içinde olacak şekilde doğrulanır

show_security_rules

Geçerli güvenlik konfigürasyonunu ve kısıtlamalarını görüntüler:

  • Çalışma dizini
  • İzin verilen komutlar
  • İzin verilen flagler
  • Güvenlik sınırları (maksimum komut uzunluğu ve zaman aşımı)

Claude Desktop ile Kullanım

~/Library/Application\ Support/Claude/claude_desktop_config.json dosyasına ekleyin:

Geliştirme/Yayınlanmamış Sunucular Konfigürasyonu

{
  "mcpServers": {
    "cli-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "<path/to/the/repo>/cli-mcp-server",
        "run",
        "cli-mcp-server"
      ],
      "env": {
        "ALLOWED_DIR": "</your/desired/dir>",
        "ALLOWED_COMMANDS": "ls,cat,pwd,echo",
        "ALLOWED_FLAGS": "-l,-a,--help,--version",
        "MAX_COMMAND_LENGTH": "1024",
        "COMMAND_TIMEOUT": "30",
        "ALLOW_SHELL_OPERATORS": "false"
      }
    }
  }
}

Yayınlanmış Sunucular Konfigürasyonu

{
  "mcpServers": {
    "cli-mcp-server": {
      "command": "uvx",
      "args": [
        "cli-mcp-server"
      ],
      "env": {
        "ALLOWED_DIR": "</your/desired/dir>",
        "ALLOWED_COMMANDS": "ls,cat,pwd,echo",
        "ALLOWED_FLAGS": "-l,-a,--help,--version",
        "MAX_COMMAND_LENGTH": "1024",
        "COMMAND_TIMEOUT": "30",
        "ALLOW_SHELL_OPERATORS": "false"
      }
    }
  }
}

Çalışmıyorsa veya UI'da gösterilmiyorsa, uv clean aracılığıyla önbelleğinizi temizleyin.

Güvenlik Özellikleri

  • ✅ 'all' seçeneği ile komut beyaz listesi zorunluluğu
  • ✅ 'all' seçeneği ile flag doğrulaması
  • ✅ Path traversal önleme ve normalizasyon
  • ✅ Shell operatörü engelleme (ALLOW_SHELL_OPERATORS=true ile opt-in desteği)
  • ✅ Komut uzunluk sınırları
  • ✅ Yürütme zaman aşımları
  • ✅ Çalışma dizini kısıtlamaları
  • ✅ Symlink çözümlemesi ve doğrulaması

Hata İşleme

Sunucu şu durumlar için detaylı hata mesajları sağlar:

  • Güvenlik ihlalleri (CommandSecurityError)
  • Komut zaman aşımları (CommandTimeoutError)
  • Geçersiz komut formatları
  • Path güvenlik ihlalleri
  • Yürütme başarısızlıkları (CommandExecutionError)
  • Genel komut hataları (CommandError)

Geliştirme

Ön Koşullar

  • Python 3.10+
  • MCP protocol kütüphanesi

Derleme ve Yayınlama

Paketi dağıtım için hazırlamak için:

  1. Bağımlılıkları senkronize edin ve lockfile'ı güncelleyin:

    uv sync
    
  2. Paket dağıtımlarını derleyin:

    uv build
    

    Bu, dist/ dizininde kaynak ve wheel dağıtımları oluşturacaktır.

  3. PyPI'ye yayınlayın:

    uv publish --token {{YOUR_PYPI_API_TOKEN}}
    

Hata Ayıklama

MCP sunucuları stdio üzerinden çalıştığı için hata ayıklama zor olabilir. En iyi hata ayıklama deneyimi için, MCP Inspector kullanmanızı şiddetle tavsiye ederiz.

MCP Inspector'ı npm ile şu komut kullanarak başlatabilirsiniz:

npx @modelcontextprotocol/inspector uv --directory {{your source code local directory}}/cli-mcp-server run cli-mcp-server

Başlatıldığında, Inspector hata ayıklamaya başlamak için tarayıcınızda erişebileceğiniz bir URL gösterecektir.

Lisans

Bu proje MIT Lisansı altında lisanslanmıştır - detaylar için LICENSE dosyasına bakın.


Daha fazla bilgi veya destek için lütfen proje deposunda bir issue açın.

Benzer MCP sunucuları

Daha fazla: Command Line →