use crate::mcp::types::*;
use crate::mcp::{PROTOCOL_VERSION, SERVER_NAME, SERVER_VERSION};
use rpc_router::HandlerResult;
use serde_json::json;
pub async fn initialize(_request: InitializeRequest) -> HandlerResult<InitializeResult> {
let result = InitializeResult {
protocol_version: PROTOCOL_VERSION.to_string(),
server_info: Implementation {
name: SERVER_NAME.to_string(),
version: SERVER_VERSION.to_string(),
},
capabilities: ServerCapabilities {
experimental: None,
prompts: None,
resources: None,
tools: Some(json!({})),
roots: None,
sampling: None,
logging: None,
},
instructions: None,
};
Ok(result)
}
pub fn graceful_shutdown() {
}
pub fn notifications_initialized() {}
pub fn notifications_cancelled(_params: CancelledNotification) {
}
pub async fn ping(_request: PingRequest) -> HandlerResult<EmptyResult> {
Ok(EmptyResult {})
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_initialize() {
let req = InitializeRequest {
protocol_version: "1.0".into(),
capabilities: ClientCapabilities::default(),
client_info: Implementation {
name: "test".into(),
version: "0".into(),
},
};
let res = super::initialize(req).await.unwrap();
assert_eq!(res.server_info.name, crate::mcp::SERVER_NAME);
}
}