Class: CompletionKit::McpDispatcher
- Inherits:
-
Object
- Object
- CompletionKit::McpDispatcher
show all
- Defined in:
- app/services/completion_kit/mcp_dispatcher.rb
Defined Under Namespace
Classes: InvalidParams, MethodNotFound
Constant Summary
collapse
- PROTOCOL_VERSION =
"2025-03-26"
Class Method Summary
collapse
Class Method Details
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'app/services/completion_kit/mcp_dispatcher.rb', line 40
def self.call_tool(name, arguments)
case name
when /\Aprompts_/ then McpTools::Prompts.call(name, arguments)
when /\Aruns_/ then McpTools::Runs.call(name, arguments)
when /\Aresponses_/ then McpTools::Responses.call(name, arguments)
when /\Adatasets_/ then McpTools::Datasets.call(name, arguments)
when /\Ametrics_/ then McpTools::Metrics.call(name, arguments)
when /\Acriteria_/ then McpTools::Criteria.call(name, arguments)
when /\Aprovider_credentials_/ then McpTools::ProviderCredentials.call(name, arguments)
else raise MethodNotFound, "Unknown tool: #{name}"
end
end
|
.dispatch(method, params) ⇒ Object
19
20
21
22
23
24
25
26
27
28
|
# File 'app/services/completion_kit/mcp_dispatcher.rb', line 19
def self.dispatch(method, params)
case method
when "tools/list"
{tools: tool_definitions}
when "tools/call"
call_tool(params&.dig("name"), params&.dig("arguments") || {})
else
raise MethodNotFound, "Method not found: #{method}"
end
end
|
.initialize_session ⇒ Object
8
9
10
11
12
13
14
15
16
17
|
# File 'app/services/completion_kit/mcp_dispatcher.rb', line 8
def self.initialize_session
session_id = SecureRandom.uuid
Rails.cache.write("mcp_session:#{session_id}", true, expires_in: 1.hour)
{
session_id: session_id,
protocolVersion: PROTOCOL_VERSION,
serverInfo: {name: "CompletionKit", version: CompletionKit::VERSION},
capabilities: {tools: {listChanged: false}}
}
end
|