特斯拉MCP服务器
A. 模型上下文协议 (MCP)服务器,用于特斯拉车队API。控制你的特斯拉,从任何支持MCP的人工智能助手或代理那里获取车辆数据(位置、唤醒、列出汽车)。
特性
- list_cars --列出您的车辆并获取ID,以便与其他工具一起使用
- get_vehicle_location --当前GPS位置和谷歌地图链接(停车监控风格)
- 唤醒 --将车辆从睡眠中唤醒
- 冷藏车 / debug_vehicles --刷新列表和调试信息
- HTTP/SSE模式 --主机即web服务;每个用户都带来自己的Tesla Developer凭据(不需要服务器端机密)
- 接收和回复文本(可选) --配置Twilio后,通过webhook接收入站短信并使用 get_recent_texts / send_text 因此,代理可以读取和回复消息
安全
- 我们永远不会看到或存储您的特斯拉密码。 登录是通过浏览器中的特斯拉OAuth进行的。
- HTTP模式: 凭证和令牌仅存储在每个会话的内存中;未写入磁盘。
- 日志中没有敏感数据 -我们不记录令牌、完整会话ID或API响应主体。
- 在您做出承诺之前: 跑
./check-secrets.sh捕捉意外的硬编码秘密。
看 安全.md 了解详细信息以及如何报告问题。
______________________________________________________________________
快速入门(托管——推荐)
无需在本地运行任何东西即可使用服务器。每个用户都使用自己的特斯拉帐户进行连接。
1.在MCP客户端中添加服务器
- 服务器URL:
https://tesla-mcp.onrender.com/sse\
(或使用您自己部署的URL;请参阅 部署 在......下面)
2.第一次:连接你的特斯拉
- 使用工具(例如。 get_setup_url)--代理将返回一个链接。
- 打开链接并输入您的 特斯拉开发者 客户端ID和客户端密码。
- 重定向时使用您的特斯拉帐户登录。
- 在 成功页面,复制 连接URL (例如。
https://.../sse?token=...). 将该URL用作MCP服务器URL 在您的客户端中,因此重新连接会让您保持登录状态。保持私密。 - 如果您不添加该URL,您的客户端可能会在每次重新连接时获得一个新会话,并要求您重新设置。
获取特斯拉开发者证书: 在以下位置创建应用程序 developer.tesla.com。将重定向URI设置为 https://YOUR_SERVER_URL/auth/callback (例如。 https://tesla-mcp.onrender.com/auth/callback).
提供: 集 实例计数为1 (仪表板→ 您的服务→ 设置),这样所有请求都会到达同一台服务器,您的会话不会丢失。
______________________________________________________________________
快速入门(本地)
选项A:HTTP服务器(多用户、浏览器身份验证)
git clone https://github.com/Sara3/Tesla-MCP.git
cd Tesla-MCP
npm install
npm run build
npm run start:http- 打开
http://localhost:3000并按照设置链接添加您的特斯拉开发者凭据并登录。 - 在MCP客户端中,使用服务器URL:
http://localhost:3000/sse(对于生产环境,请使用HTTPS并设置BASE_URL).
选项B:Stdio(仅限单用户.env)
对于具有凭据的单个用户 .env:
# .env
TESLA_CLIENT_ID=...
TESLA_CLIENT_SECRET=...
TESLA_REFRESH_TOKEN=...npm run build
npm start配置MCP客户端以运行服务器命令(例如。 node run-mcp.js).获取刷新令牌 npm run get-token.
______________________________________________________________________
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
| HTTP模式 | ||
BASE_URL | 是(生产) | 服务器的公共HTTPS URL(例如。 https://tesla-mcp.onrender.com) |
TESLA_CLIENT_ID | 可选 | 如果设置为 TESLA_CLIENT_SECRET,用户去 直接进入特斯拉登录页面 (无设置页面) |
TESLA_CLIENT_SECRET | 可选 | 服务器Tesla应用程序机密;与...一起使用 TESLA_CLIENT_ID |
PORT | 否 | 端口(默认 3000) |
HOST | 否 | 绑定地址(默认 0.0.0.0) |
| 标准模式 | ||
TESLA_CLIENT_ID | 是 | 来自 developer.tesla.com |
TESLA_CLIENT_SECRET | 是 | 来自开发者门户 |
TESLA_REFRESH_TOKEN | 是 | 来自 npm run get-token |
| 短信(Twilio,仅限HTTP模式) | ||
TWILIO_ACCOUNT_SID | 可选 | Twilio帐户SID(启用get_cent_texts/send_text) |
TWILIO_AUTH_TOKEN | 可选 | Twilio身份验证令牌 |
TWILIO_PHONE_NUMBER | 可选 | 您的Twilio电话号码(E.164,例如+15551234567) |
短信设置: 在Twilio控制台中,将您的电话号码的“A message comes In”webhook设置为 https://YOUR_BASE_URL/webhooks/twilio/sms (例如。 https://tesla-mcp.onrender.com/webhooks/twilio/sms).入站消息存储在内存中,并由返回 get_recent_texts;使用 send_text 回答。
永不承诺 .env 或 keys/.快跑 ./check-secrets.sh 在推之前。
______________________________________________________________________
工具(MCP)
| 工具 | 说明 |
|---|---|
| get_setup_url | 获取设置Tesla Developer凭据的URL |
| get_auth_url | 获取连接您的特斯拉帐户的URL(设置后) |
| 列表_车辆 | 列出车辆及其ID(与其他工具一起使用) |
| get_vehicle_location | 当前位置(纬度/经度+谷歌地图链接);拿 vehicle_id |
| 唤醒 | 唤醒车辆;拿 vehicle_id |
| 冷藏车 | 从API刷新车辆列表 |
| debug_vehicles | 调试信息(ID、VIN、状态) |
| get_recent_texts | 列出最近的入站短信(可选;需要Twilio env变量) |
| send_text | 向号码发送短信(可选;需要Twilio;args: to, body) |
对于 车辆id 您可以使用 id, vehicle_id,或 vin 从 list_cars.为 send_text,使用E.164电话号码(例如。 +15551234567).
______________________________________________________________________
部署
渲染
- 将您的GitHub仓库连接到 render.com → New → Web服务。
- 构建命令:
npm install && npm run build\
启动命令: npm run start:http
- 添加环境变量: BASE_URL =
https://YOUR-SERVICE.onrender.com - 用户将特斯拉应用程序重定向URI设置为
https://YOUR-SERVICE.onrender.com/auth/callback.
码头工人
docker build -t tesla-mcp .
docker run -p 3000:3000 -e BASE_URL=https://your-domain.com tesla-mcp生产: 使用HTTPS并设置 BASE_URL 到您的公共URL。在渲染时,设置 实例计数为1 因此,会议得以持续。看 安全.md.
______________________________________________________________________
故障排除
会话不断重置/设置不断询问
- 确认凭据已保存 --提交设置表单后,您应该看到一个绿色的 “凭据已成功保存” 消息。如果您看到这一点,则表示您的客户端ID和密码已为该会话保存。
- 如果安装程序一直出现,仔细检查你的 特斯拉开发者应用:
- 客户端ID 和 客户端密钥 正确(从应用程序页面复制)。 - 重定向URI 已设置 确切地 指向服务器的回调URL,例如: - 提供: https://tesla-mcp.onrender.com/auth/callback - 当地: http://localhost:3000/auth/callback 任何拼写错误或额外的斜线都会导致特斯拉拒绝身份验证,会话将不会持续。
“验证您的帐户”旋转器从不停止
特斯拉应该把你重定向回这个应用程序;如果微调器从未完成,则重定向可能失败。检查你的特斯拉应用程序 重定向URI 正是 https://tesla-mcp.onrender.com/auth/callback (或你的 BASE_URL + /auth/callback).试试a 正常浏览器窗口 禁用扩展,因此没有任何东西阻止重定向。
会话“未保存”为匿名/必须重新登录
会话存储在 服务器,不在浏览器中。Incognito不会保留Cookie,但我们不会在您的会话中使用Cookie——我们使用 连接URL 与令牌。登录后,您必须 复制连接URL (例如。 https://.../sse?token=...)从 成功页面 并将该URL用作MCP服务器URL /sse 没有令牌的URL,每个新连接都会获得一个新会话,系统会要求您重新设置或登录。
特斯拉登录页面显示错误或无法加载(CSP、“内联脚本”、指纹等)
这些错误来自 特斯拉的 登录网站(auth.tesla.com),而不是来自此服务器。浏览器或扩展程序(例如广告拦截器、光标或其他注入器)可以阻止特斯拉页面上的脚本并中断登录。
- 在私人/匿名窗口尝试 禁用扩展。
- 尝试其他浏览器 或者没有扩展的干净轮廓。
- 暂时允许
auth.tesla.com在你的广告/跟踪拦截器中,这样特斯拉的脚本(和reCAPTCHA)就可以加载了。
______________________________________________________________________
脚本
| 命令 | 描述 |
|---|---|
npm run build | 构建TypeScript |
npm run start | 运行stdio MCP服务器 |
npm run start:http | 运行HTTP/SSE服务器 |
npm run dev:http | 运行HTTP服务器(dev,带ts节点) |
npm run get-token | 获取特斯拉刷新令牌(本地浏览器流) |
npm run test-api | 测试特斯拉API连接 |
npm run register | 在特斯拉注册应用程序(使用ngrok) |
./check-secrets.sh | 检查代码中的意外秘密 |
______________________________________________________________________
