Skip to content

Commit 9ede52f

Browse files
committed
feat: update changelog and README for version 1.2.0 with enhanced security validations, lazy authentication, and production optimizations
1 parent 69ebd71 commit 9ede52f

3 files changed

Lines changed: 105 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,42 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.2.0] - 2025-01-25
9+
10+
### Added
11+
- **Enhanced Security Validations**
12+
- Comprehensive URL validation with SSRF protection blocking private IPs and dangerous ports
13+
- Command allowlisting for STDIO servers (node, npx, python, python3, uv, uvx, uvenv)
14+
- Header validation and sanitization for Streamable HTTP connections
15+
- Protection against header injection attacks with RFC 7230 compliance
16+
- **Lazy Authentication Support**
17+
- Tool discovery without API keys for better Smithery compatibility
18+
- Authentication only required for actual tool/resource invocations
19+
- Improved compatibility with MCP clients that expect unauthenticated discovery
20+
- **Production Optimizations**
21+
- Multi-stage Docker builds for minimal container footprint
22+
- Excluded test files and dev dependencies from production images
23+
- Optimized for resource-constrained environments
24+
25+
### Changed
26+
- Improved session management and cleanup in Streamable HTTP mode
27+
- Better error handling for transport lifecycle events
28+
- Enhanced TypeScript types for security validators
29+
- Updated documentation with comprehensive security best practices
30+
- Refined Smithery configuration for HTTP transport mode
31+
32+
### Fixed
33+
- Memory management issues in long-running sessions
34+
- Proper cleanup of transports on error conditions
35+
- Session handling edge cases in stateless mode
36+
- Smithery YAML configuration for proper HTTP transport
37+
38+
### Security
39+
- Added comprehensive input validation for all user-provided data
40+
- Implemented SSRF protection for URL-based connections
41+
- Added header injection prevention with size limits
42+
- Command injection protection through strict allowlisting
43+
844
## [1.1.0] - 2025-01-21
945

1046
### Added

README.md

Lines changed: 68 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<h3>The Crossroads for AI Data Exchanges</h3>
66
<p>A unified interface for managing all your MCP servers with real-time notifications</p>
77

