@@ -22,6 +22,7 @@ type mcpTool struct {
22 tool mcp.Tool
22 tool mcp.Tool
23 mcpConfig config.MCPConfig
23 mcpConfig config.MCPConfig
24 permissions permission.Service
24 permissions permission.Service
27type MCPClient interface {
28type MCPClient interface {
@@ -98,7 +99,7 @@ func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolRes
98 p := b.permissions.Request(
99 p := b.permissions.Request(
99 permission.CreatePermissionRequest{
100 permission.CreatePermissionRequest{
100 SessionID: sessionID,
101 SessionID: sessionID,
101− Path: config.Get().WorkingDir(),
102+ Path: b.workingDir,
102 ToolName: b.Info().Name,
103 ToolName: b.Info().Name,
103 Action: "execute",
104 Action: "execute",
104 Description: permissionDescription,
105 Description: permissionDescription,
@@ -143,18 +144,19 @@ func (b *mcpTool) Run(ctx context.Context, params tools.ToolCall) (tools.ToolRes
143 return tools.NewTextErrorResponse("invalid mcp type"), nil
144 return tools.NewTextErrorResponse("invalid mcp type"), nil
146−func NewMcpTool(name string, tool mcp.Tool, permissions permission.Service, mcpConfig config.MCPConfig) tools.BaseTool {
147+func NewMcpTool(name string, tool mcp.Tool, permissions permission.Service, mcpConfig config.MCPConfig, workingDir string) tools.BaseTool {
147 return &mcpTool{
148 return &mcpTool{
148 mcpName: name,
149 mcpName: name,
149 tool: tool,
150 tool: tool,
150 mcpConfig: mcpConfig,
151 mcpConfig: mcpConfig,
151 permissions: permissions,
152 permissions: permissions,
153+ workingDir: workingDir,
155var mcpTools []tools.BaseTool
157var mcpTools []tools.BaseTool
157−func getTools(ctx context.Context, name string, m config.MCPConfig, permissions permission.Service, c MCPClient) []tools.BaseTool {
159+func getTools(ctx context.Context, name string, m config.MCPConfig, permissions permission.Service, c MCPClient, workingDir string) []tools.BaseTool {
158 var stdioTools []tools.BaseTool
160 var stdioTools []tools.BaseTool
159 initRequest := mcp.InitializeRequest{}
161 initRequest := mcp.InitializeRequest{}
160 initRequest.Params.ProtocolVersion = mcp.LATEST_PROTOCOL_VERSION
162 initRequest.Params.ProtocolVersion = mcp.LATEST_PROTOCOL_VERSION
@@ -175,17 +177,17 @@ func getTools(ctx context.Context, name string, m config.MCPConfig, permissions
175 return stdioTools
177 return stdioTools
177 for _, t := range tools.Tools {
179 for _, t := range tools.Tools {
178− stdioTools = append(stdioTools, NewMcpTool(name, t, permissions, m))
180+ stdioTools = append(stdioTools, NewMcpTool(name, t, permissions, m, workingDir))
180 defer c.Close()
182 defer c.Close()
181 return stdioTools
183 return stdioTools
184−func GetMcpTools(ctx context.Context, permissions permission.Service) []tools.BaseTool {
186+func GetMcpTools(ctx context.Context, permissions permission.Service, cfg *config.Config) []tools.BaseTool {
185 if len(mcpTools) > 0 {
187 if len(mcpTools) > 0 {
186 return mcpTools
188 return mcpTools
188− for name, m := range config.Get().MCP {
190+ for name, m := range cfg.MCP {
189 switch m.Type {
191 switch m.Type {
190 case config.MCPStdio:
192 case config.MCPStdio:
191 c, err := client.NewStdioMCPClient(
193 c, err := client.NewStdioMCPClient(
@@ -198,7 +200,7 @@ func GetMcpTools(ctx context.Context, permissions permission.Service) []tools.Ba
201− mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c)...)
203+ mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c, cfg.WorkingDir())...)
202 case config.MCPHttp:
204 case config.MCPHttp:
203 c, err := client.NewStreamableHttpClient(
205 c, err := client.NewStreamableHttpClient(
@@ -208,7 +210,7 @@ func GetMcpTools(ctx context.Context, permissions permission.Service) []tools.Ba
208 slog.Error("error creating mcp client", "error", err)
210 slog.Error("error creating mcp client", "error", err)
211− mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c)...)
213+ mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c, cfg.WorkingDir())...)
212 case config.MCPSse:
214 case config.MCPSse:
213 c, err := client.NewSSEMCPClient(
215 c, err := client.NewSSEMCPClient(
@@ -218,7 +220,7 @@ func GetMcpTools(ctx context.Context, permissions permission.Service) []tools.Ba
218 slog.Error("error creating mcp client", "error", err)
220 slog.Error("error creating mcp client", "error", err)
221− mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c)...)
223+ mcpTools = append(mcpTools, getTools(ctx, name, m, permissions, c, cfg.WorkingDir())...)