Files
autocad-mcp-pro/fikir.md
T
2026-04-27 12:20:57 +03:00

443 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AutoCAD MCP Pro — Geliştirme Fikirleri
> **Proje:** autocad-mcp-pro v1.0.0
> **Tarih:** 5 Mart 2026
> **Durum:** 67 tool, 6 resource, 5 prompt — FastMCP 3.0 + Dual Backend (COM + ezdxf)
---
## Mevcut Durum Özeti
| Alan | Durum |
|------|-------|
| Tool sayısı | 67 |
| Resource sayısı | 6 |
| Prompt sayısı | 5 |
| Backend | COM (Windows) + ezdxf (cross-platform) |
| Test | 17 test (sadece ezdxf backend) |
| Coverage aracı | Yok |
| CI/CD | Yok |
| README.md | Eksik |
| Auth | Yok |
| Lint/Format | Konfigüre edilmemiş |
---
## 1. GÜVENLİK — Kritik Öncelik
### 1.1 Path Traversal Koruması
**Sorun:** `drawing_open`, `drawing_save`, `drawing_save_as`, `drawing_export_pdf` gibi tool'lar doğrudan kullanıcı path'i alıyor. `..` veya mutlak path kontrolü yok.
**Risk:** `drawing_open("../../../etc/passwd")` veya `C:\Windows\System32\...` gibi saldırılar mümkün.
**Çözüm:**
- İzin verilen dizinleri tanımlayan `ALLOWED_PATHS` env değişkeni
- `_validate_path()` yardımcı fonksiyonu ile `Path.resolve()` + `is_relative_to()` kontrolü
- Yazma ve okuma işlemleri için ayrı izin seviyeleri
### 1.2 Komut Enjeksiyonu
**Sorun:** `system_run_command` ve `system_run_lisp` ham string alıyor. LLM veya kullanıcıdan gelen input ile tehlikeli komutlar çalıştırılabilir.
**Çözüm:**
- Whitelist tabanlı komut filtresi
- Tehlikeli pattern tespiti (DELETE, ERASE ALL, PURGE vb.)
- Opsiyonel onay mekanizması (user elicitation)
### 1.3 HTTP Transport Güvenliği
**Sorun:** `fastmcp run --transport http` modunda kimlik doğrulama yok.
**Çözüm:**
- FastMCP `AuthMiddleware` ile OAuth 2.1 entegrasyonu
- API key tabanlı basit auth alternatifi
- Rate limiting middleware
---
## 2. KOD KALİTESİ
### 2.1 Sessiz Hata Yutma
**Sorun:** Birden fazla yerde `except Exception: pass` kullanımı var.
| Konum | Sorun |
|-------|-------|
| `ezdxf_backend.py:108-109` | `_entity_info_dxf` içinde hata yutuluyor |
| `ezdxf_backend.py:818-820` | `block_create_from_entities` içinde sessiz except |
| `server.py:60` | `_detect_autocad_running` hata loglamıyor |
**Çözüm:** Her `except` bloğunda en azından `log.debug()` ile loglama. Kritik yerlerde hata toplama ve raporlama.
### 2.2 Lint & Format Konfigürasyonu
**Sorun:** ruff, flake8, mypy, black, isort gibi araçlar tanımlı değil.
**Çözüm:**
```toml
[tool.ruff]
line-length = 100
target-version = "py311"
select = ["E", "F", "I", "N", "W", "UP", "B", "SIM"]
[tool.ruff.format]
quote-style = "double"
[tool.mypy]
python_version = "3.11"
strict = true
```
### 2.3 Pre-commit Hook
**Çözüm:** `.pre-commit-config.yaml` ile:
- ruff lint + format
- mypy type check
- pytest --quick
---
## 3. TEST ALTYAPISI
### 3.1 Mevcut Kapsam (Düşük)
Sadece ezdxf backend test ediliyor, 17 test var. Test edilmeyen alanlar:
- **server.py** — MCP sunucusu, middleware'ler, tool kayıtları
- **com_backend.py** — COM backend (mock ile test edilebilir)
- **Drawing işlemleri** — `drawing_new`, `drawing_open`, `drawing_save`, export'lar
- **Entity oluşturma** — circle, arc, polyline, text, mtext, hatch, spline, ellipse, point, block_ref
- **Dimension** — linear, aligned, angular, radius, diameter
- **Entity düzenleme** — copy, offset, array_rectangular, set_properties, delete_many
- **Layer işlemleri** — delete, set_current, modify, freeze, thaw, lock, unlock, hide, show
- **Block** — insert, explode, get/set_attributes
- **Analysis** — stats, entities_in_region, measure_distance, measure_area, bounding_box
- **View / System** — tüm tool'lar
### 3.2 Coverage Aracı
**Çözüm:** `pytest-cov` eklenmesi:
```toml
[tool.uv]
dev-dependencies = [
"pytest>=8.0",
"pytest-asyncio>=0.23",
"pytest-cov>=5.0",
]
```
### 3.3 Test Stratejisi
| Hedef | Yaklaşım |
|-------|----------|
| ezdxf backend | Birim testleri (mevcut + genişletme) |
| COM backend | Mock tabanlı testler (pywin32 mock) |
| server.py | FastMCP test client ile entegrasyon testleri |
| Middleware | İzole birim testleri |
### 3.4 Hedef Coverage
- Kısa vade: %60+
- Orta vade: %80+
- Uzun vade: %90+
---
## 4. CI/CD PİPELINE
### 4.1 GitHub Actions
**Çözüm:** `.github/workflows/ci.yml`:
- Python 3.11, 3.12 matrix
- `pip install -e ".[full]"` + dev dependencies
- `ruff check .` + `ruff format --check .`
- `pytest --cov=. --cov-report=xml`
- Coverage badge güncelleme
### 4.2 Release Otomasyonu
- Tag tabanlı PyPI publish
- Changelog otomasyonu
- Docker image build (opsiyonel)
---
## 5. PERFORMANS İYİLEŞTİRMELERİ
### 5.1 Büyük Çizimlerde Entity Listesi
**Sorun:** `entity_list` tüm modelspace'i iterate ediyor, filtre sonradan uygulanıyor.
**Çözüm:**
- Backend tarafında filtreleme (COM SelectionSet kullanımı)
- Streaming / generator tabanlı entity erişimi
- Sayfalama (pagination) desteği
### 5.2 Analysis İşlemleri
**Sorun:** `analysis_layer_stats` 50.000 limitle tüm entity'leri çekiyor. `analysis_entities_in_region` her entity için bbox hesaplıyor.
**Çözüm:**
- Batch işleme ve streaming
- Spatial index (R-tree) kullanımı
- Sonuç cache'leme (değişiklik yoksa)
### 5.3 Undo Stack Bellek Kullanımı
**Sorun:** ezdxf backend'de tam DXF snapshot'ları `_undo_stack`'te saklanıyor.
**Çözüm:**
- Delta tabanlı undo (sadece değişiklikleri kaydetme)
- Maksimum undo sayısı sınırı
- Snapshot sıkıştırma
### 5.4 Tool Pagination
**Sorun:** 67 araç tek listede sunuluyor.
**Çözüm:** FastMCP `list_page_size` parametresi ile pagination:
```python
mcp = FastMCP("AutoCAD MCP Pro", list_page_size=20)
```
---
## 6. YENİ ÖZELLİK FİKİRLERİ
### 6.1 DWG Doğrudan Desteği
**Mevcut:** ezdxf yalnızca DXF okuyabiliyor.
**Fikir:** ODA File Converter veya LibreDWG ile DWG → DXF otomatik dönüşüm pipeline'ı.
### 6.2 Batch İşlem Desteği
**Fikir:** Tek bir çağrıda birden fazla entity oluşturma/düzenleme:
```python
@mcp.tool()
async def entity_batch_create(entities: list[dict], ctx: Context) -> list[EntityInfo]:
"""Tek çağrıda birden fazla entity oluştur"""
```
### 6.3 Template Sistemi
**Fikir:** Hazır çizim şablonları:
- Başlık bloğu (title block)
- Ölçek barı
- Kuzey oku
- Standart katman setleri (mimari, mekanik, elektrik)
### 6.4 Stil Yönetimi
**Fikir:** Text style, dimension style, linetype yönetimi tool'ları:
```
style_text_create, style_text_list
style_dimension_create, style_dimension_list
linetype_load, linetype_list
```
### 6.5 Koordinat Sistemi Desteği
**Fikir:** UCS (User Coordinate System) yönetimi:
```
ucs_set, ucs_get, ucs_reset, ucs_rotate
```
### 6.6 Annotation Araçları
**Fikir:** Leader, multileader, revision cloud, wipeout:
```
entity_create_leader, entity_create_multileader
entity_create_revision_cloud, entity_create_wipeout
```
### 6.7 Xref Yönetimi
**Fikir:** Harici referans dosyaları:
```
xref_attach, xref_detach, xref_reload, xref_list, xref_bind
```
### 6.8 Layout & Viewport
**Fikir:** Paper space ve viewport yönetimi:
```
layout_create, layout_list, layout_delete
viewport_create, viewport_set_scale, viewport_freeze_layer
```
### 6.9 Table & Schedule
**Fikir:** Tablo oluşturma ve veri çıkarma:
```
table_create, table_set_data, table_extract_data
schedule_create_from_blocks
```
### 6.10 Export Genişletme
**Fikir:** Ek export formatları:
- SVG export (web görüntüleme)
- PNG/JPEG export (ezdxf matplotlib backend)
- STEP/IGES export (3D modeller için)
- JSON export (veri analizi)
---
## 7. KULLANICI DENEYİMİ
### 7.1 Progress Bildirimi
**Fikir:** Uzun süren işlemlerde `ctx.report_progress()` kullanımı:
```python
for i, entity in enumerate(entities):
await ctx.report_progress(i, total)
```
### 7.2 Daha İyi Hata Mesajları
**Fikir:** Hata mesajlarında çözüm önerisi:
```
"Layer 'WALLS' bulunamadı. Mevcut katmanlar: 0, DOORS, WINDOWS.
layer_create('WALLS') ile oluşturabilirsiniz."
```
### 7.3 Akıllı Varsayılanlar
**Fikir:** Entity oluştururken akıllı varsayılanlar:
- Mevcut katmanı otomatik kullan
- Son kullanılan renk/linetype'ı hatırla
- Standart ölçü stilleri otomatik yükle
### 7.4 Çizim Doğrulama
**Fikir:** Çizim kalite kontrol tool'u:
```
validation_check_overlaps — Üst üste binen entity'ler
validation_check_gaps — Bağlanmamış çizgiler
validation_check_standards — Katman/stil standartlarına uyum
validation_check_scale — Ölçek tutarlılığı
```
---
## 8. DÖKÜMANTASYON
### 8.1 README.md
**Durum:** Eksik (pyproject.toml referans veriyor ama dosya yok).
**İçerik:**
- Proje açıklaması ve özellikler
- Kurulum adımları
- Kullanım örnekleri
- Backend seçimi rehberi
- Tool listesi ve açıklamaları
- Katkıda bulunma rehberi
### 8.2 API Dokümantasyonu
**Fikir:** Her tool grubu için detaylı dokümantasyon:
- Parametre açıklamaları
- Örnek kullanımlar
- Hata senaryoları
- İlişkili tool'lar
### 8.3 Örnek Projeler
**Fikir:** `examples/` dizini altında:
- `01_basic_drawing.py` — Temel çizim oluşturma
- `02_floor_plan.py` — Kat planı oluşturma
- `03_batch_operations.py` — Toplu işlemler
- `04_analysis.py` — Çizim analizi
- `05_export.py` — Farklı formatlara export
### 8.4 .env.example
```env
AUTOCAD_MCP_BACKEND=auto
# ALLOWED_PATHS=/path/to/drawings
# LOG_LEVEL=INFO
```
---
## 9. ALTYAPI
### 9.1 Docker Desteği
**Fikir:** ezdxf backend için Dockerfile:
```dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -e .
CMD ["python", "server.py"]
```
### 9.2 OpenTelemetry
**Fikir:** Tracing ve metrics:
- Tool çağrı süreleri
- Hata oranları
- Backend durumu
- Entity sayısı metrikleri
### 9.3 Logging İyileştirme
**Fikir:** Structured logging (JSON format):
```python
import structlog
log = structlog.get_logger()
```
### 9.4 Konfigürasyon Yönetimi
**Fikir:** pydantic-settings ile merkezi konfigürasyon:
```python
class Settings(BaseSettings):
backend: str = "auto"
allowed_paths: list[str] = []
max_undo_stack: int = 50
log_level: str = "INFO"
```
---
## 10. ÖNCELİK MATRİSİ
| # | Fikir | Öncelik | Etki | Zorluk |
|---|-------|---------|------|--------|
| 1 | Path traversal koruması | 🔴 Kritik | Yüksek | Düşük |
| 2 | Komut enjeksiyonu koruması | 🔴 Kritik | Yüksek | Orta |
| 3 | README.md oluşturma | 🟠 Yüksek | Orta | Düşük |
| 4 | Sessiz except düzeltme | 🟠 Yüksek | Orta | Düşük |
| 5 | Ruff lint konfigürasyonu | 🟠 Yüksek | Orta | Düşük |
| 6 | Test kapsamı genişletme | 🟠 Yüksek | Yüksek | Orta |
| 7 | CI/CD pipeline | 🟠 Yüksek | Yüksek | Orta |
| 8 | Batch işlem desteği | 🟡 Orta | Yüksek | Orta |
| 9 | Template sistemi | 🟡 Orta | Yüksek | Orta |
| 10 | Stil yönetimi tool'ları | 🟡 Orta | Orta | Düşük |
| 11 | Annotation araçları | 🟡 Orta | Orta | Orta |
| 12 | Layout & viewport | 🟡 Orta | Yüksek | Yüksek |
| 13 | Performans iyileştirmeleri | 🟡 Orta | Orta | Orta |
| 14 | Progress bildirimi | 🟡 Orta | Orta | Düşük |
| 15 | Çizim doğrulama | 🟢 Düşük | Orta | Orta |
| 16 | Docker desteği | 🟢 Düşük | Düşük | Düşük |
| 17 | OpenTelemetry | 🟢 Düşük | Düşük | Orta |
| 18 | DWG doğrudan desteği | 🟢 Düşük | Yüksek | Yüksek |
| 19 | Xref yönetimi | 🟢 Düşük | Orta | Yüksek |
| 20 | SVG/JSON export | 🟢 Düşük | Orta | Orta |
---
## Sonuç
AutoCAD MCP Pro, güçlü bir temele sahip. 67 tool ile zengin işlevsellik sunuyor ve dual-backend mimarisi esneklik sağlıyor. Öncelikli iyileştirme alanları:
1. **Güvenlik** — Path ve komut koruması production için zorunlu
2. **Kalite** — Lint, test, CI/CD ile sürdürülebilirlik
3. **Yeni özellikler** — Batch, template, stil, annotation ile profesyonel CAD iş akışları
4. **Altyapı** — Docker, telemetry, structured logging ile operasyonel olgunluk