mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1001 B
51 lines
1001 B
# frozen_string_literal: true
|
|
|
|
module Mcp
|
|
class ProtocolController < McpBaseController
|
|
skip_authorization_check
|
|
|
|
def ok
|
|
head :ok
|
|
end
|
|
|
|
def initialize_request
|
|
render_result(
|
|
protocolVersion: '2025-11-25',
|
|
serverInfo: {
|
|
name: 'DocuSeal',
|
|
version: Docuseal.version.to_s
|
|
},
|
|
capabilities: {
|
|
tools: {
|
|
listChanged: false
|
|
}
|
|
}
|
|
)
|
|
end
|
|
|
|
def initialized_notification
|
|
head :accepted
|
|
end
|
|
|
|
def ping
|
|
render_result({})
|
|
end
|
|
|
|
def tools_list
|
|
render_result(tools: McpController::TOOLS)
|
|
end
|
|
|
|
def method_not_found
|
|
render_error(-32_601, "Method not found: #{mcp_body['method']}", id: mcp_body['id'])
|
|
end
|
|
|
|
def tool_not_found
|
|
render_error(-32_602, "Unknown tool: #{mcp_body.dig('params', 'name')}", id: mcp_body['id'])
|
|
end
|
|
|
|
def parse_error
|
|
render_error(-32_700, 'Parse error', status: :bad_request)
|
|
end
|
|
end
|
|
end
|