8-
[![Version](https://img.shields.io/badge/version-1.1.0-blue?style=for-the-badge)](https://github.com/VeriTeknik/pluggedin-mcp/releases)
8+
[![Version](https://img.shields.io/badge/version-1.2.0-blue?style=for-the-badge)](https://github.com/VeriTeknik/pluggedin-mcp/releases)
99
[![GitHub Stars](https://img.shields.io/github/stars/VeriTeknik/pluggedin-mcp?style=for-the-badge)](https://github.com/VeriTeknik/pluggedin-mcp/stargazers)
1010
[![License](https://img.shields.io/github/license/VeriTeknik/pluggedin-mcp?style=for-the-badge)](LICENSE)
1111
[![TypeScript](https://img.shields.io/badge/TypeScript-4.9+-blue?style=for-the-badge&logo=typescript)](https://www.typescriptlang.org/)
@@ -30,14 +30,26 @@ This proxy enables seamless integration with any MCP client (Claude, Cline, Curs
3030
- **Full MCP Support**: Handles tools, resources, resource templates, and prompts
3131
- **Custom Instructions**: Supports server-specific instructions formatted as MCP prompts
3232

33-
### 🔔 New in v1.0.0
33+
### 🔔 New in v1.2.0
34+
35+
- **Enhanced Security Validations**: Comprehensive URL validation with SSRF protection, command allowlisting, and header sanitization
36+
- **Lazy Authentication**: Tool discovery without API keys for better Smithery compatibility
37+
- **Improved Session Management**: Better handling of session lifecycle in Streamable HTTP mode
38+
- **Production Optimizations**: Lightweight Docker builds optimized for resource-constrained environments
39+
40+
### 📦 Features from v1.1.0
41+
42+
- **Streamable HTTP Support**: Full support for downstream MCP servers using Streamable HTTP transport
43+
- **HTTP Server Mode**: Run the proxy as an HTTP server with configurable ports
44+
- **Flexible Authentication**: Optional Bearer token authentication for HTTP endpoints
45+
- **Session Management**: Choose between stateful (session-based) or stateless operation modes
46+
47+
### 🎯 Core Features from v1.0.0
48+
3449
- **Real-Time Notifications**: Track all MCP activities with comprehensive notification support
3550
- **RAG Integration**: Support for document-enhanced queries through the plugged.in App
36-
- **Enhanced Security**: Industry-standard input validation and sanitization
3751
- **Inspector Scripts**: Automated testing tools for debugging and development
3852
- **Health Monitoring**: Built-in ping endpoint for connection monitoring
39-
- **Streamable HTTP Support**: Connect to modern Streamable HTTP MCP servers
40-
- **HTTP Server Mode**: Run the proxy as an HTTP server for web-based access
4153

4254
## 🚀 Quick Start
4355

@@ -313,23 +325,48 @@ sequenceDiagram
313325
The plugged.in MCP Proxy implements comprehensive security measures to protect your system and data:
314326

315327
### Input Validation & Sanitization
328+
316329
- **Command Injection Prevention**: All commands and arguments are validated against allowlists before execution
317330
- **Environment Variable Security**: Secure parsing of `.env` files with proper handling of quotes and multiline values
318331
- **Token Validation**: Strong regex patterns for API keys and authentication tokens (32-64 hex characters)
319332

320333
### Network Security
321-
- **SSRF Protection**: URL validation blocks access to localhost and private IP ranges
334+
335+
- **SSRF Protection**: URL validation blocks access to:
336+
- Localhost and loopback addresses (127.0.0.1, ::1)
337+
- Private IP ranges (10.x, 172.16-31.x, 192.168.x)
338+
- Link-local addresses (169.254.x)
339+
- Multicast and reserved ranges
340+
- Common internal service ports (SSH, databases, etc.)
341+
- **Header Validation**: Protection against header injection with:
342+
- Dangerous header blocking
343+
- RFC 7230 compliant header name validation
344+
- Control character detection
345+
- Header size limits (8KB max)
322346
- **Rate Limiting**:
323347
- Tool calls: 60 requests per minute
324348
- API calls: 100 requests per minute
325349
- **Error Sanitization**: Prevents information disclosure by sanitizing error messages
326350

327351
### Process Security
352+
328353
- **Safe Command Execution**: Uses `execFile()` instead of `exec()` to prevent shell injection
354+
- **Command Allowlist**: Only permits execution of:
355+
- `node`, `npx` - Node.js commands
356+
- `python`, `python3` - Python commands
357+
- `uv`, `uvx`, `uvenv` - UV Python tools
329358
- **Argument Sanitization**: Removes shell metacharacters and control characters from all arguments
330359
- **Environment Variable Validation**: Only allows alphanumeric keys with underscores
331360

361+
### Streamable HTTP Security
362+
363+
- **Lazy Authentication**: Tool discovery doesn't require authentication, improving compatibility
364+
- **Session Security**: Cryptographically secure session ID generation
365+
- **CORS Protection**: Configurable CORS headers for web access
366+
- **Request Size Limits**: Prevents DoS through large payloads
367+
332368
### Security Utilities
369+
333370
A dedicated `security-utils.ts` module provides:
334371
- Bearer token validation
335372
- URL validation with SSRF protection
@@ -364,17 +401,40 @@ Contributions are welcome! Please feel free to submit a Pull Request.
364401

365402
## 📝 Recent Updates
366403

367-
### Version 1.1.0 (January 2025)
404+
### Version 1.2.0 (January 2025)
405+
406+
#### 🔒 Security Enhancements
407+
408+
- **URL Validation**: Comprehensive SSRF protection blocking private IPs, localhost, and dangerous ports
409+
- **Command Allowlisting**: Only approved commands (node, npx, python, etc.) can be executed
410+
- **Header Sanitization**: Protection against header injection attacks
411+
- **Lazy Authentication**: Improved Smithery compatibility with auth-free tool discovery
412+
413+
#### 🚀 Performance Improvements
414+
415+
- **Optimized Docker Builds**: Multi-stage builds for minimal container footprint
416+
- **Production Dependencies Only**: Test files and dev dependencies excluded from Docker images
417+
- **Resource Efficiency**: Designed for deployment in resource-constrained environments
418+
419+
#### 🔧 Technical Improvements
420+
421+
- Enhanced error handling in Streamable HTTP transport
422+
- Better session cleanup and memory management
423+
- Improved TypeScript types and code organization
424+
425+
### Version 1.1.0 (December 2024)
368426

369427
#### 🚀 New Features
428+
370429
- **Streamable HTTP Support**: Connect to downstream MCP servers using the modern Streamable HTTP transport
371430
- **HTTP Server Mode**: Run the proxy as an HTTP server for web-based access
372431
- **Flexible Session Management**: Choose between stateless or stateful modes
373432
- **Authentication Options**: Optional Bearer token authentication for HTTP endpoints
374433
- **Health Monitoring**: `/health` endpoint for service monitoring
375434

376435
#### 🔧 Technical Improvements
377-
- Updated MCP SDK to v1.13.0 for latest protocol support
436+
437+
- Updated MCP SDK to v1.13.1 for latest protocol support
378438
- Added Express.js integration for HTTP server functionality
379439
- Enhanced TypeScript types for better developer experience
380440

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pluggedin/pluggedin-mcp-proxy",
3-
"version": "1.1.0",
3+
"version": "1.2.0",
44
"description": "MCP Proxy Server that aggregates multiple MCP servers with support for STDIO, SSE, and Streamable HTTP transports.",
55
"scripts": {
66
"build": "tsc && shx chmod +x dist/*.js",

0 commit comments

Comments
 (0)