🚀 TeslaMate MCP Server
このサーバーはModel Context Protocol (MCP)を採用し、TeslaMateデータベースにアクセスできるようにします。AIアシスタントがTesla車両のデータや分析情報をクエリできるようになります。

🚀 クイックスタート
このMCPサーバーは、TeslaMateのPostgreSQLデータベースに接続し、Tesla車両の情報、運転統計、充電データ、バッテリーの健康状態、効率指標、位置分析などを取得するためのさまざまなツールを提供します。Claude DesktopなどのMCP互換のAIアシスタントと連携して、Teslaのデータに関する自然言語クエリを行うことができます。
✨ 主な機能
- TeslaMateのPostgreSQLデータベースに接続し、車両情報や統計データを取得する。
- MCP互換のAIアシスタントと連携して、自然言語でのクエリを可能にする。
- 20種類のツールを提供し、Teslaのデータを柔軟にクエリできる。
📦 インストール
オプション1: ローカルインストール
- このリポジトリをクローンします。
git clone https://github.com/yourusername/teslamate-mcp.git
cd teslamate-mcp
- 依存関係をインストールします。uvを使用することをおすすめします。
uv sync
または、pipを使用することもできます。pip install -r requirements.txt
- プロジェクトのルートに
.envファイルを作成します。DATABASE_URL=postgresql://username:password@hostname:port/teslamate
オプション2: Dockerデプロイメント(リモートアクセス)
Dockerを使用したリモートデプロイメントのクイックスタートです。
git clone https://github.com/yourusername/teslamate-mcp.git
cd teslamate-mcp
./deploy.sh deploy
cp env.example .env
docker-compose up -d
リモートサーバーは以下のURLで利用できます。
- Streamable HTTP:
http://localhost:8888/mcp
認証の設定(オプション)
ベアラートークン認証でリモートMCPサーバーをセキュリティ保護するには、以下の手順を実行します。
.envファイルにベアラートークンを設定します。AUTH_TOKEN=your-secret-bearer-token-here
安全なトークンを生成します。
python3 generate_token.py
openssl rand -base64 32
- MCPクライアントから接続するときは、Authorizationヘッダーを含めます。
{
"mcpServers": {
"teslamate-remote": {
"url": "http://your-server:8888/mcp",
"transport": "streamable_http",
"headers": {
"Authorization": "Bearer your-secret-bearer-token-here"
}
}
}
}
- テストにはcurlを使用することもできます。
curl -H "Authorization: Bearer your-secret-bearer-token-here" \
http://localhost:8888/mcp
セキュリティに関する考慮事項
- 本番環境ではHTTPSを使用する:ベアラートークンは平文で送信されます。本番環境では常にHTTPS/TLSを使用してください。
- 強力なトークンを使用する:長くランダムなトークン(少なくとも32文字)を使用してください。
- 環境変数を使用する:トークンをバージョン管理にコミットしないでください。環境変数またはシークレット管理を使用してください。
- ネットワークセキュリティを強化する:追加のセキュリティのために、VPNを使用するか、IPアドレスでアクセスを制限することを検討してください。
- トークンを定期的にローテーションする:ベアラートークンを定期的にローテーションしてください。
💻 使用例
基本的な使用法
uv run python main.py
クエリの例
MCPクライアントで設定した後、自然言語での質問をカテゴリ別に行うことができます。
基本的な車両情報
- "What's my Tesla's basic information?"(私のTeslaの基本情報は何ですか?)
- "Show me my current car status"(現在の車両の状態を表示してください)
- "What software updates has my Tesla received?"(私のTeslaはどのようなソフトウェアアップデートを受けましたか?)
バッテリーと健康状態
- "How is my battery health?"(私のバッテリーの健康状態はどうですか?)
- "Show me battery degradation over time"(経時的なバッテリーの劣化を表示してください)
- "What are my daily battery usage patterns?"(私の毎日のバッテリー使用パターンはどうですか?)
- "How are my tire pressures trending?"(私のタイヤの空気圧の傾向はどうですか?)
運転分析
- "Show me my monthly driving summary"(私の月次の運転概要を表示してください)
- "What are my daily driving patterns?"(私の毎日の運転パターンはどうですか?)
- "What are my longest drives by distance?"(距離で最も長いドライブはどれですか?)
- "What's my total distance driven and efficiency?"(私の総走行距離と効率はどうですか?)
効率分析
- "How does temperature affect my efficiency?"(温度は私の効率にどのような影響を与えますか?)
- "Show me efficiency trends by month and temperature"(月と温度別の効率傾向を表示してください)
- "Are there any unusual power consumption patterns?"(異常な電力消費パターンはありますか?)
充電と位置データ
- "Where do I charge most frequently?"(私は最も頻繁にどこで充電しますか?)
- "Show me all my charging sessions summary"(私のすべての充電セッションの概要を表示してください)
- "What are my most visited locations?"(私が最も頻繁に訪れる場所はどこですか?)
カスタムSQLクエリ
- "Show me the database schema"(データベースのスキーマを表示してください)
- "Run a SQL query to find drives longer than 100km"(100km以上のドライブを見つけるSQLクエリを実行してください)
- "Query the average charging power by location"(場所別の平均充電電力をクエリしてください)
- "Find all charging sessions at superchargers"(スーパーチャージャーでのすべての充電セッションを見つけてください)
注意: run_sqlツールはSELECTクエリのみを許可します。すべてのデータ変更操作(INSERT、UPDATE、DELETE、DROPなど)は安全上の理由から厳禁です。
📚 ドキュメント
環境変数
DATABASE_URL: TeslaMateデータベースのPostgreSQL接続文字列
MCPクライアントの設定
このサーバーをClaude Desktopとともに使用するには、MCP設定ファイルに以下を追加します。
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
ローカル設定(stdioトランスポート)
{
"mcpServers": {
"teslamate": {
"command": "uv",
"args": ["run", "python", "/path/to/teslamate-mcp/main.py"],
"env": {
"DATABASE_URL": "postgresql://username:password@hostname:port/teslamate"
}
}
}
}
リモート設定(streamable HTTPトランスポート)
リモートサーバーに接続するには、以下の設定を使用します。
{
"mcpServers": {
"TeslaMate": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://your-private-server:8888/mcp",
"--allow-http"
]
}
}
}
認証を有効にした場合は、以下の設定を使用します。
{
"mcpServers": {
"TeslaMate": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://your-private-server:8888/mcp",
"--allow-http",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer <secret bearer token>"
}
}
}
}
🔧 技術詳細
このMCPサーバーは、TeslaMateのPostgreSQLデータベースに接続し、20種類のツールを提供してTeslaのデータをクエリできるようにします。事前定義されたクエリツールとカスタムクエリツールがあり、柔軟なデータ取得が可能です。
利用可能なツール
事前定義されたクエリツール
get_basic_car_information - 基本的な車両詳細(VIN、モデル、名前、色など)
get_current_car_status - 現在の状態、位置、バッテリーレベル、温度
get_software_update_history - ソフトウェアアップデートのタイムライン
get_battery_health_summary - バッテリーの劣化と健康指標
get_battery_degradation_over_time - 経時的なバッテリー容量の傾向
get_daily_battery_usage_patterns - 毎日のバッテリー消費パターン
get_tire_pressure_weekly_trends - タイヤの空気圧の履歴と傾向
get_monthly_driving_summary - 月次の走行距離、効率、運転時間
get_daily_driving_patterns - 毎日の運転習慣とパターン
get_longest_drives_by_distance - 距離で最も長いドライブの詳細
get_total_distance_and_efficiency - 全体的な運転統計
get_drive_summary_per_day - 毎日の運転概要
get_efficiency_by_month_and_temperature - 温度別の効率分析
get_average_efficiency_by_temperature - 温度が効率に与える影響
get_unusual_power_consumption - 異常な電力消費の検出
get_charging_by_location - 場所別の充電統計
get_all_charging_sessions_summary - 完全な充電履歴の概要
get_most_visited_locations - 頻繁に訪れる場所
カスタムクエリツール
get_database_schema - 完全なデータベーススキーマ(テーブル、列、データ型)を返す
run_sql - 安全な検証付きでカスタムSELECTクエリを実行する
- SELECT文のみ許可
- DROP、CREATE、INSERT、UPDATE、DELETE、ALTERなどを防止
- 複数の文の実行をブロック
- 文字列とコメントを安全に処理
新しいクエリの追加
queries/ディレクトリに新しいSQLファイルを作成します。
main.pyに対応するツール関数を追加します。
- 既存のエラーハンドリングとデータベース接続のパターンに従います。
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細については、LICENSEファイルを参照してください。
謝辞
バグや機能要求については、GitHubでイシューを開いてください。