Replace skaband tools with a sketch.dev MCP client
sketch.dev provides seeing recent sessions and reading a past
session as tool.
diff --git a/loop/agent.go b/loop/agent.go
index 24f3a70..2683cdc 100644
--- a/loop/agent.go
+++ b/loop/agent.go
@@ -1281,16 +1281,24 @@
convo.Tools = append(convo.Tools, browserTools...)
- // Add session history tools if skaband client is available
- if a.config.SkabandClient != nil {
- sessionHistoryTools := claudetool.CreateSessionHistoryTools(a.config.SkabandClient, a.config.SessionID, a.gitOrigin)
- convo.Tools = append(convo.Tools, sessionHistoryTools...)
- }
-
// Add MCP tools if configured
if len(a.config.MCPServers) > 0 {
+
slog.InfoContext(ctx, "Initializing MCP connections", "servers", len(a.config.MCPServers))
- mcpConnections, mcpErrors := a.mcpManager.ConnectToServers(ctx, a.config.MCPServers, 10*time.Second)
+ serverConfigs, parseErrors := mcp.ParseServerConfigs(ctx, a.config.MCPServers)
+
+ // Replace any headers with value _sketch_public_key_ and _sketch_session_id_ with those values.
+ for i := range serverConfigs {
+ if serverConfigs[i].Headers != nil {
+ for key, value := range serverConfigs[i].Headers {
+ // Replace _sketch_public_key_ placeholder
+ if value == "_sketch_public_key_" {
+ serverConfigs[i].Headers[key] = os.Getenv("SKETCH_PUB_KEY")
+ }
+ }
+ }
+ }
+ mcpConnections, mcpErrors := a.mcpManager.ConnectToServerConfigs(ctx, serverConfigs, 10*time.Second, parseErrors)
if len(mcpErrors) > 0 {
for _, err := range mcpErrors {