refactor: refactor tool macros and router implementation (#261)
* refactor: refactor tool macros and router implementation - Updated the `#[tool(tool_box)]` macro to `#[tool_router]` across various modules for consistency. - Enhanced the `Calculator`, `Counter`, and `GenericService` structs to utilize `ToolRouter` for handling tool calls. - Introduced `Parameters` struct for better parameter handling in tool functions. - Added new methods for listing tools and calling tools in server handlers. - Improved test cases to reflect changes in tool routing and parameter handling. - Updated documentation and examples to align with the new router structure. * fix: fix fmt and build error * fix: fix test failure * docs: documents for macros, fix ci * fix: fix ci * fix: fix wrongly replaced documents * fix: remove useless file * fix: change the parameter format for tool_router * fix: update extract_doc_line to handle existing documentation and clean up unused code in server handler * doc: update document for macro and examples * doc: update readme and add contribute guide * fix: fix type
This commit is contained in:
parent
6d3190504c
commit
1f7f4d3055
1 changed files with 1498 additions and 1147 deletions
|
|
@ -1,4 +1,6 @@
|
|||
use rmcp::{Error as McpError, model::*, schemars, tool};
|
||||
use rmcp::{
|
||||
Error as McpError, handler::server::tool::Parameters, model::*, schemars, tool, tool_router,
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
|
||||
|
|
@ -24,7 +26,7 @@ pub struct ChatRequest {
|
|||
#[derive(Clone, Default)]
|
||||
pub struct Demo;
|
||||
|
||||
#[tool(tool_box)]
|
||||
#[tool_router]
|
||||
impl Demo {
|
||||
pub fn new() -> Self {
|
||||
Self
|
||||
|
|
@ -33,9 +35,9 @@ impl Demo {
|
|||
#[tool(description = "LLM")]
|
||||
async fn chat(
|
||||
&self,
|
||||
#[tool(aggr)] chat_request: ChatRequest,
|
||||
chat_request: Parameters<ChatRequest>,
|
||||
) -> Result<CallToolResult, McpError> {
|
||||
let content = Content::json(chat_request)?;
|
||||
let content = Content::json(chat_request.0)?;
|
||||
Ok(CallToolResult::success(vec![content]))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue