ai.smithery/keremurat-jsonmcp
Compare two JSON files deeply, ignoring order, to surface every difference. Get a clear, structure…
★ 0MITfilesystems
Install
Config snippet generator goes here (5 client tabs)
README
# 🔍 JSON Compare MCP Server
<div align="center">




**Derinlemesine ve sıra-bağımsız JSON karşılaştırma MCP tool'u**
*İki JSON dosyasını akıllıca karşılaştırın, farklılıkları tespit edin!*
[🎯 Hızlı Başlangıç](#-hızlı-başlangıç) • [📦 Özellikler](#-özellikler) • [🚀 Kullanım](#-kullanım) • [🧪 Test](#-test)
</div>
---
## ✨ Özellikler
- 🔍 **Derinlemesine Karşılaştırma** - Nested objeler ve array'ler dahil tüm seviyeler
- 🔀 **Sıra-Bağımsız** - Property ve obje sıralaması önemli değil
- 📊 **Detaylı Raporlama** - Eksik, fazla ve farklı değerlerin detaylı raporu
- 🎯 **Path Tracking** - Her farkın tam konumu (örn: `root.user.settings.theme`)
- 🏷️ **Tip Kontrolü** - Değer tiplerini de karşılaştırır
- ⚡ **Hızlı ve Verimli** - Optimize edilmiş recursive algoritma
## 🎯 Hızlı Başlangıç
### 1. Kurulum
```bash
git clone https://github.com/yourusername/json-compare-mcp.git
cd json-compare-mcp
pip install -r requirements.txt
```
### 2. MCP Server'ı Başlat
```bash
python server.py
```
### 3. Test Et
```bash
python test_compare.py
```
## 📦 Ne İçeriyor?
```
json-compare-mcp/
├── 🐍 app.py # JSON karşılaştırma implementasyonu
├── 🚀 server.py # MCP server yapılandırması
├── 🧪 test_compare.py # Test suite
├── 📋 requirements.txt # Python bağımlılıkları
├── 🐳 Dockerfile # Container yapılandırması
├── ⚙️ smithery.yaml # Smithery deployment config
└── 📁 test_samples/ # Örnek JSON dosyaları
├── file1.json
├── file2.json
└── file3_different.json
```
## 🚀 Kullanım
### MCP Tool: `compare_json`
```python
# İki JSON string'ini karşılaştır
compare_json(
json1='{"name": "Ahmet", "age": 30, "city": "Istanbul"}',
json2='{"age": 30, "city": "Istanbul", "name": "Ahmet"}'
)
```
**Not:** Artık dosya yolu değil, direkt JSON string kullanın!
### Çıktı Formatı
```json
{
"status": "different",
"total_differences": 11,
"differences": [
{
"type": "missing_key",
"path": "root.user.settings.language",
"key": "language",
"file1_value": "tr",
"message": "Key 'language' exists in file1 but missing in file2"
},
{
"type": "value_mismatch",
"path": "root.user.name",
"file1_value": "Ahmet Yılmaz",
"file2_value": "Mehmet Demir",
"message": "Value mismatch at 'root.user.name'"
}
],
"summary": {
"missing_keys": 1,
"extra_keys": 2,
"value_mismatches": 8,
"type_mismatches": 0
}
}
```
## 🔍 Karşılaştırma Mantığı
### Seviye 1: Üst Seviye Obje Karşılaştırma
- ✅ Her iki JSON'daki üst seviye objeleri/anahtarları tespit et
- ✅ **SIRALAMA ÖNEMLİ DEĞİL** - Objeler farklı sırada olabilir
- ✅ Eksik/fazla objeleri tespit et ve uyar
- ✅ Eşleşen objeler için Seviye 2'ye geç
### Seviye 2: İç Nesne/Property Karşılaştırma
- ✅ Tüm property'leri karşılaştır
- ✅ **SIRALAMA ÖNEMLİ DEĞİL** - Property'ler farklı sırada olabilir
- ✅ Property varlığı, tip ve içerik kontrolü
- ✅ Array'ler için sıra-bağımsız karşılaştırma
### Fark Tipleri
| Tip | Açıklama |
|-----|----------|
| `missing_key` | Anahtar file1'de var, file2'de yok |
| `extra_key` | Anahtar file2'de var, file1'de yok |
| `value_mismatch` | Değerler farklı |
| `type_mismatch` | Veri tipleri farklı |
## 🧪 Test
### Test Suite'i Çalıştır
```bash
python test_compare.py
```
### Test Senaryoları
1. **Sıra-bağımsız test**: Aynı içerik, farklı sıralama → `identical`
2. **Farklılık tespiti**: Farklı değerler → detaylı fark raporu
3. **Kendisi ile**: Aynı dosya → `identical`
### Test Çıktısı
```
✅ Test 1 - Sıra-bağımsız: BAŞARILI
✅ Test 2 - Farklılık tespiti: BAŞARILI
✅ Test 3 - Aynı dosya: BAŞARILI
🔍 Test 2 Detayları:
- Eksik anahtarlar: 1
- Fazla anahtarlar: 2
- Değer uyuşmazlıkları: 8
- Tip uyuşmazlıkları: 0
- Toplam fark: 11
```
## 🛠️ Geliştirme
### Yeni Tool Eklemek
[app.py](app.py) dosyasına yeni fonksiyon ekle:
```python
def myNewTool(param: str) -> str:
# Your logic
return result
```
[server.py](server.py) dosyasına MCP tool olarak kaydet:
```python
@mcp.tool()
async def my_new_tool(param: str) -> str:
"""Tool açıklaması"""
return myNewTool(param)
```
## 🚀 Deployment
### Smithery Deployment
1. Repository'yi GitHub'a push et
2. Smithery'de repository'yi bağla
3. Tek tıkla deploy et! 🎉
### Docker Deployment
```bash
docker build -t json-compare-mcp .
docker run -p 8000:8000 json-compare-mcp
```
### Manuel Deployment
```bash
pip install -r requirements.txt
python server.py
```
## 📋 Gereksinimler
- Python 3.11+
- mcp
- requests
## 🤝 Katkıda Bulunma
1. 🍴 Fork et
2. 🌱 Feature branch oluştur
3. 💻 Değişiklikleri yap
4. 🧪 Test et
5. 📝 Pull request gönder
## 📄 Lisans
MIT License - Detaylar için [LICEN