* 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
* fix bug,
1 remove erroneous definitions_path setting,"#/components/schemas/" is used for openapi3
2 show meta_schema
* Update crates/rmcp/src/handler/server/tool.rs
Remove the commented-out settings.inline_subschemas line to avoid confusion and clean up dead code.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: wenhaozhao <wenhaozhao@sohu-inc.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: allow failable service creation in streamable HTTP tower service
In our setup we need to lookup some info that may fail before we serve
the request.
* Fix examples build
* allow using a TokioCommandWrap for TokioChildProcess::new closes#243
TokioCommandWrap implements From<tokio::process::Command> so this is not a breaking change, but also downstream users have more control over flags such as KillOnDrop and CreationFlags
see https://docs.rs/process-wrap/latest/process_wrap/#killondrop-and-creationflags
- Introduced `is_standard_notification` function to check for standard MCP notifications.
- Added `try_parse_with_compatibility` function to handle parsing messages with compatibility for non-standard notifications.
- Updated the decoder implementation to utilize the new compatibility handling.
- Added unit tests for standard notification checks and compatibility function to ensure correct behavior.
* feat: provide more context information
1. provide context for notification
2. allow extract more info from tool call
3. inject http request part for streamable http server
* docs: add document for getting peer from context
* feat: better http server support
1. allow user get extensions in tool call.
2. allow user serve sse service without initialization.
* fix: fix document test
* feat(client): cleanup of zombie processes in child process client
Using process wrap library, Process Group for Unix and Job Object for Windows
* fix: install extra dep based on feature, update examples take owned command
Install process-wrap if transport-child-process feature is enabled. Update examples to take ownership
of the command instead of mutable reference
* fix: update other examples, comments and readme to take ownership of command
Updated more examples, comments and readme to take command instead of mutable ref.
Also small fix in cargo toml of example to use local path.
* refactor: add configure command ext
Added configure command ext to tokio process command so that
you can use .configure() to use inline commands for mcp stdio client.
Added warning if start kill process fails