home / mcp / roberto mcp server
A fast, language-agnostic MCP server in Rust for symbol lookups, references, and semantic code search across large codebases.
Configuration
View docs{
"mcpServers": {
"kensave-roberto-mcp": {
"command": "./target/release/roberto-mcp",
"args": [],
"env": {
"RUST_LOG": "info",
"ROBERTO_CACHE_DIR": "~/.cache/roberto-mcp",
"ROBERTO_MAX_MEMORY_MB": "1024",
"ROBERTO_EVICTION_THRESHOLD": "0.8"
}
}
}
}Roberto MCP is a high-performance, language-agnostic code analysis server. Built in Rust, it delivers fast symbol lookups, reference tracking, and semantic code search across large codebases, with robust concurrency and incremental updates to keep up with your development workflow.
You will run Roberto MCP locally and connect your MCP client to it to index your codebase, search for symbols, and explore references. Start the server, index a repository or directory, and then perform queries such as finding symbols by name, retrieving symbol details with source, and performing full-text code searches. The client can issue these actions using the MCP protocol; your job is to start Roberto MCP and point the client at the running process.
Practical use patterns include: indexing a project directory, querying for all references to a symbol, discovering the outline of a file, and performing BM25-based searches across all indexed code content. You can also request a directory-wide overview to understand the API surface and architecture of your codebase.
Prerequisites you need before building and running Roberto MCP:
Step-by-step commands to clone, build, and run the server locally:
# Clone the project
git clone https://github.com/kensave/roberto-mcp.git
cd roberto-mcp
# Build in release mode
cargo build --release
# Run the server (stdio-based, local process)
./target/release/roberto-mcpThe server runs as a local process using standard input/output (stdio). You start the binary directly and then communicate with it using the MCP protocol over stdio. You can customize memory usage and logging with environment variables when starting the server.
Environment variables shown for configuring the server are: - ROBERTO_MAX_MEMORY_MB: maximum memory in MB to use - ROBERTO_EVICTION_THRESHOLD: memory pressure threshold for LRU eviction - ROBERTO_CACHE_DIR: location of the cache on disk - RUST_LOG: logging level and module filters (e.g., info, debug, trace)
If the server does not respond or you encounter errors, check the following common areas: verify the binary path is correct and executable, ensure memory limits are appropriate for your repository size, and review logs for any initialization or IO errors. If you enable debug or trace logs, you can pinpoint bottlenecks or failing components.
To validate behavior locally, run unit and integration tests and perform manual commands against the running server. Use the provided tooling to simulate indexing, symbol queries, and code searches to confirm correct responses.
Index source code to build the symbol table used for fast lookups.
Retrieve symbol information by name with optional source inclusion.
Find all references to a symbol across the codebase.
Search symbols by query with exact or fuzzy matching and optional type filtering.
BM25-based full-text search across all indexed code content.
Get a structured outline of symbols within a specific file.
Get a high-level overview of symbols across a directory.