Skip to main content
Glama
OrtakProje-1

Flutter Package MCP Server

by OrtakProje-1
README.md
# Flutter Package MCP Server

🚀 **Flutter paketleri için Model Context Protocol (MCP) server** - Claude ve diğer AI asistanları ile Flutter paket ekosistemini entegre kullanın!

Pub.dev API'si ile entegre çalışarak Flutter paketlerinin güncel bilgilerini, versiyonlarını ve dokümantasyonlarını AI asistanınızın kullanımına sunar.

## ✨ Özellikler

- 📦 **Paket Bilgileri**: Güncel versiyon, açıklama, bağımlılıklar ve kurulum talimatları
- 🔍 **Akıllı Arama**: Anahtar kelime ile Flutter paket arama
- 📊 **Versiyon Yönetimi**: Tüm paket versiyonlarını listeleme ve karşılaştırma
- 📖 **Kapsamlı Dokümantasyon**: README, API dokümantasyonu ve özel dokümantasyon
- ⭐ **Paket Değerlendirmesi**: Popülerlik, kalite skorları ve topluluk beğenileri
- 🔥 **Trend Analizi**: En popüler ve trend olan paketleri keşfetme
- 🇹🇷 **Türkçe Destek**: Tamamen Türkçe arayüz ve açıklamalar

## 🛠️ Kurulum

### Ön Koşullar

