-
Notifications
You must be signed in to change notification settings - Fork 422
feat: Add optional Rust plugin framework with PII Filter implementation #1289
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add complete Rust plugin framework with high-performance PII detection: - Rust builds are OPTIONAL and disabled by default (ENABLE_RUST_BUILD=0) - Set ENABLE_RUST_BUILD=1 to enable Rust plugin builds - Automatic fallback to Python implementation when Rust unavailable - PII Filter with 5-10x performance improvement over Python - Container builds support --build-arg ENABLE_RUST=true Key components: - plugins_rust/ directory with complete Rust implementation using PyO3 - PII Filter plugin detects: SSN, credit cards, emails, phones, IPs, etc. - Automatic Rust/Python selection at runtime - Comprehensive test suite (unit, integration, differential) - Benchmarking framework for performance comparison - Complete documentation and quickstart guide - Optional CI/CD workflow for Rust builds Build system integration: - Makefile with rust-build, rust-dev, rust-test targets - Containerfile with optional manylinux2014 Rust builder stage - MANIFEST.in includes Rust source files in distributions - .gitignore excludes Rust build artifacts Testing shows: - Default build works without Rust toolchain - Rust build compiles successfully with ENABLE_RUST_BUILD=1 - All existing tests pass with automatic implementation selection - 14/15 Rust-specific tests pass (minor pattern differences) Related to #1172 Signed-off-by: Mihai Criveti <[email protected]>
Add easy-to-remember targets for building containers with Rust plugins: - make container-build-rust: Build standard container with Rust - make container-build-rust-lite: Build lite container with Rust - make container-rust: Build with Rust and run (all-in-one) These targets automatically set ENABLE_RUST_BUILD=1 internally, so users don't need to remember the environment variable. Related to #1172 Signed-off-by: Mihai Criveti <[email protected]>
Fix hadolint warnings in Containerfile and Containerfile.lite: - Pin manylinux2014_x86_64 to specific version (2024-10-19-abab9d5) instead of using 'latest' tag - Add SHELL directive with pipefail before RUN commands with pipes for better error detection and safety This ensures reproducible builds and follows container best practices. Related to #1172 Signed-off-by: Mihai Criveti <[email protected]>
Add visual indicator in admin UI to show which plugins use Rust vs Python: - 🦀 Rust badge (orange) for Rust-accelerated plugins with tooltip showing "5-100x faster" performance benefit - 🐍 Python badge (blue) for pure Python implementations - Update plugins_partial.html to display implementation badge - Expose 'implementation' attribute from plugin instances in plugin_service - Adjust flex layout (gap-2, flex-wrap) for better badge spacing This makes it immediately visible to users which plugins benefit from Rust acceleration in the admin interface. Related to #1172 Signed-off-by: Mihai Criveti <[email protected]>
Signed-off-by: Mihai Criveti <[email protected]>
Signed-off-by: Mihai Criveti <[email protected]>
p4yl04d3r
pushed a commit
to p4yl04d3r/mcp-context-forge
that referenced
this pull request
Nov 19, 2025
…on (IBM#1289) * feat: Add optional Rust plugin framework with PII Filter implementation Add complete Rust plugin framework with high-performance PII detection: - Rust builds are OPTIONAL and disabled by default (ENABLE_RUST_BUILD=0) - Set ENABLE_RUST_BUILD=1 to enable Rust plugin builds - Automatic fallback to Python implementation when Rust unavailable - PII Filter with 5-10x performance improvement over Python - Container builds support --build-arg ENABLE_RUST=true Key components: - plugins_rust/ directory with complete Rust implementation using PyO3 - PII Filter plugin detects: SSN, credit cards, emails, phones, IPs, etc. - Automatic Rust/Python selection at runtime - Comprehensive test suite (unit, integration, differential) - Benchmarking framework for performance comparison - Complete documentation and quickstart guide - Optional CI/CD workflow for Rust builds Build system integration: - Makefile with rust-build, rust-dev, rust-test targets - Containerfile with optional manylinux2014 Rust builder stage - MANIFEST.in includes Rust source files in distributions - .gitignore excludes Rust build artifacts Testing shows: - Default build works without Rust toolchain - Rust build compiles successfully with ENABLE_RUST_BUILD=1 - All existing tests pass with automatic implementation selection - 14/15 Rust-specific tests pass (minor pattern differences) Related to IBM#1172 Signed-off-by: Mihai Criveti <[email protected]> * feat: Add dedicated Makefile targets for Rust container builds Add easy-to-remember targets for building containers with Rust plugins: - make container-build-rust: Build standard container with Rust - make container-build-rust-lite: Build lite container with Rust - make container-rust: Build with Rust and run (all-in-one) These targets automatically set ENABLE_RUST_BUILD=1 internally, so users don't need to remember the environment variable. Related to IBM#1172 Signed-off-by: Mihai Criveti <[email protected]> * fix: Address hadolint issues in Rust builder stages Fix hadolint warnings in Containerfile and Containerfile.lite: - Pin manylinux2014_x86_64 to specific version (2024-10-19-abab9d5) instead of using 'latest' tag - Add SHELL directive with pipefail before RUN commands with pipes for better error detection and safety This ensures reproducible builds and follows container best practices. Related to IBM#1172 Signed-off-by: Mihai Criveti <[email protected]> * feat: Add Rust/Python implementation badge to plugin UI Add visual indicator in admin UI to show which plugins use Rust vs Python: - 🦀 Rust badge (orange) for Rust-accelerated plugins with tooltip showing "5-100x faster" performance benefit - 🐍 Python badge (blue) for pure Python implementations - Update plugins_partial.html to display implementation badge - Expose 'implementation' attribute from plugin instances in plugin_service - Adjust flex layout (gap-2, flex-wrap) for better badge spacing This makes it immediately visible to users which plugins benefit from Rust acceleration in the admin interface. Related to IBM#1172 Signed-off-by: Mihai Criveti <[email protected]> * Containerfile Signed-off-by: Mihai Criveti <[email protected]> * Containerfile Signed-off-by: Mihai Criveti <[email protected]> --------- Signed-off-by: Mihai Criveti <[email protected]> Signed-off-by: p4yl04d3r <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Rust Plugin Framework with PII Filter Implementation
feat: Add Rust plugin framework with high-performance PII filter (5-100x speedup) closes #1249
Summary
This PR introduces a Rust plugin framework for MCP Gateway with an initial high-performance PII filter implementation. The framework provides automatic fallback between Rust and Python implementations, comprehensive testing, and full CI/CD integration.
Key Features
Performance Improvements
Files Changed (37 files, +8564/-9 lines)
Core Framework
plugins_rust/src/lib.rs- Main library entry pointplugins_rust/src/pii_filter/- Rust PII filter implementationdetector.rs- Core detection logic with parallel processingpatterns.rs- Optimized regex patterns for PII detectionmasking.rs- Text masking strategiesconfig.rs- Configuration and Python bindingsAuto-Detection & Integration
plugins/pii_filter/pii_filter.py- Enhanced with Rust auto-detectionplugins/pii_filter/pii_filter_rust.py- Python wrapper for Rust implementationplugins/pii_filter/pii_filter_python.py- Pure Python fallbackmcpgateway/schemas.py- Addedimplementationfield toPluginSummarymcpgateway/services/plugin_service.py- Extract implementation type for APImcpgateway/templates/plugins_partial.html- Display implementation badgesTesting & Quality
tests/unit/mcpgateway/plugins/test_pii_filter_rust.py- Comprehensive unit teststests/differential/test_pii_filter_differential.py- Validate Rust/Python equivalenceplugins_rust/tests/integration.rs- Rust integration testsplugins_rust/benches/pii_filter.rs- Performance benchmarksplugins_rust/benchmarks/compare_pii_filter.py- Cross-implementation comparisonDocumentation
plugins_rust/README.md- Complete framework documentationplugins_rust/QUICKSTART.md- Quick start guide for Rust pluginsplugins_rust/docs/implementation-guide.md- Step-by-step implementation guideplugins_rust/docs/build-and-test.md- Build and testing documentationplugins_rust/benchmarks/docs/latest-results.md- Performance benchmark resultsdocs/docs/using/plugins/rust-plugins.md- User-facing documentationBuild & CI/CD
.github/workflows/rust-plugins.yml- Complete CI/CD pipelineMakefile- Added Rust plugin build targetsplugins_rust/Makefile- Comprehensive build automationplugins_rust/Cargo.toml- Rust project configurationplugins_rust/pyproject.toml- Python packaging configurationOther Changes
.pre-commit-config.yaml- Excludetests/load/from naming checksmcpgateway/middleware/request_logging_middleware.py- Fixed pylint warnings.gitignore- Added Rust build artifactsTechnical Details
Auto-Detection Logic
UI Display
/admin/pluginsAPI inPluginSummaryschemaCI/CD Pipeline
Installation
For Users (Python only)
For Developers
Testing
Test Coverage
Run Tests Locally
Breaking Changes
None. This is a purely additive change with automatic fallback to Python implementation.
Migration Guide
No migration required. Existing Python PII filter continues to work. Users can opt-in to Rust acceleration with:
Performance Validation
Benchmark Results
See
plugins_rust/benchmarks/docs/latest-results.mdfor complete results.Documentation
User Documentation
docs/docs/using/plugins/rust-plugins.md- Complete user guideplugins_rust/README.md- Framework overviewplugins_rust/QUICKSTART.md- Quick start guideDeveloper Documentation
plugins_rust/docs/implementation-guide.md- How to build Rust pluginsplugins_rust/docs/build-and-test.md- Build system documentationplugins_rust/benchmarks/docs/quick-reference.md- Benchmarking guideChecklist
Related Issues
Closes #[issue number if applicable]
Screenshots
Plugin catalog UI showing Rust implementation badge:

Autodetect on load:
Notes for Reviewers
Next Steps (Future Work)