mcpField
E
EasyDeploy AI

EasyDeploy AI

远程服务
easydeploy.ai数据与分析03 周前更新

关于 EasyDeploy AI

EasyDeploy AI 是面向数据科学工作流的 MCP 服务,将 EasyDeploy API 提供给 Claude 等客户端,用于 CSV AutoML 训练和预测。内置指南涵盖数据准备、训练与留出集验证。

主要功能

  1. 01使用 CSV 数据集训练 AutoML 模型
  2. 02上传数据集并创建版本
  3. 03运行单条和批量预测
  4. 04查看报告与模型指标
  5. 05管理模型别名
  6. 06通过 get_started 阅读流程指南

适用场景

  1. 01使用准备好的 CSV 训练模型
  2. 02对留出数据集评分以估算表现
  3. 03按指定模型版本或别名运行预测

MCP 相关

它将 EasyDeploy 的公共 REST API 封装为 MCP 客户端可调用的工具,涵盖数据集上传、训练、报告和预测。支持托管 HTTP 和本地 stdio 连接方式。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.easydeploy.ai/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

EasyDeploy AI MCP(easydeploy-ai-mcp)

一种 Model Context Protocol(MCP)服务,将 EasyDeploy 公共 REST API 封装为工具,供 Claude、Cursor、Claude Code 和其他 MCP 客户端使用。

PyPI 包名: easydeploy-ai-mcp · 导入包: easydeploy_ai_mcp

目录

连接 Claude

托管连接器(claude.ai 或 Claude Desktop)

我们托管 MCP 端点。你只需在 Claude 中添加一次;连接并登录后,新对话便可像使用其他已启用的连接器一样使用 EasyDeploy。

  1. 在浏览器中打开 Claude,或打开 Claude Desktop。
  2. 打开 Settings,然后选择 Connectors,再选择 Add custom connector。
  3. 准确输入:
    • 名称: EasyDeploy AI
    • 远程 MCP 服务 URL: https://mcp.easydeploy.ai/mcp
  4. 保存连接器,使 EasyDeploy 显示在连接器列表中。
  5. 打开 EasyDeploy 连接器条目并选择 Connect,然后在浏览器中完成登录。此步骤会授权 Claude 使用你的 EasyDeploy 账户。

连接并登录(在 Claude 中): 设置好自定义连接器后,Claude 会显示一张 EasyDeploy 卡片,其中包含 MCP URL 和 Connect 按钮。使用该流程登录。无需在 Claude 中粘贴 API 密钥。访问权限会与你在浏览器中进行身份验证的 EasyDeploy 个人资料绑定。

Claude Desktop 和文件上传: 文件上传及部分工具调用会通过网络访问 EasyDeploy。在 Desktop 上,Claude 会阻止出站流量,除非你允许其调用相应域名。打开 Settings → Capabilities,启用 Allow network egress,然后在域名允许列表中准确添加以下主机:

api.easydeploy.ai

这是上传到公共生产服务时唯一会访问的主机;请仅准确允许此主机,不要放宽范围。若服务指向其他 EasyDeploy API(通过 EDA_API_BASE 设置),则应添加该 API 的主机;start_upload 操作指南会列出需要允许的确切主机。

域名允许列表界面仅在 Claude 付费方案中提供。

更多详情和其他配置方式(例如使用你自己的部署提供的 URL),请参阅 docs/claude-getting-started.md。

从这里开始:get_started

get_started 会返回 EasyDeploy 数据科学手册,在建模任务开始时最有用。根据 Claude 连接器目录的要求,其说明和服务端的 MCP instructions 会说明它返回什么,而不是 Agent 必须在何时调用它。宿主会缓存工具说明和服务端指令,而且很多宿主不会向模型展示这些指令;每次调用时都会实时获取工具结果。因此,手册内容放在工具结果中,而非工具说明中:名称和说明保持不变,内容则随每次版本发布更新,无需任何人重新连接。

  • get_started() 返回概览:各角色、包含每个步骤所用工具的完整工作流,以及必须遵守的规则。
  • get_started(section=...) 返回一个章节:prepare、split、upload、train、validate 或 predict。all 会返回所有章节。
  • 每个结果都包含 guide_version、updated、各章节列表(每个章节附带一行摘要),以及表示接下来应阅读哪个章节的 next。

