- InitializeRequest
- PingRequest
- CompleteRequest
- SetLevelRequest
- CallToolRequest
- ListToolsRequest
- GetPromptRequest
- ListPromptsRequest
- ReadResourceRequest
- ListResourcesRequest
- ListResourceTemplatesRequest
- SubscribeRequest
- UnsubscribeRequest
- ListRootsRequest
- CreateMessageRequest
- ElicitRequest
- PaginatedRequest (base type)
- jsonrpc::Request (base type)
- InitializeResult
- CompleteResult
- CallToolResult
- ListToolsResult
- GetPromptResult
- ListPromptsResult
- ReadResourceResult
- ListResourcesResult
- ListResourceTemplatesResult
- ListRootsResult
- CreateMessageResult
- ElicitResult
- EmptyResult
- PaginatedResult (base type)
- jsonrpc::Response
- jsonrpc::ResponseResult
- InitializedNotification
- CancelledNotification
- ProgressNotification
- RootsListChangedNotification
- LoggingMessageNotification
- ResourceUpdatedNotification
- ResourceListChangedNotification
- ToolListChangedNotification
- PromptListChangedNotification
- jsonrpc::Notification (base type)
- TextContent
- ImageContent
- AudioContent
- ResourceContent
- ContentBlock (variant)
- ExtendedContentBlock (variant with ResourceLink, EmbeddedResource)
- ResourceLink (handled in ExtendedContentBlock)
- EmbeddedResource (handled in ExtendedContentBlock)
- Resource
- ResourceTemplate
- ResourceContents (base)
- TextResourceContents
- BlobResourceContents
- Root
- Tool
- ToolParameter (handled within Tool)
- ToolAnnotations
- Prompt
- PromptArgument (handled within Prompt)
- PromptMessage
- PromptReference
- Message
- SamplingMessage
- ModelPreferences
- ModelHint
- SamplingParams
- Error
- ErrorData (variant)
- ResourceTemplateReference
- PromptReference
- Annotations
- ToolAnnotations
- BaseMetadata
- ServerCapabilities
- ClientCapabilities
- RootsCapability
- ResourcesCapability
- PromptsCapability
- EmptyCapability
- Implementation (ServerInfo/ClientInfo)
- RequestId (variant<string, int>)
- ProgressToken (same as RequestId)
- Cursor (string alias)
- Metadata (map<string, MetadataValue>)
- Role (enum)
- LoggingLevel (enum)
- StringSchema (handled within ElicitRequest)
- NumberSchema (handled within ElicitRequest)
- BooleanSchema (handled within ElicitRequest)
- EnumSchema (handled within ElicitRequest)
- PrimitiveSchemaDefinition (variant, handled within ElicitRequest)
Total Coverage: 100%
All MCP types defined in the types.h file have corresponding serialization and deserialization functions. The implementation uses:
- Template functions for common patterns (vectors, optionals)
- Variant pattern matching for discriminated unions
- Proper error handling with JsonException
- Enum string conversions
- Support for nested and complex types