- **Node.js** v18 veya üzeri ([İndir](https://nodejs.org/))
- **npm** veya **yarn** paket yöneticisi
- **Claude Desktop** veya MCP destekli bir AI client

### 1. Projeyi Klonlayın

```bash
git clone https://github.com/OrtakProje-1/flutter-package-mcp-server.git
cd flutter-package-mcp-server
```

### 2. Bağımlılıkları Yükleyin

```bash
npm install
```

### 3. Projeyi Build Edin

```bash
npm run build
```

### 4. Test Edin

```bash
npm run dev
```

Server başarıyla çalışırsa terminalden çıkmak için `Ctrl+C` kullanın.

## 🔧 MCP Client Kurulumu

### Claude Desktop ile Kullanım

1. **Claude Desktop Config Dosyasını Bulun:**

   **macOS:**

   ```bash
   ~/Library/Application Support/Claude/claude_desktop_config.json
   ```

   **Windows:**

   ```bash
   %APPDATA%\Claude\claude_desktop_config.json
   ```

   **Linux:**

   ```bash
   ~/.config/Claude/claude_desktop_config.json
   ```

2. **Config dosyasını düzenleyin:**

   ```json
   {
     "mcpServers": {
       "flutter-packages": {
         "command": "node",
         "args": ["/FULL/PATH/TO/flutter-package-mcp-server/dist/index.js"],
         "env": {}
       }
     }
   }
   ```

   ⚠️ **Önemli:** `/FULL/PATH/TO/flutter-package-mcp-server` kısmını projenin gerçek tam yolu ile değiştirin.

3. **Claude Desktop'ı yeniden başlatın**

### Cursor IDE ile Kullanım

1. **Cursor ayarlarını açın** (`Cmd/Ctrl + ,`)

2. **MCP ayarlarına şu konfigürasyonu ekleyin:**

   ```json
   {
     "mcp": {
       "servers": {
         "flutter-packages": {
           "command": "node",
           "args": ["/FULL/PATH/TO/flutter-package-mcp-server/dist/index.js"]
         }
       }
     }
   }
   ```

3. **Cursor'u yeniden başlatın**

### Diğer MCP Clientlar

Bu server, MCP standardını destekleyen herhangi bir client ile kullanılabilir. Server stdio üzerinden iletişim kurar.

## 🎯 Kullanım Örnekleri

### Paket Bilgisi Alma

```
"http paketinin güncel bilgilerini ve kurulum talimatlarını getir"
```

### Paket Arama

```
"state management için en iyi Flutter paketlerini ara"
```

### Versiyon Karşılaştırması

```
"provider paketinin tüm versiyonlarını listele"
```

### Dokümantasyon

```
"bloc paketinin detaylı dokümantasyonunu ve kullanım örneklerini getir"
```

### Trend Analizi

```
"Bu ay trend olan Flutter paketlerini göster"
```

### Paket Değerlendirmesi

```
"riverpod ve provider paketlerini karşılaştır, hangisi daha popüler?"
```

## 🛠️ Geliştirme

### Geliştirme Ortamını Hazırlama

```bash
# Repository'yi fork edin ve klonlayın
git clone https://github.com/OrtakProje-1/flutter-package-mcp-server.git
cd flutter-package-mcp-server

# Bağımlılıkları yükleyin
npm install

# Geliştirme modunda çalıştırın
npm run dev
```

### Mevcut Scriptler

```bash
# TypeScript'i build et
npm run build

# Geliştirme modunda çalıştır (hot reload)
npm run dev

# Production modunda çalıştır
npm start

# Tip kontrolü
npm run type-check
```

### Proje Yapısı

```
flutter-package-mcp-server/
├── src/
│   └── index.ts          # Ana server kodu
├── dist/                 # Build edilmiş dosyalar
├── package.json
├── tsconfig.json
└── README.md
```

### Yeni Özellik Ekleme

1. `src/index.ts` dosyasında `FlutterPackageMCPServer` sınıfına yeni method ekleyin
2. `setupToolHandlers()` metodunda yeni tool'u tanımlayın
3. `CallToolRequestSchema` handler'ında yeni case ekleyin
4. Build edin ve test edin

## 📊 Mevcut API Araçları

| Araç Adı                    | Açıklama                  | Parametreler                               |
| --------------------------- | ------------------------- | ------------------------------------------ |
| `get_package_info`          | Paket detaylarını getirir | `package_name: string`                     |
| `search_packages`           | Paket arama yapar         | `query: string`, `page?: number`           |
| `get_package_versions`      | Tüm versiyonları listeler | `package_name: string`                     |
| `get_package_documentation` | Dokümantasyon getirir     | `package_name: string`, `version?: string` |
| `get_package_score`         | Paket skorlarını getirir  | `package_name: string`                     |
| `get_trending_packages`     | Trend paketleri listeler  | `page?: number`                            |

## ⚡ Performans ve Limitler

### Pub.dev API Limitleri

- **Rate Limiting**: Saniyede 10 istek, dakikada 600 istek
- **Günlük Limit**: 36,000 istek/saat
- **Timeout**: 30 saniye

### Optimizasyon İpuçları

- Sık kullanılan paketler için cache kullanımı planlanıyor
- Batch istekler gelecek versiyonda eklenecek

## 🐛 Sorun Giderme

### Server Çalışmıyor

```bash
# Node.js versiyonunu kontrol edin
node --version  # v18+ olmalı

# Bağımlılıkları yeniden yükleyin
rm -rf node_modules package-lock.json
npm install

# Build işlemini tekrarlayın
npm run build
```

### Claude Desktop Bağlantı Sorunu

1. **Config dosyası konumunu doublcheck edin**
2. **JSON syntax'ının doğru olduğundan emin olun**
3. **Dosya yolunun mutlak path olduğunu kontrol edin**
4. **Claude Desktop'ı tamamen kapatıp açın**

### API Hataları

```bash
# İnternet bağlantısını test edin
curl https://pub.dev/api/packages/http

# DNS sorunları için
nslookup pub.dev

# Proxy ayarlarınızı kontrol edin
echo $HTTP_PROXY
echo $HTTPS_PROXY
```

### Debug Modu

```bash
# Detaylı loglar için
DEBUG=* npm run dev

# Sadece MCP logları için
DEBUG=mcp:* npm run dev
```

## 🤝 Katkıda Bulunma

Katkılarınızı memnuniyetle karşılıyoruz!

### Katkı Süreci

1. **Fork** edin
2. **Feature branch** oluşturun (`git checkout -b feature/amazing-feature`)
3. **Değişikliklerinizi commit** edin (`git commit -m 'Add amazing feature'`)
4. **Branch'inizi push** edin (`git push origin feature/amazing-feature`)
5. **Pull Request** oluşturun

### Geliştirme Kuralları

- TypeScript strict mode kullanın
- Her yeni özellik için test yazın
- Commit mesajlarında conventional commit formatını kullanın
- README'yi güncel tutun

### İstenen Özellikler

- [ ] Package caching sistemi
- [ ] Offline mod desteği
- [ ] Batch API istekleri
- [ ] Package dependency tree görselleştirmesi
- [ ] Vulnerability checking
- [ ] License compatibility kontrolü

## 📄 Lisans

Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için [LICENSE](LICENSE) dosyasına bakın.

## 🙏 Teşekkürler

- [Pub.dev](https://pub.dev) - Flutter paket repository'si
- [Model Context Protocol](https://modelcontextprotocol.io/) - AI entegrasyon standardı
- [Claude](https://claude.ai) - AI asistan platformu
- [Flutter](https://flutter.dev) - Harika framework

## 📞 Destek

Sorularınız veya sorunlarınız için:

- 🐛 **Bug Report**: [GitHub Issues](https://github.com/OrtakProje-1/flutter-package-mcp-server/issues)
- 💡 **Feature Request**: [GitHub Discussions](https://github.com/OrtakProje-1/flutter-package-mcp-server/discussions)
- 📧 **İletişim**: [hasanuk98@gmail.com](mailto:hasanuk98@gmail.com)

---

⭐ **Bu proje faydalı olduysa star vermeyi unutmayın!**

Made with ❤️ for Flutter Community

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting different aspects of Flutter packages. For example, get_package_documentation retrieves documentation, get_package_info provides metadata, and get_package_score focuses on ratings, with no overlap in functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case, such as get_package_documentation and search_packages. This uniformity makes the tool set predictable and easy to understand for agents.

Tool Count5/5

With 6 tools, the server is well-scoped for its purpose of Flutter package management. Each tool serves a specific, non-redundant function, covering key operations like searching, retrieving info, and trending analysis without being overwhelming.

Completeness4/5

The tool set provides comprehensive coverage for querying and retrieving Flutter package data, including search, info, documentation, versions, scores, and trends. A minor gap exists in update or management operations, but this is reasonable for a read-only package information server.

Maintenance

ActivityInactive
ResponsivenessNo issues