@@ -37,7 +37,7 @@ type MCPClient interface {
39func (b *mcpTool) Name() string {
39func (b *mcpTool) Name() string {
40− return fmt.Sprintf("%s_%s", b.mcpName, b.tool.Name)
40+ return fmt.Sprintf("mcp_%s_%s", b.mcpName, b.tool.Name)
43func (b *mcpTool) Info() tools.ToolInfo {
43func (b *mcpTool) Info() tools.ToolInfo {
@@ -46,7 +46,7 @@ func (b *mcpTool) Info() tools.ToolInfo {
46 required = make([]string, 0)
46 required = make([]string, 0)
48 return tools.ToolInfo{
48 return tools.ToolInfo{
49− Name: fmt.Sprintf("%s_%s", b.mcpName, b.tool.Name),
49+ Name: fmt.Sprintf("mcp_%s_%s", b.mcpName, b.tool.Name),
50 Description: b.tool.Description,
50 Description: b.tool.Description,
51 Parameters: b.tool.InputSchema.Properties,
51 Parameters: b.tool.InputSchema.Properties,
52 Required: required,
52 Required: required,
@@ -108,14 +108,14 @@ func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolRes
111− return tools.NewTextErrorResponse("permission denied"), nil
111+ return tools.ToolResponse{}, permission.ErrorPermissionDenied
114 switch b.mcpConfig.Type {
114 switch b.mcpConfig.Type {
115 case config.MCPStdio:
115 case config.MCPStdio:
116 c, err := client.NewStdioMCPClient(
116 c, err := client.NewStdioMCPClient(
117 b.mcpConfig.Command,
117 b.mcpConfig.Command,
118− b.mcpConfig.Env,
118+ b.mcpConfig.ResolvedEnv(),
119 b.mcpConfig.Args...,
119 b.mcpConfig.Args...,
121 if err != nil {
121 if err != nil {
@@ -125,7 +125,7 @@ func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolRes
125 case config.MCPHttp:
125 case config.MCPHttp:
126 c, err := client.NewStreamableHttpClient(
126 c, err := client.NewStreamableHttpClient(
127 b.mcpConfig.URL,
127 b.mcpConfig.URL,
128− transport.WithHTTPHeaders(b.mcpConfig.Headers),
128+ transport.WithHTTPHeaders(b.mcpConfig.ResolvedHeaders()),
130 if err != nil {
130 if err != nil {
131 return tools.NewTextErrorResponse(err.Error()), nil
131 return tools.NewTextErrorResponse(err.Error()), nil
@@ -134,7 +134,7 @@ func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolRes
134 case config.MCPSse:
134 case config.MCPSse:
135 c, err := client.NewSSEMCPClient(
135 c, err := client.NewSSEMCPClient(
136 b.mcpConfig.URL,
136 b.mcpConfig.URL,
137− client.WithHeaders(b.mcpConfig.Headers),
137+ client.WithHeaders(b.mcpConfig.ResolvedHeaders()),
139 if err != nil {
139 if err != nil {
140 return tools.NewTextErrorResponse(err.Error()), nil
140 return tools.NewTextErrorResponse(err.Error()), nil
@@ -210,7 +210,7 @@ func doGetMCPTools(ctx context.Context, permissions permission.Service, cfg *con
210 case config.MCPStdio:
210 case config.MCPStdio:
211 c, err := client.NewStdioMCPClient(
211 c, err := client.NewStdioMCPClient(
212 m.Command,
212 m.Command,
213− m.Env,
213+ m.ResolvedEnv(),
214 m.Args...,
214 m.Args...,
216 if err != nil {
216 if err != nil {
@@ -224,7 +224,7 @@ func doGetMCPTools(ctx context.Context, permissions permission.Service, cfg *con
224 case config.MCPHttp:
224 case config.MCPHttp:
225 c, err := client.NewStreamableHttpClient(
225 c, err := client.NewStreamableHttpClient(
227− transport.WithHTTPHeaders(m.Headers),
227+ transport.WithHTTPHeaders(m.ResolvedHeaders()),
229 if err != nil {
229 if err != nil {
230 slog.Error("error creating mcp client", "error", err)
230 slog.Error("error creating mcp client", "error", err)
@@ -236,7 +236,7 @@ func doGetMCPTools(ctx context.Context, permissions permission.Service, cfg *con
236 case config.MCPSse:
236 case config.MCPSse:
237 c, err := client.NewSSEMCPClient(
237 c, err := client.NewSSEMCPClient(
239− client.WithHeaders(m.Headers),
239+ client.WithHeaders(m.ResolvedHeaders()),
241 if err != nil {
241 if err != nil {
242 slog.Error("error creating mcp client", "error", err)
242 slog.Error("error creating mcp client", "error", err)