feat: P0 LLM-readiness — Chrome aislado (9333), tab_select determinista, page_get_text, page_perceive
This commit is contained in:
@@ -16,6 +16,7 @@ func registerNavTools(s *server.MCPServer, d *deps) {
|
||||
// Tab tools use HTTP /json directly (no pool) — list/activate are read-only.
|
||||
s.AddTool(tabListTool(), mcp.NewTypedToolHandler(d.handleTabList))
|
||||
s.AddTool(tabActivateTool(), mcp.NewTypedToolHandler(d.handleTabActivate))
|
||||
s.AddTool(tabSelectTool(), mcp.NewTypedToolHandler(d.handleTabSelect))
|
||||
s.AddTool(pageWaitLoadTool(), mcp.NewTypedToolHandler(d.handlePageWaitLoad))
|
||||
s.AddTool(pageWaitIdleTool(), mcp.NewTypedToolHandler(d.handlePageWaitIdle))
|
||||
|
||||
@@ -152,6 +153,28 @@ func (d *deps) handleTabActivate(_ context.Context, _ mcp.CallToolRequest, a tab
|
||||
return mcp.NewToolResultText("activated tab " + a.TabID), nil
|
||||
}
|
||||
|
||||
// ---- tab_select ----
|
||||
|
||||
type tabSelectArgs struct {
|
||||
Port int `json:"port"`
|
||||
Match string `json:"match"`
|
||||
}
|
||||
|
||||
func tabSelectTool() mcp.Tool {
|
||||
return mcp.NewTool("tab_select",
|
||||
mcp.WithDescription("Fija la pestaña sobre la que operan las siguientes tools, eligiéndola por id o por substring de su URL (determinista). Úsala tras tab_list para no operar sobre la pestaña equivocada."),
|
||||
mcp.WithNumber("port", mcp.Description("CDP port. Default 9333 (Chrome isolated del MCP); usa 9222 explícito solo para adjuntarte al navegador diario.")),
|
||||
mcp.WithString("match", mcp.Description("Target id exacto o substring de la URL de la pestaña. Vacío = primera page.")),
|
||||
)
|
||||
}
|
||||
|
||||
func (d *deps) handleTabSelect(_ context.Context, _ mcp.CallToolRequest, a tabSelectArgs) (*mcp.CallToolResult, error) {
|
||||
if _, err := d.pool.connectTarget(portOr(a.Port), a.Match); err != nil {
|
||||
return mcp.NewToolResultError(err.Error()), nil
|
||||
}
|
||||
return mcp.NewToolResultText("selected target matching: " + a.Match), nil
|
||||
}
|
||||
|
||||
// ---- nav_back (MUTA) ----
|
||||
|
||||
type navBackArgs struct {
|
||||
|
||||
Reference in New Issue
Block a user