mirror of
https://github.com/poem-web/poem.git
synced 2026-01-24 20:08:49 +00:00
Some checks failed
CI / check (map[name:poem path:poem]) (push) Has been cancelled
CI / check (map[name:poem-derive path:poem-derive]) (push) Has been cancelled
CI / check (map[name:poem-grpc path:poem-grpc]) (push) Has been cancelled
CI / check (map[name:poem-grpc-build path:poem-grpc-build]) (push) Has been cancelled
CI / check (map[name:poem-lambda path:poem-lambda]) (push) Has been cancelled
CI / check (map[name:poem-mcpserver path:poem-mcpserver]) (push) Has been cancelled
CI / check (map[name:poem-mcpserver-macros path:poem-mcpserver-macros]) (push) Has been cancelled
CI / check (map[name:poem-openapi path:poem-openapi]) (push) Has been cancelled
CI / check (map[name:poem-openapi-derive path:poem-openapi-derive]) (push) Has been cancelled
CI / check-examples (push) Has been cancelled
Code Coverage / cover (push) Has been cancelled
2.7 KiB
2.7 KiB
MCP Server implementation for Poem
Example
[dependencies]
poem-mcpserver.workspace = "*"
serde = { version = "1.0", features = ["derive"] }
schemars = "1.0"
use poem_mcpserver::{stdio::stdio, tool::Text, McpServer, Tools};
struct Counter {
count: i32,
}
/// This server provides a counter tool that can increment and decrement values.
///
/// The counter starts at 0 and can be modified using the 'increment' and
/// 'decrement' tools. Use 'get_value' to check the current count.
#[Tools]
impl Counter {
/// Increment the counter by 1
async fn increment(&mut self) -> Text<i32> {
self.count += 1;
Text(self.count)
}
/// Decrement the counter by 1
async fn decrement(&mut self) -> Text<i32> {
self.count -= 1;
Text(self.count)
}
/// Get the current counter value
async fn get_value(&self) -> Text<i32> {
Text(self.count)
}
}
#[tokio::main]
async fn main() -> std::io::Result<()> {
stdio(McpServer::new().tools(Counter { count: 0 })).await
}
Safety
This crate uses #![forbid(unsafe_code)] to ensure everything is implemented in 100% Safe Rust.
MSRV
The minimum supported Rust version for this crate is 1.85.0.
Contributing
🎈 Thanks for your help improving the project! We are so happy to have you!
License
Licensed under either of
- Apache License, Version 2.0,(LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Poem by you, shall be licensed as Apache, without any additional terms or conditions.