Skip to content

Commit bc79ea5

Browse files
committed
new gem version
1 parent 9a00dd5 commit bc79ea5

File tree

4 files changed

+54
-13
lines changed

4 files changed

+54
-13
lines changed

CHANGELOG.md

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Unreleased
1+
## [0.3.1] – 2025-06-25
22

33
### Added
44
* **Enhanced Structured Logging System**: Production-ready logging framework with comprehensive observability features
@@ -46,15 +46,16 @@
4646
- **Updated Main Documentation**: Enhanced README with security feature overview and quick start examples
4747
- **CLAUDE.md Integration**: Updated project documentation with security architecture details
4848

49-
### Changed
49+
### Fixed
50+
* Added missing runtime dependencies to gemspec for proper gem installation
51+
- Added `jwt` gem dependency (~> 2.7) for JWT authentication strategy
52+
- Added `rack` gem dependency (~> 3.0) for SSE transport
53+
- Fixed JWT exception handling for compatibility with jwt gem 2.7+
5054

51-
* **Code Quality Improvements**: Enhanced maintainability and consistency across the logging system
52-
* **Constants Refactoring**: Extracted magic numbers to named constants for better maintainability
53-
* Created `VectorMCP::Logging::Constants` module with self-documenting constant names
54-
* Replaced hardcoded values (5, 3, 1000, etc.) with meaningful names (`MAX_SERIALIZATION_DEPTH`, `DEFAULT_MAX_MESSAGE_LENGTH`)
55-
* Centralized configuration limits for JSON serialization, text formatting, and timestamp precision
56-
* **Enhanced Error Handling**: Improved JSON serialization fallback mechanisms with data sanitization
57-
* **Consistent Formatting**: Standardized width and truncation behavior across all formatters
55+
### Changed
56+
* Enhanced gemspec description for better gem discovery
57+
* Added CHANGELOG.md to packaged gem files
58+
* Improved gemspec metadata for RubyGems.org listing
5859

5960
* **Opt-In Security Design**: Security features are disabled by default for maximum compatibility
6061
* Existing servers continue working without modification
@@ -110,6 +111,42 @@
110111

111112
## [0.3.0] – 2025-06-20
112113

114+
### Added
115+
* **Comprehensive Input Schema Validation**: Two-layer validation system for enhanced security and developer experience
116+
- **Schema Validation**: Validates JSON Schema format during tool registration using `json-schema` gem
117+
- **Input Validation**: Validates user arguments against defined schemas during tool execution
118+
- Automatic validation for all tools with `input_schema` defined
119+
- Detailed error messages with specific validation failure details
120+
- Full backward compatibility - tools without schemas continue working unchanged
121+
- New `validate_schema_format!` method for registration-time validation
122+
- Renamed `validate_tool_arguments!` to `validate_input_arguments!` for clarity
123+
124+
* **Enhanced Documentation and Examples**
125+
- Comprehensive README section on automatic input validation with security benefits
126+
- New `examples/validation_demo.rb` showcasing both validation types
127+
- Complete `examples/README.md` with descriptions of all example files
128+
- Updated documentation emphasizing security best practices
129+
130+
### Changed
131+
* **Method Naming Improvements**: Clarified validation method names
132+
- `validate_tool_arguments!``validate_input_arguments!` (runtime validation)
133+
- Added `validate_schema_format!` (registration-time validation)
134+
135+
### Security
136+
* **Injection Attack Prevention**: Centralized validation prevents malformed input from reaching tool handlers
137+
* **Type Safety**: Ensures all arguments match expected JSON Schema types and constraints
138+
* **Early Error Detection**: Invalid schemas caught during development, not runtime
139+
140+
* **SSE Transport Implementation**: Complete HTTP/Server-Sent Events transport
141+
- New `VectorMCP::Transport::SSE` class with HTTP server capabilities
142+
- Puma-based HTTP server with concurrent request handling
143+
- Bi-directional communication: SSE for server-to-client, HTTP POST for client-to-server
144+
- Session management with unique session IDs and connection tracking
145+
- Support for web browsers and HTTP-based MCP clients
146+
- Configurable host, port, and path prefix options
147+
148+
## [0.3.0] – 2025-06-20
149+
113150
### Added
114151

115152
* **Comprehensive Input Schema Validation**: Two-layer validation system for enhanced security and developer experience

lib/vector_mcp/security/strategies/jwt_token.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def authenticate(request)
5151
authenticated_at: Time.now,
5252
jwt_headers: headers
5353
}
54-
rescue JWT::ExpiredSignature, JWT::InvalidIssuerError, JWT::InvalidAudienceError,
54+
rescue JWT::ExpiredSignature, JWT::InvalidIssuerError,
5555
JWT::DecodeError, StandardError
5656
false # Token validation failed
5757
end

lib/vector_mcp/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22

33
module VectorMCP
44
# The current version of the VectorMCP gem.
5-
VERSION = "0.3.0"
5+
VERSION = "0.3.1"
66
end

vector_mcp.gemspec

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
99
spec.email = ["[email protected]"]
1010

1111
spec.summary = "Ruby implementation of the Model Context Protocol (MCP)"
12-
spec.description = "Server-side tools for implementing the Model Context Protocol in Ruby applications"
12+
spec.description = "A Ruby gem implementing the Model Context Protocol (MCP) server-side specification. Provides a framework for creating MCP servers that expose tools, resources, prompts, and roots to LLM clients with comprehensive security features, structured logging, and production-ready capabilities."
1313
spec.homepage = "https://github.com/sergiobayona/vector_mcp"
1414
spec.license = "MIT"
1515
spec.required_ruby_version = ">= 3.1.0"
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
2020

2121
# Specify which files should be added to the gem when it is released.
2222
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23-
spec.files = Dir.glob("{lib,bin}/**/*") + %w[LICENSE.txt README.md]
23+
spec.files = Dir.glob("{lib,bin}/**/*") + %w[LICENSE.txt README.md CHANGELOG.md]
2424
spec.bindir = "bin"
2525
spec.executables = spec.files.grep(%r{\Abin/}) { |f| File.basename(f) }
2626
spec.require_paths = ["lib"]
@@ -31,6 +31,10 @@ Gem::Specification.new do |spec|
3131
spec.add_dependency "concurrent-ruby", "~> 1.2"
3232
spec.add_dependency "json-schema", "~> 3.0"
3333
spec.add_dependency "puma", "~> 6.4"
34+
spec.add_dependency "rack", "~> 3.0"
35+
36+
# Optional dependencies
37+
spec.add_dependency "jwt", "~> 2.7"
3438

3539
spec.metadata["rubygems_mfa_required"] = "true"
3640
end

0 commit comments

Comments
 (0)