fix: address review findings on fetch-url-tool
- fetch_url: revalidate allowlist on every redirect hop (fixes SSRF where 302 to disallowed host / 169.254.169.254 / file:// bypassed the url_allowlist). Stream response body with iter_bytes and cap at 1MB so a multi-GB response from an allowlisted host cannot OOM the service. Reuses the manual-redirect-loop pattern from yarn_client. - list_applications: stop swallowing 404 (YARN returns 200+empty for "no match"; 404 means the RM doesn't support the endpoint — surface the YarnError instead of hiding it as an empty result). Add Field(ge=1, le=10000) to ListApplicationsRequest.limit so a runaway limit is rejected at the Pydantic layer with 422. - save_connection: PATCH semantics for existing records. Re-route to update_connection when the name already exists so partial updates (e.g. only master) no longer wipe url_allowlist back to []. Uses an _UNSET sentinel in the tool function to distinguish "omitted" from "None" without breaking the existing parameter list. - README: drop leading space on 5 new connection-tool table rows that was breaking GitHub Flavored Markdown table continuity. - Indentation: normalize connections.py and requests.py to 4-space indent (auth_password/auth_principal/auth_keytab were 3-space). Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -100,11 +100,11 @@ MCP 客户端需要先执行 `initialize` 握手,拿到 `mcp-session-id` 后
|
||||
|
||||
| 工具 | 作用 |
|
||||
| --- | --- |
|
||||
| `save_connection` | 保存或更新一个 Spark/YARN 连接配置 |
|
||||
| `list_connections` | 列出所有连接配置 |
|
||||
| `get_connection` | 按名称读取连接配置 |
|
||||
| `delete_connection` | 删除连接配置 |
|
||||
| `update_connection` | 部分更新一个已存在的连接 (PATCH 语义, 只改提供的字段) |
|
||||
| `save_connection` | 保存或更新一个 Spark/YARN 连接配置 |
|
||||
| `list_connections` | 列出所有连接配置 |
|
||||
| `get_connection` | 按名称读取连接配置 |
|
||||
| `delete_connection` | 删除连接配置 |
|
||||
| `update_connection` | 部分更新一个已存在的连接 (PATCH 语义, 只改提供的字段) |
|
||||
| `write_job_file` | 将 LLM 已生成的 PySpark 代码写入服务端文件 |
|
||||
| `read_job_file` | 读取已存在的 PySpark 脚本内容 |
|
||||
| `update_job_file` | 覆盖更新已存在的 PySpark 脚本 |
|
||||
|
||||
Reference in New Issue
Block a user