use ai_session::SessionManager;
use anyhow::Result;
use serde_json::json;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<()> {
println!("๐ง Testing ai-session MCP server...");
let session_manager = Arc::new(SessionManager::new());
println!("๐งช Testing tool registry...");
let tools = ai_session::mcp::tools::ToolRegistry::with_builtin_tools(session_manager.clone());
let tool_list = tools.list_tools();
println!("โ
Available MCP tools ({} total):", tool_list.len());
for tool in tool_list {
println!(" โข {} - {}", tool.name, tool.description);
}
println!("๐งช Testing create_session tool...");
let create_session_args = json!({
"name": "mcp-test-session",
"working_directory": "/tmp"
});
match tools.invoke("create_session", create_session_args) {
Ok(result) => {
println!("โ
create_session tool executed successfully");
if let Some(content) = result.content.first() {
if let ai_session::mcp::tools::ToolContent::Text { text } = content {
println!(" Result: {}", text);
}
}
}
Err(e) => {
println!("โ create_session tool failed: {}", e);
}
}
println!("๐งช Testing get_session_info tool...");
let list_sessions_result = tools.invoke("list_sessions", json!({}));
match list_sessions_result {
Ok(result) => {
println!("โ
list_sessions tool executed successfully");
if let Some(content) = result.content.first() {
if let ai_session::mcp::tools::ToolContent::Text { text } = content {
println!(" Available sessions: {}", text);
}
}
}
Err(e) => {
println!("โ ๏ธ list_sessions tool failed: {}", e);
}
}
println!("๐งช Testing invalid tool call...");
match tools.invoke("nonexistent_tool", json!({})) {
Ok(_) => {
println!("โ Unexpected success for invalid tool");
}
Err(e) => {
println!("โ
Invalid tool correctly rejected: {}", e);
}
}
println!("โ
MCP server test completed successfully!");
Ok(())
}