Feature: Create protobuf specification for plugin framework to support gRPC and multi-language support. #1386
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
ContextForge Protobuf Schemas
Language-agnostic schema definitions for the ContextForge plugin framework.
Why Protobuf?
Enable plugin development in multiple languages (Python, Rust, Go, Java) while maintaining a single source of truth for data structures. Protobuf provides:
Quick Start
Architecture
Pydantic models (
mcpgateway/plugins/framework/models.py) are the canonical Python implementation.Protobuf schemas (
protobufs/plugins/schemas/) enable cross-language support (Rust, Go, etc.).Conversion methods bridge the two:
Schema Structure
Field Requirements
Protos document field requirements with comments:
// REQUIRED- Must be set// OPTIONAL- Can be omitted// OPTIONAL - defaults to X- Default value specifiedUsage
Python (Pydantic):
Cross-language (Protobuf):
Other languages: Generate code from protos using standard tools:
Key Features
✅ Pydantic models remain canonical (validation, type safety, Python-native)
✅ Protobuf for wire protocol and cross-language serialization
✅ Lazy loading - protobuf only imported when needed
✅ Follows Pydantic conventions (
model_dump_pb(),model_validate_pb())