@@ -36,7 +36,7 @@ type MCPClient interface {
38func (b *mcpTool) Name() string {
38func (b *mcpTool) Name() string {
39− return fmt.Sprintf("%s_%s", b.mcpName, b.tool.Name)
39+ return fmt.Sprintf("mcp_%s_%s", b.mcpName, b.tool.Name)
42func (b *mcpTool) Info() tools.ToolInfo {
42func (b *mcpTool) Info() tools.ToolInfo {
@@ -45,7 +45,7 @@ func (b *mcpTool) Info() tools.ToolInfo {
45 required = make([]string, 0)
45 required = make([]string, 0)
47 return tools.ToolInfo{
47 return tools.ToolInfo{
48− Name: fmt.Sprintf("%s_%s", b.mcpName, b.tool.Name),
48+ Name: fmt.Sprintf("mcp_%s_%s", b.mcpName, b.tool.Name),
49 Description: b.tool.Description,
49 Description: b.tool.Description,
50 Parameters: b.tool.InputSchema.Properties,
50 Parameters: b.tool.InputSchema.Properties,
51 Required: required,
51 Required: required,
@@ -107,14 +107,14 @@ func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolRes
110− return tools.NewTextErrorResponse("permission denied"), nil
110+ return tools.ToolResponse{}, permission.ErrorPermissionDenied
113 switch b.mcpConfig.Type {
113 switch b.mcpConfig.Type {
114 case config.MCPStdio:
114 case config.MCPStdio:
115 c, err := client.NewStdioMCPClient(
115 c, err := client.NewStdioMCPClient(
116 b.mcpConfig.Command,
116 b.mcpConfig.Command,
117− b.mcpConfig.Env,
117+ b.mcpConfig.ResolvedEnv(),
118 b.mcpConfig.Args...,
118 b.mcpConfig.Args...,
120 if err != nil {
120 if err != nil {
@@ -124,7 +124,7 @@ func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolRes
124 case config.MCPHttp:
124 case config.MCPHttp:
125 c, err := client.NewStreamableHttpClient(
125 c, err := client.NewStreamableHttpClient(
126 b.mcpConfig.URL,
126 b.mcpConfig.URL,
127− transport.WithHTTPHeaders(b.mcpConfig.Headers),
127+ transport.WithHTTPHeaders(b.mcpConfig.ResolvedHeaders()),
129 if err != nil {
129 if err != nil {
130 return tools.NewTextErrorResponse(err.Error()), nil
130 return tools.NewTextErrorResponse(err.Error()), nil
@@ -133,7 +133,7 @@ func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolRes
133 case config.MCPSse:
133 case config.MCPSse:
134 c, err := client.NewSSEMCPClient(
134 c, err := client.NewSSEMCPClient(
135 b.mcpConfig.URL,
135 b.mcpConfig.URL,
136− client.WithHeaders(b.mcpConfig.Headers),
136+ client.WithHeaders(b.mcpConfig.ResolvedHeaders()),
138 if err != nil {
138 if err != nil {
139 return tools.NewTextErrorResponse(err.Error()), nil
139 return tools.NewTextErrorResponse(err.Error()), nil
@@ -192,11 +192,12 @@ func GetMcpTools(ctx context.Context, permissions permission.Service, cfg *confi
192 slog.Debug("skipping disabled mcp", "name", name)
192 slog.Debug("skipping disabled mcp", "name", name)
195 switch m.Type {
196 switch m.Type {
196 case config.MCPStdio:
197 case config.MCPStdio:
197 c, err := client.NewStdioMCPClient(
198 c, err := client.NewStdioMCPClient(
198 m.Command,
199 m.Command,
199− m.Env,
200+ m.ResolvedEnv(),
200 m.Args...,
201 m.Args...,
202 if err != nil {
203 if err != nil {
@@ -206,9 +207,10 @@ func GetMcpTools(ctx context.Context, permissions permission.Service, cfg *confi
207 mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c, cfg.WorkingDir())...)
208 mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c, cfg.WorkingDir())...)
208 case config.MCPHttp:
209 case config.MCPHttp:
210+ slog.Info("creating mcp client", "name", name, "url", m.URL, "headers", m.ResolvedHeaders())
209 c, err := client.NewStreamableHttpClient(
211 c, err := client.NewStreamableHttpClient(
211− transport.WithHTTPHeaders(m.Headers),
213+ transport.WithHTTPHeaders(m.ResolvedHeaders()),
213 if err != nil {
215 if err != nil {
214 slog.Error("error creating mcp client", "error", err)
216 slog.Error("error creating mcp client", "error", err)
@@ -218,7 +220,7 @@ func GetMcpTools(ctx context.Context, permissions permission.Service, cfg *confi
218 case config.MCPSse:
220 case config.MCPSse:
219 c, err := client.NewSSEMCPClient(
221 c, err := client.NewSSEMCPClient(
221− client.WithHeaders(m.Headers),
223+ client.WithHeaders(m.ResolvedHeaders()),
223 if err != nil {
225 if err != nil {
224 slog.Error("error creating mcp client", "error", err)
226 slog.Error("error creating mcp client", "error", err)