内容以 Markdown 格式随包发布,每个章节一个文件,位于 src/easydeploy_ai_mcp/guide/。此工具为只读工具,不会调用 API。

你是数据科学家

EasyDeploy 会搜索模型、构建特征、调整超参数、训练、部署并进行预测。它不会清洗你的数据、定义目标、划分数据,也不会在模型从未见过的数据上检查模型。Agent 会按照 get_started 操作手册完成这些工作:

  1. 准备。 与你商定决策和目标,探索数据,从训练文件中删除标识符及预测时未知的任何信息,并用一句话写明目标定义。ID 可以保留在测试文件和评分文件中:预测会忽略模型训练时未用过的列,并在输出中返回这些列,因此很容易将结果合并回原数据。应用数据更改和删除列之前,都会先与你确认。
  2. 划分。 分类任务采用分层 80/20 划分,时间序列采用按时间顺序划分;同一实体不会出现在两个文件中,且不保留重复项。SMOTE 等平衡处理只作用于训练文件。
  3. 上传并训练。 分别上传文件,并将 dataset_type 设为 train 和 test(validation 可选)。模型版本仅基于训练数据集版本创建。
  4. 在留出集上验证。 报告中的交叉验证分数是在训练文件内部计算的,训练拟合指标则是样本内指标。真实评估结果来自对测试数据集版本运行 run_batch_prediction:下载的 CSV 会按原始行顺序保留每一列输入数据(包括真实标签),并添加 prediction 和 probability_<class> 列。Agent 会据此计算指标,并根据各类错误的成本选择决策阈值(只有在未知这些成本时才选择最佳 F1),或者报告回归模型的误差范围。
  5. 使用真实输出。 仪表板、报告和评分列表均基于真实预测生成,绝不使用模拟值。
将训练文件导入 EasyDeploy

start_upload 会开启一个上传会话,Agent 会选择宿主提供的最佳字节传输通道。文件内容绝不会通过对话或任何通道上的工具参数传输——Agent 传递 URL 或运行 curl,绝不会传递文件数据本身。

通道使用场景流程
文件参数支持 openai/fileParams 的宿主(Codex、ChatGPT)。start_upload 会声明 _meta: {"openai/fileParams": ["file"]},因此宿主会将下载 URL 填入 file 参数。无需沙盒网络。start_upload(..., file=…) → 会话变为 RECEIVING → 轮询 get_upload_status → complete_upload
网关 PUT(默认)Claude Code、Cowork,以及可访问外网的 claude.ai / Desktop 沙盒。每个文件最大 6 MB;超过此大小时,网关会返回 413,且不支持分块上传。start_upload → 在文件所在的 shell 中运行返回的 curl_command → 轮询 get_upload_status → complete_upload
从分享链接获取沙盒无法访问外网,但文件已有可分享的 URL:设为知道链接的任何人均可访问的 Google Sheets 或 Drive 链接、OpenAI 文件链接,或其他已加入允许列表的主机。EasyDeploy 会在服务器端获取文件数据,最大 256 MB。start_upload → upload_from_url(upload_request_id, source_url) → 轮询 get_upload_status → complete_upload

get_upload_status 会报告 URL_ISSUED → RECEIVING → UPLOADED → VALIDATING → READY | REJECTED → CONSUMED(以及 EXPIRED)。complete_upload 要求状态为 READY——所有将成为数据集版本的文件数据都必须先通过 CSV 验证器;仍在传输中的会话、状态为 REJECTED 或 EXPIRED 的会话会返回 400 错误,并说明应采取的操作。状态为 REJECTED 时,error 字段会说明哪项检查未通过。安全地重试 complete_upload:对于已处于 CONSUMED 状态的会话,它会返回现有数据集版本;如果返回 409,表示同一会话的另一个调用仍在处理中(等待几秒后重试)。get_upload_status 仅涵盖由 start_upload 开启的会话;通过网页模型构建器上传的文件会在 Web 应用中注册,不会显示在此处。

