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

12 KiB
Raw Blame History

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:

[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:

[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:

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:

@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ı:

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

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:

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):

import structlog
log = structlog.get_logger()

9.4 Konfigürasyon Yönetimi

Fikir: pydantic-settings ile merkezi konfigürasyon:

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