特斯拉车辆控制服务器

一个连接特斯拉车队API的模型上下文协议(MCP)服务器,允许用户通过Claude和其他支持MCP的AI助手控制特斯拉车辆。

  • by scald
  • TypeScript
  • 本地部署
  • 20 星标
  • 更新于
在 GitHub 查看 scald/tesla-mcp

使用说明

特斯拉MCP服务器

模型上下文协议(MCP)服务器,连接到特斯拉车队API,允许您使用Claude和其他支持MCP的人工智能助手控制您的特斯拉车辆。

特性

  • 唤醒车辆:从睡眠模式中唤醒你的特斯拉
  • 车辆信息:获取有关您的特斯拉汽车的详细信息
  • 实时更新:按需刷新车辆数据
  • 调试工具:访问详细的车辆信息以帮助进行故障排除

需求

  • Node.js 18+
  • pnpm(首选)或npm
  • 特斯拉账户至少有一辆车
  • 特斯拉API证书(客户ID和客户机密)
  • Ngrok(用于开发和注册)

安全最佳实践

该项目处理敏感的特斯拉API证书。请遵循以下安全措施:

  • 从不提交凭据:The .gitignore 文件排除 .env 和 keys/ 但一定要仔细检查
  • 使用安全检查器:运行 ./check-secrets.sh 在承诺检测潜在泄露的凭据之前
  • 保护您的私钥:保留内容 keys/ 目录安全
  • 共享前检查代码:确保在任何源文件中都没有硬编码凭据

分叉或共享此项目时:

  1. 确保 .env 文件未包含在内
  2. 检查是否没有提交私钥
  3. 验证 .gitignore 文件设置正确

快速开始

  1. 克隆存储库

    git clone https://github.com/yourusername/tesla-mcp.git
    cd tesla-mcp
    
  2. 安装依赖项

    pnpm install
    
  3. 设置环境变量 创建一个 .env 根目录中的文件:

    TESLA_CLIENT_ID=your_client_id
    TESLA_CLIENT_SECRET=your_client_secret
    TESLA_REFRESH_TOKEN=your_refresh_token
    
  4. 获取刷新令牌 (如果你没有)

    pnpm get-token
    
  5. 注册您的应用程序 使用特斯拉的API

    pnpm register
    

    按照脚本提供的说明进行操作

  6. 构建服务器

    pnpm build
    
  7. 运行服务器

    pnpm start
    

身份验证和注册

该项目使用官方特斯拉车队API OAuth 2.0身份验证流安全连接到您的特斯拉帐户。整个过程包括两个步骤:

  1. 认证:通过OAuth 2.0流程获取刷新令牌
  2. 注册:通过合作伙伴账户API向特斯拉注册您的申请

认证

身份验证要求:

包括 pnpm get-token 该实用程序通过以下方式简化了此过程:

  • 打开浏览器,使用您的特斯拉帐户凭据登录
  • 执行OAuth PKCE(代码交换证明密钥)流
  • 将授权码替换为刷新和访问令牌
  • 将刷新令牌存储在您的 .env 文件

注册

特斯拉车队API要求应用程序在访问车辆数据之前进行注册。注册服务器(pnpm register)自动化此过程:

  • 生成所需的EC密钥对
  • 使用ngrok为开发创建临时公共URL
  • 在所需路径上托管公钥
  • 处理与特斯拉的API注册电话

Ngrok设置(注册所需)

  1. 从以下位置安装ngrok ngrok.com/下载
  2. 在以下网址创建免费帐户 ngrok.com
  3. 从获取您的身份验证令牌 ngrok仪表板
  4. 对ngrok进行身份验证:
    ngrok authtoken YOUR_AUTH_TOKEN
    

可用的MCP工具

服务器提供了Claude可以使用的以下工具:

  • wake_up:将特斯拉汽车从睡眠模式中唤醒

    • 拿 vehicle_id 作为必需参数
    • 返回车辆的当前状态
  • refresh_vehicles:更新特斯拉汽车列表

    • 无需参数
    • 更新车辆的内部缓存
  • debug_vehicles:显示可用车辆的详细信息

    • 无需参数
    • 返回ID、vehicle_ID、VIN和状态信息

设置Claude以使用MCP服务器

  1. 创建Claude配置目录:

    mkdir -p ~/Library/Application\ Support/Claude
    
  2. 创建或编辑配置文件:

    nano ~/Library/Application\ Support/Claude/claude_desktop_config.json
    
  3. 添加以下配置(根据需要调整路径):

    {
      "mcpServers": {
        "tesla-mcp-server": {
          "command": "/absolute/path/to/tesla-mcp/run-mcp.js"
        }
      }
    }
    
  4. 使run-mcp.js脚本可执行:

    chmod +x run-mcp.js
    
  5. 完全重新启动Claude

使用Claude的MCP服务器

一旦服务器运行并配置了Claude,您可以要求Claude:

  • “我有什么特斯拉汽车?”
  • “你能叫醒我的特斯拉吗?”
  • “显示有关我的特斯拉车辆的调试信息”

故障排除

如果您遇到问题:

环境变量

  • 确保您的 .env 文件包含有效凭据
  • 跑 pnpm get-token 如有需要,刷新您的令牌

服务器连接

  • 检查服务器是否正在运行(pnpm start)
  • 验证Claude的配置指向正确的文件路径

车辆连接

  • 车辆可能处于离线或休眠状态
  • 尝试先用 wake_up 命令

调试模式

  • 使用 debug_vehicles 获取车辆详细信息的命令
  • 检查运行MCP服务器的终端中的服务器日志

命令行工具

服务器包括几个有用的脚本:

  • pnpm build:编译TypeScript代码
  • pnpm start:使用Run-mcp.js脚本运行服务器
  • pnpm register:使用特斯拉API注册您的应用程序
  • pnpm get-token:从特斯拉获取刷新令牌
  • pnpm test-api:测试您与特斯拉API的连接
  • pnpm inspector:使用MCP检查器运行服务器进行调试

API限制

截至2023-10-09年,特斯拉在其REST API中否决了许多车辆命令端点。像按喇叭这样的命令现在需要 特斯拉车辆指挥协议 而不是REST API。此MCP服务器当前仅支持保持功能的REST API端点。

未来的增强功能

未来可能的改进包括:

  • 与特斯拉的车辆指挥协议集成,以获取更多命令
  • 支持更多车辆信息端点
  • 用于配置和监控的用户界面

许可证

MIT许可证