新建数据集或新建版本。 在 start_upload 中省略 dataset_id,complete_upload 就会使用你提供的名称创建新数据集。传入现有数据集的 ID,上传内容就会成为该数据集的新版本;此时 complete_upload 中的 name 会被忽略,数据集保留原名称。complete_upload 会分别返回一次 dataset 和 datasetVersion,列名以 columnNames 列表的形式提供。qa_status 仅供参考,不会限制任何操作。version_type 只在一种情况下起作用:使用显式指定的 dataset_version_id 调用 submit_training_job 时,如果版本类型为 raw,请求会被拒绝。省略 dataset_version_id,即可使用模型版本自己的数据集进行训练。

当宿主完全没有字节传输通道时的备用方案(既无法访问外网,也没有文件桥接):Agent 会保存训练文件并提供下载,同时根据 start_upload 返回的 fallback 文本,引导你使用适用于当前环境的网页模型构建器 URL(例如 easydeploy.ai/model-builder)。上传完成后,告诉 Agent 你输入的数据集名称,或粘贴页面中的数据集 URL——它会通过 list_datasets 解析数据集,并在继续之前确认行数。该上传已注册为数据集,因此无需对其调用 complete_upload。如果你的套餐允许,添加上方所述的允许列表条目即可避免这番周折。

阅读模型报告

get_model_report 会返回报告以及结构化的 metrics 对象(由 API 原样传递)。模型搜索会使用 10 折交叉验证对候选模型评分(分类器按 ROC-AUC 分层并打乱,回归器按负 MSE 打乱;使用 time_series_mode=true 创建的版本则采用向前链式 TimeSeriesSplit),然后在所有行上重新拟合胜出模型。这里没有单独的测试集:metrics.trainingFit 下的准确率、混淆矩阵、各类别的精确率/召回率和样本内 ROC-AUC 均为训练拟合结果;metrics.crossValidation.score 是报告中的样本外估计值,在训练文件内部测得。留出集估计值需要通过 run_batch_prediction 对你自己的测试文件评分得出,而不是来自报告。metrics.crossValidation.strategy 记录本次运行采用的交叉验证方式(向前链式验证使用 time_series_split),metrics.warnings 则标出需要谨慎表述的内容。文字摘要由大模型生成,措辞可能不那么严谨。

使用别名提升模型

别名是模型上的一个命名指针,例如 staging 或 production,它会指向该模型的某个确切版本。run_prediction 和 run_batch_prediction 接受 model_version_id(指定确切版本)或 model_id + alias(调用运行时别名所指向的版本)其中之一,不能同时使用两者。按别名评分,用户便可在不更改调用的情况下提升新版本;结果中的 modelVersionId 始终标明实际用于评分的版本,alias 则回显解析得到的别名。

list_model_aliases 会显示每个别名的指向。set_model_alias 会创建或移动别名。它始终先通过试运行检查变更:如果新版本训练时使用的列或目标与别名当前指向的版本不同(TRAINING_COLUMNS_CHANGED,包含新增和移除的列;TARGET_FEATURE_CHANGED;TRAINING_COLUMNS_UNKNOWN),则不会写入任何内容,而是返回 needs_confirmation: true 及相关警告,以便 Agent 向用户说明变更;只有再次使用 confirm=true 调用时才会写入。若没有警告,则检查后立即写入。

