Travel & Transportation Python ★ 130

cobanov/teslamate-mcp

TeslaMate veritabanınıza erişim sağlayan Model Context Protocol (MCP) sunucusu; AI asistanlarının Tesla araç verilerini ve analitiğini sorgulamasına olanak tanır.

Claude Desktop config.json'a ekle

{
  "mcpServers": {
    "cobanov-teslamate-mcp": {
      "command": "python",
      "args": [
        "-m",
        "teslamate_mcp"
      ]
    }
  }
}

TeslaMate MCP Server

Bir Model Context Protocol sunucusu; TeslaMate PostgreSQL veritabanınızı MCP-uyumlu AI istemcilerine (Claude Desktop, Cursor, vb.) stdio veya streamable HTTP üzerinden sunar.

CI Release GHCR Python License Ruff Archestra Trust Score

Özellikler

  • 20 araç — 18 önceden tanımlı analiz sorgusu (batarya, şarj, sürüş, verimlilik, konumlar) artı run_sql ve get_database_schema
  • 6 prompt — batarya sağlığı, sürüş özeti, şarj davranışı, anomali avı, hava durumu verimliliği ve hızlı durum raporu için tek tıklamalı iş akışları
  • 2 kaynakteslamate://queries ve teslamate://queries/{name} araç çağırmadan katalog taraması için
  • Sağlamlaştırılmış run_sql — PostgreSQL READ ONLY işlemi içinde statement_timeout, lock_timeout ve otomatik satır sınırı ile çalışır
  • Canlı şema introspeksiyonget_database_schema çalışma zamanında information_schema okur; depoya işlenmemiş eski JSON yok
  • İki taşıma, bir ikili — yerel istemciler için teslamate-mcp stdio, uzak için teslamate-mcp http
  • Bearer-token kimlik doğrulaması zamanlama-güvenli karşılaştırma ile; yaşamasını kontrol etmek için /health probu
  • Decimal → float JSON serileştirmesi — dil modelleri sayıları görmek için, dizeler değil

Gereksinimler

  • TeslaMate zaten PostgreSQL'e karşı çalışıyor
  • Yerel kurulum için Python 3.11+ veya uzak dağıtım için Docker

Kurulum

git clone https://github.com/cobanov/teslamate-mcp.git
cd teslamate-mcp
cp env.example .env
# .env dosyasını düzenleyin — en azından DATABASE_URL'yi ayarlayın
uv sync

CLI

teslamate-mcp konsol betiğinin dört alt komutu vardır:

teslamate-mcp stdio                          # yerel (Cursor / Claude Desktop)
teslamate-mcp http [--host] [--port]         # uzak (HTTP / SSE)
teslamate-mcp gen-token                      # AUTH_TOKEN değeri üret
teslamate-mcp list-tools                     # tanı: kayıtlı araçları listele

python -m teslamate_mcp <alt-komut> da çalışır.

Yerel kullanım (stdio)

MCP istemcinizi stdio sunucusunu başlatacak şekilde yapılandırın. Cursor veya Claude Desktop için örnek:

{
  "mcpServers": {
    "teslamate": {
      "command": "uv",
      "args": ["--directory", "/path/to/teslamate-mcp", "run", "teslamate-mcp", "stdio"]
    }
  }
}

Uzak kullanım (Docker)

cp env.example .env
# DATABASE_URL'yi ve ideal olarak AUTH_TOKEN'ı ayarlayın
docker compose up -d

MCP endpoint'i http://localhost:8888/mcp adresindedir ve yaşamasını kontrol etmek için bir probe http://localhost:8888/health adresinde sunulur.

Önceden derlenmiş çok-mimarilı bir görüntü (linux/amd64, linux/arm64) her etiketlenmiş sürümde GHCR'ye yayınlanır:

docker run --rm -e DATABASE_URL=... -p 8888:8888 ghcr.io/cobanov/teslamate-mcp:latest

Yapılandırma

Tüm ayarlar ortam değişkenlerinden okunur (.env desteklenir). Yalnızca DATABASE_URL gereklidir.

Değişken Varsayılan Notlar
DATABASE_URL gerekli postgresql://user:pass@host:5432/teslamate
AUTH_TOKEN boş HTTP endpoint'inde bearer kimlik doğrulamasını etkinleştirir
HOST 0.0.0.0 HTTP bağlama ana bilgisayarı
PORT 8888 HTTP bağlama portu
POOL_MIN_SIZE 1 psycopg havuzu alt sınırı
POOL_MAX_SIZE 10 psycopg havuzu üst sınırı
QUERY_TIMEOUT_MS 5000 run_sql için statement_timeout
CUSTOM_SQL_ROW_LIMIT 1000 run_sql bir tane sağlamadığında enjekte edilen LIMIT
LOG_LEVEL INFO Standart Python günlük seviyesi
DEBUG false Starlette hata ayıklama modu (üretimde kapalı tutun)

Bir bearer token oluşturun:

uv run teslamate-mcp gen-token

Mevcut araçlar

Önceden tanımlı (18)

Araç: get_basic_car_information, get_current_car_status, get_software_update_history

Batarya ve sağlık: get_battery_health_summary, get_battery_degradation_over_time, get_daily_battery_usage_patterns, get_tire_pressure_weekly_trends

Sürüş: get_monthly_driving_summary, get_daily_driving_patterns, get_longest_drives_by_distance, get_total_distance_and_efficiency, get_drive_summary_per_day

Verimlilik: get_efficiency_by_month_and_temperature, get_average_efficiency_by_temperature, get_unusual_power_consumption

Şarj ve konum: get_charging_by_location, get_all_charging_sessions_summary, get_most_visited_locations

Özel (2)

  • get_database_schema — geçerli TeslaMate şeması (sütun başına bir satır)
  • run_sql(query) — özel bir SELECT veya WITH … SELECT yürütün

Yeni bir sorgu ekleme

  1. src/teslamate_mcp/queries/your_query.sql dosyasına bir SELECT ekleyin.

  2. Kardeş your_query.toml dosyasını ekleyin:

    name = "get_your_data"
    description = "Bunun ne döndürdüğü."
    
  3. Sunucuyu yeniden başlatın. Kayıt otomatik olarak alır.

Geliştirme

uv sync                          # geliştirme bağımlılıklarıyla yükle
uv run ruff check src tests      # lint
uv run ruff format src tests     # biçimlendir
uv run pytest                    # testler (Docker yok ise Docker tabanlı entegrasyon testleri atlanır)

Lisans

MIT — LICENSE dosyasına bakın.

Öne çıkanlarda

 

Benzer MCP sunucuları

Daha fazla: Travel & Transportation →