use axum::{extract::State, response::Json};
use super::mcp::{handle_mcp_request, McpRequest, McpResponse};
use super::state::BancoState;
pub async fn mcp_handler(
State(state): State<BancoState>,
Json(request): Json<McpRequest>,
) -> Json<McpResponse> {
let response = handle_mcp_request(&request, &state.tools, &state.prompts);
Json(response)
}
pub async fn mcp_info_handler() -> Json<McpInfoResponse> {
Json(McpInfoResponse {
protocol: "mcp".to_string(),
version: "2024-11-05".to_string(),
server: "banco".to_string(),
server_version: env!("CARGO_PKG_VERSION").to_string(),
transport: "http".to_string(),
endpoint: "/api/v1/mcp".to_string(),
})
}
#[derive(Debug, serde::Serialize)]
pub struct McpInfoResponse {
pub protocol: String,
pub version: String,
pub server: String,
pub server_version: String,
pub transport: String,
pub endpoint: String,
}