# 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