@@ -12,6 +12,7 @@ import (
1212 "github.com/charmbracelet/crush/internal/version"
1313
1414 "github.com/mark3labs/mcp-go/client"
15+ "github.com/mark3labs/mcp-go/client/transport"
1516 "github.com/mark3labs/mcp-go/mcp"
1617)
1718
@@ -118,6 +119,15 @@ func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolRes
118119 return tools.NewTextErrorResponse(err.Error()), nil
119120 }
120121 return runTool(ctx, c, b.tool.Name, params.Input)
122+ case config.MCPHttp:
123+ c, err := client.NewStreamableHttpClient(
124+ b.mcpConfig.URL,
125+ transport.WithHTTPHeaders(b.mcpConfig.Headers),
126+ )
127+ if err != nil {
128+ return tools.NewTextErrorResponse(err.Error()), nil
129+ }
130+ return runTool(ctx, c, b.tool.Name, params.Input)
121131 case config.MCPSse:
122132 c, err := client.NewSSEMCPClient(
123133 b.mcpConfig.URL,
@@ -187,6 +197,16 @@ func GetMcpTools(ctx context.Context, permissions permission.Service) []tools.Ba
187197 continue
188198 }
189199
200+ mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c)...)
201+ case config.MCPHttp:
202+ c, err := client.NewStreamableHttpClient(
203+ m.URL,
204+ transport.WithHTTPHeaders(m.Headers),
205+ )
206+ if err != nil {
207+ logging.Error("error creating mcp client", "error", err)
208+ continue
209+ }
190210 mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c)...)
191211 case config.MCPSse:
192212 c, err := client.NewSSEMCPClient(