API 密钥有不同的权限范围:full 或 predict(用于评分的读取、预测和上传)。只有 full 权限范围的密钥才能移动别名;仅有 predict 权限的密钥会收到 403 INSUFFICIENT_SCOPE,工具错误会说明需要 full 权限范围的密钥。别名参数需要使用带有别名路由的 EasyDeploy API;指向旧版后端的可自托管 EDA_API_BASE 会返回其自身的 400 或 404 错误。


在你的计算机上运行本地 MCP(stdio)

使用你的 EasyDeploy API 密钥,在自己的计算机上运行 MCP 服务。不会向互联网公开任何内容。

1. 安装

pip install easydeploy-ai-mcp

2. 添加到 Claude Desktop 配置

编辑(或创建)Claude Desktop 配置文件:

OSPath
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json

将以下内容合并到该 JSON 的根对象中(保留所有现有键):

{
  "mcpServers": {
    "EasyDeploy AI": {
      "command": "easydeploy-ai-mcp-stdio",
      "env": {
        "EDA_API_KEY": "eda_live_YOUR_KEY"
      }
    }
  }
}

将 eda_live_YOUR_KEY 替换为你在 EasyDeploy 控制面板的 Account → API Keys 中获取的密钥。如果 Claude 无法在你的 PATH 中找到 easydeploy-ai-mcp-stdio,请使用其完整路径(运行 which easydeploy-ai-mcp-stdio 查找)。

3. 重启 Claude Desktop

完全退出并重新打开应用。你的 MCP 服务中将显示 EasyDeploy AI。


如需在 Docker 或云服务提供商上自行托管,请参阅 远程 MCP(HTTP)。

你将获得

  • 30 个工具:get_started(操作指南),以及涵盖项目、数据集(包括三种上传渠道)、模型版本、模型别名、训练任务、预测和账户状态的工具。
  • 每个工具都有标题和工具注解(title,同时设置在工具本身和 annotations.title 上,以及 readOnlyHint、destructiveHint、idempotentHint、openWorldHint),让宿主能够区分读取和写入操作。get_started 和其他 17 个 get_* / list_* 工具均为只读操作。如果写入操作可能覆盖现有记录的字段,则设置 destructiveHint: true:create_project、create_model 和 create_dataset_version(提供 id 时会更新该记录)、update_dataset、submit_training_job(重新提交的任务会原地重新训练其模型版本),以及 set_model_alias(可以移动现有别名;除了 update_dataset,它也是唯一具有幂等性的写入操作,因为重复调用同一操作不会改变任何内容)。其他写入操作只会新增记录,设置为 destructiveHint: false;没有任何工具会删除内容。只有 upload_from_url 和 start_upload(提供宿主 file 时)会让 EasyDeploy 获取外部 URL。create_project 和 create_model 属于创建或更新操作,因此标记为非幂等写入操作。重命名数据集需使用专门的工具 update_dataset;get_dataset 是纯读取操作。
  • stdio 传输方式,适用于本地客户端;或使用 HTTP,通过 /mcp 上的 Streamable MCP 和供负载均衡器使用的 GET /healthz。
  • **加固措施:**仅通过 HTTPS 调用 EasyDeploy API;HTTP MCP 接口可选使用 MCP_SERVICE_TOKEN;酌情精简面向 Agent 的响应字段;不将查询参数(OAuth 代码、state、PKCE 值)记录到访问日志中;在令牌和注册响应中设置 Cache-Control: no-store。

对于生产环境和 SOC 2 敏感型配置,建议自托管,以便让数据保留在你自己的基础设施中。托管连接器 https://mcp.easydeploy.ai/mcp 适用于大多数用户。

要求

  • Python 3.10+
  • 从控制面板获取 EasyDeploy API 密钥(Account → API Keys)。客户端默认使用 EasyDeploy 生产环境 API 主机。

安装

从 PyPI 安装(首个版本发布后)
pip install easydeploy-ai-mcp
从源代码安装
git clone https://github.com/easydeploy-ai/easydeploy-ai-mcp.git
cd easydeploy-ai-mcp
pip install -e ".[dev]"   # includes pytest
# or minimal runtime only:
pip install .

