(server *MCPServer)
| 233 | } |
| 234 | |
| 235 | func registerMCPFileTools(server *MCPServer) { |
| 236 | AddTypedMCPTool(server, &mcp.Tool{Name: "file.create", Description: "创建文件或文件夹"}, func(ctx context.Context, _ *mcp.CallToolRequest, in MCPFileCreateInput) (*mcp.CallToolResult, any, error) { |
| 237 | userID, eid, _, err := CurrentMCPAuthInfo(ctx) |
| 238 | if err != nil { |
| 239 | return nil, nil, err |
| 240 | } |
| 241 | svc := mcpservice.NewFileService() |
| 242 | fileType, err := parseMCPFileType(in.Type) |
| 243 | if err != nil { |
| 244 | return nil, nil, err |
| 245 | } |
| 246 | result, err := svc.CreateFileOrFolder(ctx, eid, userID, in.LibraryID.Int64(), in.Path, fileType, in.Content) |
| 247 | if err != nil { |
| 248 | return nil, nil, err |
| 249 | } |
| 250 | return &mcp.CallToolResult{}, encodeMCPToolOutput(result), nil |
| 251 | }) |
| 252 | |
| 253 | AddTypedMCPTool(server, &mcp.Tool{Name: "file.list", Description: "获取文件或文件夹列表"}, func(ctx context.Context, _ *mcp.CallToolRequest, in MCPFileListInput) (*mcp.CallToolResult, any, error) { |
| 254 | userID, eid, _, err := CurrentMCPAuthInfo(ctx) |
| 255 | if err != nil { |
| 256 | return nil, nil, err |
| 257 | } |
| 258 | svc := mcpservice.NewFileService() |
| 259 | files, err := svc.ListFilesByLibraryAndPath(ctx, eid, userID, in.LibraryID.Int64(), in.Path, in.Recursive, in.Sort) |
| 260 | if err != nil { |
| 261 | return nil, nil, err |
| 262 | } |
| 263 | return &mcp.CallToolResult{}, encodeMCPToolOutput(map[string]any{"items": files, "total": len(files)}), nil |
| 264 | }) |
| 265 | |
| 266 | AddTypedMCPTool(server, &mcp.Tool{Name: "file.detail", Description: "获取文件或文件夹详情"}, func(ctx context.Context, _ *mcp.CallToolRequest, in MCPFileDetailInput) (*mcp.CallToolResult, any, error) { |
| 267 | userID, eid, _, err := CurrentMCPAuthInfo(ctx) |
| 268 | if err != nil { |
| 269 | return nil, nil, err |
| 270 | } |
| 271 | svc := mcpservice.NewFileService() |
| 272 | detail, err := svc.GetFileDetailWithBody(ctx, eid, userID, in.FileID.Int64()) |
| 273 | if err != nil { |
| 274 | return nil, nil, err |
| 275 | } |
| 276 | return &mcp.CallToolResult{}, encodeMCPToolOutput(detail), nil |
| 277 | }) |
| 278 | |
| 279 | AddTypedMCPTool(server, &mcp.Tool{Name: "file.delete", Description: "删除文件或文件夹"}, func(ctx context.Context, _ *mcp.CallToolRequest, in MCPFileDetailInput) (*mcp.CallToolResult, any, error) { |
| 280 | userID, eid, _, err := CurrentMCPAuthInfo(ctx) |
| 281 | if err != nil { |
| 282 | return nil, nil, err |
| 283 | } |
| 284 | svc := mcpservice.NewFileService() |
| 285 | deletedFile, err := svc.DeleteFile(ctx, eid, userID, in.FileID.Int64()) |
| 286 | if err != nil { |
| 287 | return nil, nil, err |
| 288 | } |
| 289 | return &mcp.CallToolResult{}, encodeMCPToolOutput(map[string]any{ |
| 290 | "deleted": true, |
| 291 | "file": deletedFile, |
| 292 | }), nil |
no test coverage detected