易面板mcp
MCP服务器 EasyPanel --通过任何兼容MCP的AI代理(Claude、Cursor等)管理您的服务器、项目、服务、数据库和域。
40个精选工具 +原始tRPC访问所有 347 EasyPanel API程序.
🚀 快速设置(在EasyPanel上部署)
最简单的方法是将MCP服务器作为服务部署在您自己的EasyPanel上。选择身份验证模式:
- OAuth (推荐)--用户在浏览器弹出窗口中使用Easypanel电子邮件/密码登录。没有要生成或粘贴的令牌。按用户访问。
- 持票人 -一个共享的API密钥+一个Easypanel令牌烘焙到env vars中。
OAuth模式(浏览器登录,每个用户)
- 创建项目(例如。
mcp),添加一个 应用 GitHub上的服务dray-supadev/easypanel-mcp - 添加域(例如。
mcp.your-domain.com) - 设置环境变量:
EASYPANEL_URL=http://easypanel:3000
EASYPANEL_MCP_MODE=http
EASYPANEL_AUTH_MODE=oauth
OAUTH_ISSUER_URL=https://mcp.your-domain.com
MCP_ACCESS_MODE=readonly
PORT=3000- (可选但推荐)在以下位置安装卷
/data并设置OAUTH_STORE_PATH=/data/oauth.json因此,代币可以在重新部署后幸存下来。 - 部署。
连接Claude Desktop或其他支持OAuth的MCP客户端:
{
"mcpServers": {
"easypanel": { "url": "https://mcp.your-domain.com/mcp" }
}
}首次使用时,客户端将弹出一个浏览器窗口,询问您的Easypanel凭据,然后将您的访问令牌返回给Claude。无需手动卷曲。
登录页面调用Easypanel的 auth.login 并将会话令牌绑定到此MCP服务器范围内的不透明OAuth访问令牌。凭据从不存储。承载模式(共享密钥,更简单)
- 获取您的API令牌:
curl -X POST https://YOUR_PANEL:3000/api/trpc/auth.login \
-H "Content-Type: application/json" \
-d '{"json":{"email":"you@email.com","password":"your-pass"}}'> 如果您启用了2FA,请添加 "code":"123456" 使用您的身份验证码。
响应包含 "token":"xxx" -这是您的API令牌。
> ⚠️ 这是一个 会话令牌 30天后到期。对于永久令牌,请使用 users.generateApiToken (见下文)。
- 在EasyPanel上部署:
EASYPANEL_URL=http://easypanel:3000
EASYPANEL_TOKEN=your-api-token
EASYPANEL_MCP_MODE=http
MCP_API_KEY=your-secret-key
MCP_ACCESS_MODE=readonly
PORT=3000> 重要提示: 使用 http://easypanel:3000 (内部Docker网络)在同一EasyPanel实例上部署时。 > MCP_ACCESS_MODE: readonly 阻止所有写入操作;着手 full 以允许突变。 > ⚠️ 集 MCP_API_KEY --没有它,任何拥有该URL的人都可以控制您的服务器。仅使用字母数字(!, %, ^ 可能会破坏env变量)。
- 连接克劳德桌面:
{
"mcpServers": {
"easypanel": {
"url": "https://mcp.your-domain.com/mcp",
"headers": { "Authorization": "Bearer your-secret-key" }
}
}
}重新启动克劳德桌面。完成!让克劳德“展示我的项目”🎉
💻 本地设置(备选)
通过stdio在本地运行MCP服务器(无需部署):
git clone https://github.com/dray-supadev/easypanel-mcp.git
cd easypanel-mcp
npm install && npm run build{
"mcpServers": {
"easypanel": {
"command": "node",
"args": ["/path/to/easypanel-mcp/dist/index.js"],
"env": {
"EASYPANEL_URL": "https://your-panel:3000",
"EASYPANEL_TOKEN": "your-api-token"
}
}
}
}🔧 可用工具(40)
项目
list_projects · create_project · destroy_project · inspect_project
应用服务
create_app · inspect_app · deploy_app · start_app · stop_app · restart_app · destroy_app · set_app_source_image · set_app_source_github · set_app_env · set_app_resources
数据库(PostgreSQL、MySQL、MariaDB、MongoDB、Redis)
create_database · inspect_database · destroy_database
域和端口
list_domains · create_domain · delete_domain · create_port · list_ports
卷
create_mount · list_mounts
监控
system_stats · service_stats · storage_stats
Docker Compose
create_compose · inspect_compose · deploy_compose
系统
cleanup_docker · system_prune · restart_panel · reboot_server · list_users · list_certificates · list_nodes · deploy_template
逃生舱口
trpc_raw --直接调用347 tRPC程序中的任何一个
🔒 安全
- OAuth模式 --每个用户通过浏览器登录访问;MCP服务器充当OAuth 2.1授权服务器(根据RFC 7591需要PKCE、动态客户端注册)。访问令牌是不透明的,绑定到用户的Easypanel会话令牌服务器端;凭据永远不会以存储的形式离开此服务器。
- 承载模式 —
MCP_API_KEY保护端点,EASYPANEL_TOKEN用于所有API调用。 - 健康终点(
/health)始终是公开的(不返回敏感数据)。 - 在本地/stdio模式下,不需要网络身份验证。
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
EASYPANEL_URL | ✅ | 您的EasyPanel URL |
EASYPANEL_TOKEN | 来自登录的Bearer/stdio | neneneba API令牌(在OAuth模式下不需要) |
EASYPANEL_MCP_MODE | 对于HTTP | stdio (默认)或 http |
EASYPANEL_AUTH_MODE | 没有 | bearer (默认)或 oauth |
MCP_API_KEY | 承载HTTP | 保护端点的共享密钥 |
OAUTH_ISSUER_URL | OAuth | 此服务器的公共URL(例如。 https://mcp.example.com) |
OAUTH_STORE_PATH | 否 | 在哪里持久化OAuth状态(默认 ./.easypanel-mcp-oauth.json) |
MCP_ACCESS_MODE | 没有 | full (默认)或 readonly --阻断所有突变 |
PORT | 无 | HTTP端口(默认值:3100) |
OAuth端点
当 EASYPANEL_AUTH_MODE=oauth,服务器公开:
GET /.well-known/oauth-authorization-server--RFC 8414元数据GET /.well-known/oauth-protected-resource--RFC 9728元数据POST /register--RFC 7591动态客户端注册GET /authorize--登录页面POST /authorize--凭证→ 授权码(302重定向到客户端)POST /token—authorization_code和refresh_token赠款(需要S256 PKCE)
生成永久API令牌
会话令牌来自 auth.login 30天后到期。对于永久令牌:
步骤1。 获取您的用户ID:
curl -s "https://YOUR_PANEL:3000/api/trpc/users.listUsers" \
-H "Authorization: Bearer YOUR_SESSION_TOKEN"在回复中找到您的电子邮件并复制 "id" 现场。
步骤2。 生成永久令牌:
curl -s -X POST "https://YOUR_PANEL:3000/api/trpc/users.generateApiToken" \
-H "Authorization: Bearer YOUR_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"json":{"id":"YOUR_USER_ID"}}'步骤3。 检索令牌--再次列出用户:
curl -s "https://YOUR_PANEL:3000/api/trpc/users.listUsers" \
-H "Authorization: Bearer YOUR_SESSION_TOKEN"您的用户现在拥有 "apiToken" 字段——这是永久标记。设置为 EASYPANEL_TOKEN 在您的MCP服务环境中。
此令牌 永不过期 除非您通过以下方式撤销 users.revokeApiToken.运作原理
EasyPanel在 /api/trpc/这个MCP服务器是通过逆向工程EasyPanel的前端构建的,可以提取43个命名空间中的所有347个过程名称,然后将最有用的名称映射到类型化的MCP工具。
免责声明
该工具与EasyPanel的公共tRPC API进行通信。EasyPanel的某些功能可能需要有效的许可证。请尊重 EasyPanel的许可条款。本项目不隶属于EasyPanel或得到EasyPanel的认可。
许可证
麻省理工学院
