This document presents MPP, a lightweight C++ wrapper for MPI that aims to improve integration of MPI into the C++ language. MPP uses object-oriented concepts like streams to simplify point-to-point communication using send/receive operators. It also introduces endpoints that allow reading from and writing to different processes. MPP handles user-defined data types generically without requiring inheritance or serialization. Performance tests show MPP outperforms Boost.MPI and has only slightly higher latency than native C bindings. The goal of MPP is to provide a high-performance yet easy-to-use C++ interface to MPI.