Implement SEP-1319: Decouple Request Payload from RPC Methods (#617)
* feat: implement SEP-1319 Decouple Request Payload from RPC Methods * test: update tests * fix: update handler trait methods to use new types * fix: update examples * fix: correct deprecation version * fix: update wrapper macros to use new *Params type names
This commit is contained in:
parent
48e989b711
commit
9e881a645b
1 changed files with 913 additions and 278 deletions
|
|
@ -137,7 +137,7 @@ impl<H: ServerHandler> Service<RoleServer> for H {
|
|||
pub trait ServerHandler: Sized + Send + Sync + 'static {
|
||||
fn enqueue_task(
|
||||
&self,
|
||||
_request: CallToolRequestParam,
|
||||
_request: CallToolRequestParams,
|
||||
_context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<CreateTaskResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Err(McpError::internal_error(
|
||||
|
|
@ -154,7 +154,7 @@ pub trait ServerHandler: Sized + Send + Sync + 'static {
|
|||
// handle requests
|
||||
fn initialize(
|
||||
&self,
|
||||
request: InitializeRequestParam,
|
||||
request: InitializeRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<InitializeResult, McpError>> + Send + '_ {
|
||||
if context.peer.peer_info().is_none() {
|
||||
|
|
@ -164,49 +164,49 @@ pub trait ServerHandler: Sized + Send + Sync + 'static {
|
|||
}
|
||||
fn complete(
|
||||
&self,
|
||||
request: CompleteRequestParam,
|
||||
request: CompleteRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<CompleteResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Ok(CompleteResult::default()))
|
||||
}
|
||||
fn set_level(
|
||||
&self,
|
||||
request: SetLevelRequestParam,
|
||||
request: SetLevelRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<(), McpError>> + Send + '_ {
|
||||
std::future::ready(Err(McpError::method_not_found::<SetLevelRequestMethod>()))
|
||||
}
|
||||
fn get_prompt(
|
||||
&self,
|
||||
request: GetPromptRequestParam,
|
||||
request: GetPromptRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<GetPromptResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Err(McpError::method_not_found::<GetPromptRequestMethod>()))
|
||||
}
|
||||
fn list_prompts(
|
||||
&self,
|
||||
request: Option<PaginatedRequestParam>,
|
||||
request: Option<PaginatedRequestParams>,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ListPromptsResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Ok(ListPromptsResult::default()))
|
||||
}
|
||||
fn list_resources(
|
||||
&self,
|
||||
request: Option<PaginatedRequestParam>,
|
||||
request: Option<PaginatedRequestParams>,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ListResourcesResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Ok(ListResourcesResult::default()))
|
||||
}
|
||||
fn list_resource_templates(
|
||||
&self,
|
||||
request: Option<PaginatedRequestParam>,
|
||||
request: Option<PaginatedRequestParams>,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ListResourceTemplatesResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Ok(ListResourceTemplatesResult::default()))
|
||||
}
|
||||
fn read_resource(
|
||||
&self,
|
||||
request: ReadResourceRequestParam,
|
||||
request: ReadResourceRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ReadResourceResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Err(
|
||||
|
|
@ -215,28 +215,28 @@ pub trait ServerHandler: Sized + Send + Sync + 'static {
|
|||
}
|
||||
fn subscribe(
|
||||
&self,
|
||||
request: SubscribeRequestParam,
|
||||
request: SubscribeRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<(), McpError>> + Send + '_ {
|
||||
std::future::ready(Err(McpError::method_not_found::<SubscribeRequestMethod>()))
|
||||
}
|
||||
fn unsubscribe(
|
||||
&self,
|
||||
request: UnsubscribeRequestParam,
|
||||
request: UnsubscribeRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<(), McpError>> + Send + '_ {
|
||||
std::future::ready(Err(McpError::method_not_found::<UnsubscribeRequestMethod>()))
|
||||
}
|
||||
fn call_tool(
|
||||
&self,
|
||||
request: CallToolRequestParam,
|
||||
request: CallToolRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<CallToolResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Err(McpError::method_not_found::<CallToolRequestMethod>()))
|
||||
}
|
||||
fn list_tools(
|
||||
&self,
|
||||
request: Option<PaginatedRequestParam>,
|
||||
request: Option<PaginatedRequestParams>,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ListToolsResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Ok(ListToolsResult::default()))
|
||||
|
|
@ -297,7 +297,7 @@ pub trait ServerHandler: Sized + Send + Sync + 'static {
|
|||
|
||||
fn list_tasks(
|
||||
&self,
|
||||
request: Option<PaginatedRequestParam>,
|
||||
request: Option<PaginatedRequestParams>,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ListTasksResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Err(McpError::method_not_found::<ListTasksMethod>()))
|
||||
|
|
@ -305,7 +305,7 @@ pub trait ServerHandler: Sized + Send + Sync + 'static {
|
|||
|
||||
fn get_task_info(
|
||||
&self,
|
||||
request: GetTaskInfoParam,
|
||||
request: GetTaskInfoParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<GetTaskInfoResult, McpError>> + Send + '_ {
|
||||
std::future::ready(Err(McpError::method_not_found::<GetTaskInfoMethod>()))
|
||||
|
|
@ -313,7 +313,7 @@ pub trait ServerHandler: Sized + Send + Sync + 'static {
|
|||
|
||||
fn get_task_result(
|
||||
&self,
|
||||
request: GetTaskResultParam,
|
||||
request: GetTaskResultParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<TaskResult, McpError>> + Send + '_ {
|
||||
let _ = (request, context);
|
||||
|
|
@ -322,7 +322,7 @@ pub trait ServerHandler: Sized + Send + Sync + 'static {
|
|||
|
||||
fn cancel_task(
|
||||
&self,
|
||||
request: CancelTaskParam,
|
||||
request: CancelTaskParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<(), McpError>> + Send + '_ {
|
||||
let _ = (request, context);
|
||||
|
|
@ -335,7 +335,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
impl<T: ServerHandler> ServerHandler for $wrapper<T> {
|
||||
fn enqueue_task(
|
||||
&self,
|
||||
request: CallToolRequestParam,
|
||||
request: CallToolRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<CreateTaskResult, McpError>> + Send + '_ {
|
||||
(**self).enqueue_task(request, context)
|
||||
|
|
@ -350,7 +350,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn initialize(
|
||||
&self,
|
||||
request: InitializeRequestParam,
|
||||
request: InitializeRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<InitializeResult, McpError>> + Send + '_ {
|
||||
(**self).initialize(request, context)
|
||||
|
|
@ -358,7 +358,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn complete(
|
||||
&self,
|
||||
request: CompleteRequestParam,
|
||||
request: CompleteRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<CompleteResult, McpError>> + Send + '_ {
|
||||
(**self).complete(request, context)
|
||||
|
|
@ -366,7 +366,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn set_level(
|
||||
&self,
|
||||
request: SetLevelRequestParam,
|
||||
request: SetLevelRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<(), McpError>> + Send + '_ {
|
||||
(**self).set_level(request, context)
|
||||
|
|
@ -374,7 +374,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn get_prompt(
|
||||
&self,
|
||||
request: GetPromptRequestParam,
|
||||
request: GetPromptRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<GetPromptResult, McpError>> + Send + '_ {
|
||||
(**self).get_prompt(request, context)
|
||||
|
|
@ -382,7 +382,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn list_prompts(
|
||||
&self,
|
||||
request: Option<PaginatedRequestParam>,
|
||||
request: Option<PaginatedRequestParams>,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ListPromptsResult, McpError>> + Send + '_ {
|
||||
(**self).list_prompts(request, context)
|
||||
|
|
@ -390,7 +390,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn list_resources(
|
||||
&self,
|
||||
request: Option<PaginatedRequestParam>,
|
||||
request: Option<PaginatedRequestParams>,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ListResourcesResult, McpError>> + Send + '_ {
|
||||
(**self).list_resources(request, context)
|
||||
|
|
@ -398,7 +398,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn list_resource_templates(
|
||||
&self,
|
||||
request: Option<PaginatedRequestParam>,
|
||||
request: Option<PaginatedRequestParams>,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ListResourceTemplatesResult, McpError>> + Send + '_
|
||||
{
|
||||
|
|
@ -407,7 +407,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn read_resource(
|
||||
&self,
|
||||
request: ReadResourceRequestParam,
|
||||
request: ReadResourceRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ReadResourceResult, McpError>> + Send + '_ {
|
||||
(**self).read_resource(request, context)
|
||||
|
|
@ -415,7 +415,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn subscribe(
|
||||
&self,
|
||||
request: SubscribeRequestParam,
|
||||
request: SubscribeRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<(), McpError>> + Send + '_ {
|
||||
(**self).subscribe(request, context)
|
||||
|
|
@ -423,7 +423,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn unsubscribe(
|
||||
&self,
|
||||
request: UnsubscribeRequestParam,
|
||||
request: UnsubscribeRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<(), McpError>> + Send + '_ {
|
||||
(**self).unsubscribe(request, context)
|
||||
|
|
@ -431,7 +431,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn call_tool(
|
||||
&self,
|
||||
request: CallToolRequestParam,
|
||||
request: CallToolRequestParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<CallToolResult, McpError>> + Send + '_ {
|
||||
(**self).call_tool(request, context)
|
||||
|
|
@ -439,7 +439,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn list_tools(
|
||||
&self,
|
||||
request: Option<PaginatedRequestParam>,
|
||||
request: Option<PaginatedRequestParams>,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ListToolsResult, McpError>> + Send + '_ {
|
||||
(**self).list_tools(request, context)
|
||||
|
|
@ -497,7 +497,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn list_tasks(
|
||||
&self,
|
||||
request: Option<PaginatedRequestParam>,
|
||||
request: Option<PaginatedRequestParams>,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<ListTasksResult, McpError>> + Send + '_ {
|
||||
(**self).list_tasks(request, context)
|
||||
|
|
@ -505,7 +505,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn get_task_info(
|
||||
&self,
|
||||
request: GetTaskInfoParam,
|
||||
request: GetTaskInfoParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<GetTaskInfoResult, McpError>> + Send + '_ {
|
||||
(**self).get_task_info(request, context)
|
||||
|
|
@ -513,7 +513,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn get_task_result(
|
||||
&self,
|
||||
request: GetTaskResultParam,
|
||||
request: GetTaskResultParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<TaskResult, McpError>> + Send + '_ {
|
||||
(**self).get_task_result(request, context)
|
||||
|
|
@ -521,7 +521,7 @@ macro_rules! impl_server_handler_for_wrapper {
|
|||
|
||||
fn cancel_task(
|
||||
&self,
|
||||
request: CancelTaskParam,
|
||||
request: CancelTaskParams,
|
||||
context: RequestContext<RoleServer>,
|
||||
) -> impl Future<Output = Result<(), McpError>> + Send + '_ {
|
||||
(**self).cancel_task(request, context)
|
||||
|
|
|
|||
Loading…
Reference in a new issue