Skip to main content

oak_rust/mcp/
mod.rs

1#![doc = include_str!("readme.md")]
2use crate::lsp::RustLanguageService;
3use oak_vfs::MemoryVfs;
4
5/// Starts an Model Context Protocol (MCP) server for Rust semantics.
6///
7/// This server uses standard I/O (stdio) to communicate with clients and provides
8/// semantic information about Rust source code managed by the virtual file system.
9///
10/// # Arguments
11///
12/// * `vfs` - The memory-based virtual file system used for document management.
13pub async fn serve_rust_mcp(vfs: MemoryVfs) {
14    let service = RustLanguageService::new(vfs);
15    let server = oak_mcp::McpServer::new(service);
16
17    let stdin = tokio::io::stdin();
18    let stdout = tokio::io::stdout();
19    let reader = tokio::io::BufReader::new(stdin);
20
21    server.run(reader, stdout).await.unwrap()
22}