Module: CompletionKit::McpTools::Datasets
- Defined in:
- app/services/completion_kit/mcp_tools/datasets.rb
Constant Summary collapse
- TOOLS =
{ "datasets_list" => { description: "List all datasets", inputSchema: {type: "object", properties: {}, required: []}, handler: :list }, "datasets_get" => { description: "Get a dataset by ID", inputSchema: {type: "object", properties: {id: {type: "integer"}}, required: ["id"]}, handler: :get }, "datasets_create" => { description: "Create a dataset with CSV data", inputSchema: { type: "object", properties: {name: {type: "string"}, csv_data: {type: "string"}}, required: ["name", "csv_data"] }, handler: :create }, "datasets_update" => { description: "Update a dataset", inputSchema: { type: "object", properties: {id: {type: "integer"}, name: {type: "string"}, csv_data: {type: "string"}}, required: ["id"] }, handler: :update }, "datasets_delete" => { description: "Delete a dataset", inputSchema: {type: "object", properties: {id: {type: "integer"}}, required: ["id"]}, handler: :delete } }.freeze
Class Method Summary collapse
- .call(name, arguments) ⇒ Object
- .create(args) ⇒ Object
- .definitions ⇒ Object
- .delete(args) ⇒ Object
- .error_result(message) ⇒ Object
- .get(args) ⇒ Object
- .list(_args) ⇒ Object
- .text_result(data) ⇒ Object
- .update(args) ⇒ Object
Class Method Details
.call(name, arguments) ⇒ Object
44 45 46 47 |
# File 'app/services/completion_kit/mcp_tools/datasets.rb', line 44 def self.call(name, arguments) tool = TOOLS.fetch(name) send(tool[:handler], arguments) end |
.create(args) ⇒ Object
57 58 59 60 61 62 63 64 |
# File 'app/services/completion_kit/mcp_tools/datasets.rb', line 57 def self.create(args) dataset = Dataset.new(args.slice("name", "csv_data")) if dataset.save text_result(dataset.as_json) else error_result(dataset.errors..join(", ")) end end |
.definitions ⇒ Object
40 41 42 |
# File 'app/services/completion_kit/mcp_tools/datasets.rb', line 40 def self.definitions TOOLS.map { |name, config| {name: name, description: config[:description], inputSchema: config[:inputSchema]} } end |
.delete(args) ⇒ Object
75 76 77 78 |
# File 'app/services/completion_kit/mcp_tools/datasets.rb', line 75 def self.delete(args) Dataset.find(args["id"]).destroy! text_result("Dataset #{args["id"]} deleted") end |
.error_result(message) ⇒ Object
85 86 87 |
# File 'app/services/completion_kit/mcp_tools/datasets.rb', line 85 def self.error_result() {content: [{type: "text", text: }], isError: true} end |
.get(args) ⇒ Object
53 54 55 |
# File 'app/services/completion_kit/mcp_tools/datasets.rb', line 53 def self.get(args) text_result(Dataset.find(args["id"]).as_json) end |
.list(_args) ⇒ Object
49 50 51 |
# File 'app/services/completion_kit/mcp_tools/datasets.rb', line 49 def self.list(_args) text_result(Dataset.order(created_at: :desc).map(&:as_json)) end |
.text_result(data) ⇒ Object
80 81 82 83 |
# File 'app/services/completion_kit/mcp_tools/datasets.rb', line 80 def self.text_result(data) text = data.is_a?(String) ? data : data.to_json {content: [{type: "text", text: text}]} end |
.update(args) ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'app/services/completion_kit/mcp_tools/datasets.rb', line 66 def self.update(args) dataset = Dataset.find(args["id"]) if dataset.update(args.except("id").slice("name", "csv_data")) text_result(dataset.as_json) else error_result(dataset.errors..join(", ")) end end |