⚠️ ARCHIVED — Source moved.This repository is no longer the source of truth for
mctp-rs. The active source now lives in theOpenDevicePartnership/embedded-servicesworkspace as a path-pinned member atmctp-rs/.The in-tree copy was bootstrapped from this repo's
main @ 3d941bain embedded-services#823 and brought to parity withmain @ 1b8b7f5(the head of this repo at the time of archival) in embedded-services#844.Open issues and PRs against the new location: https://github.com/OpenDevicePartnership/embedded-services/issues.
A no_std Rust implementation of the Management Component Transport Protocol (MCTP) as defined in the DMTF DSP0236 specification.
MCTP is a communication protocol designed for platform management subsystems in computer systems. It facilitates communication between management controllers (like BMCs) and managed devices across various bus types. This library provides:
- Protocol Implementation: Complete MCTP transport layer with packet assembly/disassembly
- Medium Abstraction: Support for different physical transport layers (SMBus/eSPI included)
- No-std Compatible: Suitable for embedded and resource-constrained environments
espi- Enables eSPI device support via theespi-devicecrate
See the crate documentation for up-to-date usage and examples: Rendered Docs
The library is structured around:
MctpPacketContext: Main entry point for handling MCTP packetsMctpMedium: Trait for implementing transport-specific packet handlingMctpMessage: Represents a complete MCTP message with reply context- Control Commands: Type-safe implementation of MCTP control protocol
MIT License - see LICENSE.md for details.
- Ensure
cargo checkandcargo testpass - Test with all feature combinations using
cargo hack --feature-powerset check - Maintain
no_stdcompatibility - Follow the existing code patterns for protocol message handling