环境变量

变量必需描述
EDA_API_KEYstdio / legacy HTTPstdio 和 legacy HTTP(无 OAuth)必需。当 EDA_OAUTH_ENABLED=1 时,不会用于出站 API 调用——每个 MCP 请求都必须包含 Authorization: Bearer <JWT or eda_live_…>。
EDA_API_BASE否覆盖默认生产 API(https://api.easydeploy.ai)。仅在目标地址为非生产端点时设置。末尾的 /v1 可选。
EDA_UI_BASE_URL否ui_url 字段的前缀(默认值为 https://easydeploy.ai)。
MCP_SERVICE_TOKEN否旧版单租户访问限制。若已设置,HTTP 模式下,/mcp 需要 Authorization: Bearer <token>(GET /healthz 除外)。不能与 EDA_OAUTH_ENABLED 同时使用。
EDA_OAUTH_ENABLED否设置为 1,将 HTTP 传输模式作为 OAuth 2.0 资源服务器运行。需要 EDA_COGNITO_USER_POOL_ID 和 EDA_COGNITO_CLIENT_ID。请参阅远程 MCP(HTTP)。
EDA_COGNITO_USER_POOL_IDOAuth为 EasyDeploy API 颁发访问令牌的 Cognito 用户池。
EDA_COGNITO_CLIENT_IDOAuth访问令牌的 client_id 声明中预期的应用客户端 ID。
EDA_COGNITO_REGION否用户池所在的 AWS 区域(默认值为 us-east-1)。
EDA_REPORT_MAX_WAIT_SECONDS否get_model_report 的轮询时限,单位为秒(默认值为 45,最大值为 60)。
EDA_REPORT_POLL_INTERVAL_SECONDS否轮询间隔,单位为秒(默认值为 10)。
HOST / PORT否HTTP 绑定地址(默认值为 0.0.0.0 / 8080)。
EDA_TRUST_FORWARDED_HEADERS否在 ALB/反向代理后方设置为 1,以便 RFC 9728 resource 使用 https(信任 X-Forwarded-Proto)。
EDA_MCP_OAUTH_ISSUER否用于 authorization_servers 和代理 /.well-known/oauth-authorization-server issuer 的公开 MCP 基础 URL(不含路径)。默认值:请求源站地址。若代理后方的 Host / X-Forwarded-Proto 不正确,请设置此项。
EDA_CORS_EXTRA_ORIGINS否以逗号分隔的浏览器源站列表,可在内置列表(Claude、ChatGPT、VS Code Web、Cursor、MCP Inspector)之外添加允许的源站。
EDA_MCP_OAUTH_BROKER否设置为 1,以代理授权重定向。默认关闭。请参阅经代理的授权。
EDA_MCP_EXTRA_REDIRECT_HOSTS否代理模式:以逗号分隔的额外 HTTPS 回调地址,作为客户端 redirect_uri 接受。host(任意路径)、host/path(精确匹配)、host/path/(前缀匹配)、.host(主机及其子域名)。
EDA_MCP_EXTRA_REDIRECT_SCHEMES否代理模式:以逗号分隔的额外私有用途 URI 方案(RFC 8252 §7.1),作为客户端 redirect_uri 接受。
EDA_MCP_ALLOW_LOOPBACK_REDIRECT否代理模式:设置为 0,以拒绝 http://127.0.0.1:<port> 回调。默认值为 1——桌面客户端需要此类回调。
EDA_MCP_BROKER_SECRET否代理模式:用于封装 OAuth state 的 HMAC 密钥。在任何真实部署中都应设置此项;若未设置,备用密钥将根据 Cognito 池 ID 和客户端 ID 派生(这些 ID 是公开的),且服务器会记录警告。

本地 MCP(stdio)

适用于客户端以子进程形式启动服务(Claude Desktop、Cursor 等)。

export EDA_API_KEY="eda_live_..."
easydeploy-ai-mcp-stdio

或者:python -m easydeploy_ai_mcp

配置示例:

{
  "mcpServers": {
    "easydeploy-ai": {
      "command": "easydeploy-ai-mcp-stdio",
      "env": {
        "EDA_API_KEY": "eda_live_..."
      }
    }
  }
}

远程 MCP(HTTP)

通过 FastMCP 在 /mcp 提供 Streamable HTTP(请根据固定使用的 FastMCP 3.x 版本确认)。运行状况检查:GET /healthz。

export EDA_API_KEY="eda_live_..."
easydeploy-ai-mcp-http

或者:uvicorn easydeploy_ai_mcp.http_main:app --host 0.0.0.0 --port 8080

如果将 mcp.http_app() 嵌入其他 ASGI 应用,请传递 FastMCP HTTP 应用的 lifespan(FastMCP ASGI);easydeploy_ai_mcp.http_main 已为 uvicorn 处理此事。

认证模式

只能选择一种(同时设置 EDA_OAUTH_ENABLED 和 MCP_SERVICE_TOKEN 会在导入时引发错误):

  • OAuth 2.0 资源服务器(多租户):设置 EDA_OAUTH_ENABLED=1,并设置 EDA_COGNITO_USER_POOL_ID 和 EDA_COGNITO_CLIENT_ID。安装可选的 extra:pip install easydeploy-ai-mcp[oauth]。服务会根据 Cognito JWKS 在本地验证传入的 Cognito 访问 JWT(issuer、signature、 exp、token_use=='access'、client_id),并将令牌转发给 EasyDeploy API。EasyDeploy API 密钥(前缀为 eda_live_)也可通过同一个 Authorization: Bearer 请求头传入,并原样转发——API 是撤销状态的事实来源。RFC 9728 元数据发布在 /.well-known/oauth-protected-resource;RFC 8414 代理元数据包含 registration_endpoint 和 grant_types_supported (authorization_code、refresh_token),且 POST /oauth/register 会返回静态的 Cognito MCP EDA_COGNITO_CLIENT_ID(RFC 7591 风格的公共客户端),并回显所请求且受支持的 grant_types(authorization_code 和 refresh_token;未请求时则返回两者)。401 响应包含 WWW-Authenticate: Bearer …,以便 MCP 客户端发现认证服务器。 注意:Cognito 访问令牌包含 client_id,不包含 aud;请勿配置 audience。
  • 共享密钥门控(旧版单租户):设置 MCP_SERVICE_TOKEN。所有 出站 API 调用均使用静态的 EDA_API_KEY。
  • 无认证:仅用于开发。
经纪式授权

Cognito 会将 redirect_uri 与应用客户端的回调列表进行逐字匹配——不支持通配符、前缀或端口——并且会在呈现托管 UI 之前,于 /oauth2/authorize 处进行检查。因此,回调未注册的客户端根本看不到登录页面:浏览器会转到 redirect_mismatch,表现为“连接器无法加载登录页面”,而不是配置问题。

这适用于回调固定不变的客户端,但不适用于其他客户端:

客户端回调可注册?
Claude(Web、Desktop)https://claude.ai/api/mcp/auth_callback可以
ChatGPT 自定义连接器https://chatgpt.com/connector_platform_oauth_redirect,或在无法识别签发者时使用 https://chatgpt.com/connector/oauth/<callback_id>仅第一个可以
VS Code / Insidershttps://vscode.dev/redirect可以
Claude Code、Cursor、MCP Inspectorhttp://127.0.0.1:<port chosen at runtime>/callback不可以

设置 EDA_MCP_OAUTH_BROKER=1 后,服务会向 Cognito 提供自己的回调地址 {issuer}/oauth/callback,这是一个只需注册一次的固定 URL。它会将客户端的真实 redirect_uri 封装到 OAuth state 中;Cognito 返回后,服务会将授权码转发到该 URI,并还原客户端自己的 state。/token 会重写 redirect_uri 以保持匹配,因为 Cognito 会在令牌交换时再次检查它。

这会将重定向检查从 Cognito 移到此服务,因此检查仍然真实有效。 如果没有这项检查,任何人都可以在此处发起一个回调地址由其控制的流程,并收集已登录用户的授权码。oauth_broker.py 的限制与它取代的列表基本同样严格:HTTPS 回调必须与已知客户端的主机名完全匹配,并且在已知客户端的回调路径时,路径也必须匹配(claude.ai/api/mcp/auth_callback、chatgpt.com/connector/oauth/…、vscode.dev/redirect)。子域名绝不会自动纳入——否则,供应商域名下的开放重定向或已失效的 CNAME 都可能成为收集授权码的入口。根据 RFC 8252 §7.3,允许环回地址;此外也允许短名单中的私有用途方案。请通过 EDA_MCP_EXTRA_REDIRECT_HOSTS / EDA_MCP_EXTRA_REDIRECT_SCHEMES 扩展允许列表,而不要放宽代码中的限制。

经纪模式下必须使用 PKCE。 Cognito 将 code_challenge 视为可选项,而经纪服务的 /token 重写会移除 Cognito 在此处唯一执行的检查,因此不使用 PKCE 的流程会让授权码不受任何约束——任何在浏览器历史记录或代理日志中找到该授权码的人都可以兑换它。/authorize 会拒绝未提供 code_challenge_method=S256 的经纪请求。每个 MCP 客户端都会发送此参数。

部署顺序很重要。 请先在 Cognito 应用客户端上注册 {issuer}/oauth/callback,然后再设置 EDA_MCP_OAUTH_BROKER=1。反过来操作会导致当前可用的客户端无法使用,因此默认设置为关闭。

Docker — 本地运行(与部署到 ECS/Fargate 的镜像相同;包含 easydeploy-ai-mcp[oauth]):

# Convenience: build + run (reads .env in the repo root if present)
./scripts/run_mcp_docker_local.sh

# Explicit env vars (no .env)
./scripts/run_mcp_docker_local.sh -e EDA_API_KEY="eda_live_..."

# Different host port
PORT=9000 ./scripts/run_mcp_docker_local.sh

托管于 AWS(Fargate + ALB): 将此仓库的 Dockerfile 构建并推送到容器注册表,然后部署在 HTTPS 负载均衡器之后。在任务/容器上设置上述环境变量。

手动执行的等效方式:

docker build -t easydeploy-ai-mcp .
docker run --rm -p 8080:8080 \
  -e EDA_API_KEY="eda_live_..." \
  easydeploy-ai-mcp

文档

REST API 参考

此 MCP 服务是 EasyDeploy 公共 REST API 的轻量客户端。端点行为、请求正文和响应格式均由 EasyDeploy 定义(请参阅其控制面板、产品帮助和 easydeploy.ai 上的官方 API 资料)。此仓库不会重复完整的 OpenAPI 规范,而是将这些操作映射为 MCP 工具。

发布版本与 API 兼容性

本仓库是 EasyDeploy MCP 服务的开源之家。新版本与面向客户记录的 EasyDeploy 公共 REST API(包括仪表板和官方 API 文档)保持同步。如果 API 新增或更改端点,请期待此处进行相应更新。贡献者更改工具或客户端行为时,应遵循 CONTRIBUTING.md。

开发

pip install -e ".[dev]"
pytest

可选 — 使用真实 Cognito JWT 测试 HTTP 应用(实时 JWKS,不使用模拟):设置 EDA_INTEGRATION_COGNITO_ACCESS_TOKEN,以及 OAuth 模式使用的相同 EDA_COGNITO_* 变量,然后运行 pytest tests/test_cognito_jwt_integration.py -v。请参阅该文件中的文档字符串。

有关拉取请求和问题报告,请参阅 CONTRIBUTING.md。

安全

有关漏洞报告和部署说明,请参阅 SECURITY.md。

许可证

MIT — 请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。