- internal/rm/client.go: YARN RM 客户端 - ListApps / GetApp / KillApp / GetLogs - GetLogs 降级链数据驱动 (amContainerLogs → aggregated-logs → logs) - 跨主机 redirect 保留 Authorization (URLAllowlist 兜底) - 4 Tool: list_applications / get_application_status / get_application_logs / kill_application - mcp.WithEnum(state) 约束 YARN app 状态 - tool handler 永远 (result, nil), 业务错误用 NewToolResultError - deps.go: +HTTPClient + MaxResponseBytes - main.go: 注入 httpclient.Client - 端到端实测: mock RM 验证 4 Tool + 降级链 + 错误路径 Co-Authored-By: Claude <noreply@anthropic.com>
23 lines
520 B
Go
23 lines
520 B
Go
package tools
|
|
|
|
import (
|
|
"log/slog"
|
|
"time"
|
|
|
|
"spark-mcp-go/internal/analyzer"
|
|
"spark-mcp-go/internal/httpclient"
|
|
"spark-mcp-go/internal/storage"
|
|
)
|
|
|
|
// Deps bundles the dependencies shared by all MCP Tool handlers.
|
|
type Deps struct {
|
|
Logger *slog.Logger
|
|
ClusterRepo *storage.ClusterRepo
|
|
SparkSubmitTimeout time.Duration
|
|
HTTPClient *httpclient.Client
|
|
MaxResponseBytes int64
|
|
DataDir string // upload_file writes to DataDir/uploads
|
|
|
|
AnalyzerThresholds analyzer.Thresholds
|
|
}
|