solidmcp 0.4.0

A high-level Rust toolkit for building Model Context Protocol (MCP) servers with type safety and minimal boilerplate. Supports tools, resources, and prompts with automatic JSON schema generation.
Documentation
# Fix 2: Session Re-initialization Issues

## Problem

The MCP server was rejecting re-initialization attempts with "Already initialized" error. This causes issues for:
- HTTP clients that may reconnect
- Clients like Cursor that create multiple connections
- Testing scenarios requiring clean state

## Evidence

1. **Test failure**: Re-initialization was returning error instead of success
2. **Client behavior**: Cursor and other MCP clients expect to be able to re-initialize
3. **Code analysis**: Protocol handler was permanently blocking re-initialization

## Solution

### Changes Made

1. **Protocol handler reset** (src/protocol_impl.rs:172-180):
   ```rust
   if self.initialized {
       info!("⚠️  [INIT] Already initialized! Allowing re-initialization");
       // Reset state for clean re-initialization
       self.initialized = false;
       self.client_info = None;
       self.protocol_version = None;
       info!("🔄 [INIT] State reset for re-initialization");
   }
   ```

2. **Session handler refresh** (src/shared.rs:97-106):
   ```rust
   if protocol_handler.initialized {
       // Create a fresh protocol handler to ensure clean state
       *protocol_handler = McpProtocolHandlerImpl::new();
       debug!("Created fresh protocol handler for session {} re-initialization", session_key);
   }
   ```

### Test Coverage

Created comprehensive tests in `tests/session_reinitialization_test.rs`:
- `test_session_reinitialize_clears_state`: Verifies re-init works and clears state
- `test_concurrent_session_isolation`: Ensures sessions don't interfere
- `test_uninitialized_session_rejection`: Confirms uninitialized sessions are rejected

## Why This Approach Works

1. **Clean State**: Complete reset ensures no lingering state
2. **Protocol Compliance**: Allows version renegotiation
3. **Client Compatibility**: Supports reconnecting clients
4. **Session Isolation**: Each session maintains independent state

## Impact

- Fixes Cursor reconnection issues
- Enables proper session management
- Improves testing capabilities
- Maintains security through session isolation