Skip to content

A Model Context Protocol (MCP) server for parsing and querying Rust documentation. Extracts detailed information about Rust items (functions, structs, enums) from project documentation and serves them via stdio transport. Perfect for integrating Rust documentation into AI-powered development tools.

License

Notifications You must be signed in to change notification settings

automataIA/mcp-rustdoc-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 MCP Rust Documentation Parser Server

MCP Rust License Status

A Model Context Protocol (MCP) server that parses Rust project documentation and extracts detailed information about requested items, communicating over stdio transport.

✨ Features

  • 🔍 Parse Rust Documentation: Generate markdown documentation from Rust libraries
  • 🧩 Extract Item Details: Find and extract specific items (functions, structs, enums) from the documentation
  • 🔄 Stdio Transport: Simple and efficient communication using standard input/output
  • 🛠️ MCP Compatible: Fully compliant with the Model Context Protocol specification
  • 📊 Async Processing: Built with Tokio for efficient asynchronous operations

🚀 Installation

Prerequisites

  • Rust and Cargo (latest stable version)
  • For documentation generation: rustdoc-json and rustdoc-md tools

Setup

  1. Clone the repository:
git clone https://github.com/yourusername/mcp-rs.git
cd mcp-rs
  1. Build the project:
cargo build

🔧 Usage

Running the Server

cargo run --bin doc_parser_server

Testing with MCP Inspector

The server can be tested using the MCP Inspector tool:

# Install and run the MCP Inspector
RUST_LOG=debug npx @modelcontextprotocol/inspector cargo run --bin doc_parser_server

# In another terminal, run the server
cargo run --bin doc_parser_server

Then open the Inspector at http://localhost:6274 and connect to your server using:

  • Transport Type: STDIO
  • Command: cargo
  • Arguments: run --bin doc_parser_server

API

The server exposes the following MCP tool:

parse_docs

Parses Rust project documentation and extracts information about a specific item.

Parameters:

  • project_path: Path to the Rust project
  • library: Name of the library to parse
  • item: Name of the item to find (function, struct, enum, etc.)

Returns:

  • Detailed information about the requested item, including documentation, signature, and other metadata

🏗️ Architecture

The server is built with the following components:

  • doc_parser_server.rs: Main server implementation with MCP protocol handling
  • doc_generator.rs: Generates markdown documentation from Rust projects
  • doc_item_finder.rs: Extracts specific items from the generated documentation

📦 Dependencies

  • rmcp: Rust implementation of the MCP protocol
  • tokio: Asynchronous runtime
  • tracing: Logging and diagnostics
  • serde and serde_json: JSON serialization/deserialization
  • regex: Pattern matching for documentation parsing
  • anyhow and thiserror: Error handling

🧪 Testing

Manual Testing

  1. Start the server:
cargo run --bin doc_parser_server
  1. Use MCP Inspector to send requests and view responses:
npx @modelcontextprotocol/inspector cargo run --bin doc_parser_server
  1. Open http://localhost:6274 and use the Tools tab to test the parse_docs tool

Automated Testing

Run the test suite:

cargo test

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

About

A Model Context Protocol (MCP) server for parsing and querying Rust documentation. Extracts detailed information about Rust items (functions, structs, enums) from project documentation and serves them via stdio transport. Perfect for integrating Rust documentation into AI-powered development tools.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages