19namespace mcp::protocol {
68 static_cast<int>(ErrorCode::InvalidRequest), std::move(message), {}};
74 case LoggingLevel::Debug:
76 case LoggingLevel::Info:
78 case LoggingLevel::Notice:
80 case LoggingLevel::Warning:
82 case LoggingLevel::Error:
84 case LoggingLevel::Critical:
86 case LoggingLevel::Alert:
88 case LoggingLevel::Emergency:
97 const std::string& value) {
98 if (value ==
"debug") {
99 return LoggingLevel::Debug;
101 if (value ==
"info") {
102 return LoggingLevel::Info;
104 if (value ==
"notice") {
105 return LoggingLevel::Notice;
107 if (value ==
"warning") {
108 return LoggingLevel::Warning;
110 if (value ==
"error") {
111 return LoggingLevel::Error;
113 if (value ==
"critical") {
114 return LoggingLevel::Critical;
116 if (value ==
"alert") {
117 return LoggingLevel::Alert;
119 if (value ==
"emergency") {
120 return LoggingLevel::Emergency;
129 if (params.
meta.has_value()) {
130 json[
"_meta"] = *params.
meta;
140 if (!json.is_object()) {
141 return mcp::core::unexpected(
144 if (!json.contains(
"level") || !json.at(
"level").is_string()) {
145 return mcp::core::unexpected(
150 if (!level.has_value()) {
151 return mcp::core::unexpected(
155 params.
level = *level;
156 if (json.contains(
"_meta")) {
157 if (!json.at(
"_meta").is_object()) {
158 return mcp::core::unexpected(
161 params.
meta = json.at(
"_meta");
170 Json json = Json::object();
172 if (params.
logger.has_value()) {
173 json[
"logger"] = *params.
logger;
175 json[
"data"] = params.
data;
176 if (params.
meta.has_value()) {
177 json[
"_meta"] = *params.
meta;
187 if (!json.is_object()) {
188 return mcp::core::unexpected(
191 if (!json.contains(
"level") || !json.at(
"level").is_string()) {
192 return mcp::core::unexpected(
195 if (!json.contains(
"data")) {
196 return mcp::core::unexpected(
201 if (!level.has_value()) {
202 return mcp::core::unexpected(
207 params.
level = *level;
208 if (json.contains(
"logger")) {
209 if (!json.at(
"logger").is_string()) {
210 return mcp::core::unexpected(
213 params.
logger = json.at(
"logger").get<std::string>();
215 params.
data = json.at(
"data");
216 if (json.contains(
"_meta")) {
217 if (!json.at(
"_meta").is_object()) {
218 return mcp::core::unexpected(
221 params.
meta = json.at(
"_meta");
LoggingLevel
MCP logging severity levels.
Definition logging.hpp:22
@ Warning
Warning condition.
@ Notice
Normal but significant condition.
@ Critical
Critical condition.
@ Info
Informational messages.
@ Emergency
System is unusable.
@ Debug
Detailed diagnostic messages.
@ Alert
Immediate action should be taken.
core::Result< LoggingSetLevelParams > logging_set_level_params_from_json(const Json &json)
Parses logging/setLevel params.
Definition logging.hpp:138
core::Error logging_json_error(std::string message)
Builds an InvalidRequest error for logging JSON validation failures.
Definition logging.hpp:66
core::Result< LoggingMessageNotificationParams > logging_message_notification_params_from_json(const Json &json)
Parses logging message notification params.
Definition logging.hpp:186
Json logging_message_notification_params_to_json(const LoggingMessageNotificationParams ¶ms)
Serializes logging message notification params.
Definition logging.hpp:168
std::string logging_level_to_string(LoggingLevel level)
Converts a logging level to its MCP string value.
Definition logging.hpp:72
Json logging_set_level_params_to_json(const LoggingSetLevelParams ¶ms)
Serializes logging/setLevel params.
Definition logging.hpp:126
std::optional< LoggingLevel > logging_level_from_string(const std::string &value)
Parses a logging level string.
Definition logging.hpp:96
Shared JSON, JSON-RPC, error, cancellation, and progress model types.
void append_json_extensions(Json &json, const Json &extensions)
Flattens extension members into a JSON object without overwriting typed fields.
Definition types.hpp:358
nlohmann::json Json
JSON value type used by all protocol DTOs.
Definition types.hpp:28
Json collect_json_extensions(const Json &json, std::initializer_list< std::string_view > known_keys)
Collects unknown object members so typed DTOs can preserve future protocol fields and vendor extensio...
Definition types.hpp:320
Shared result and error primitives used by the public cxxmcp SDK.
tl::expected< T, Error > Result
Alias for the SDK result type.
Definition result.hpp:64
Structured error returned by fallible SDK operations.
Definition result.hpp:35
Parameters for notifications/message.
Definition logging.hpp:52
std::optional< std::string > logger
Optional logger name or category.
Definition logging.hpp:56
std::optional< Json > meta
Optional _meta extension object preserved on the wire.
Definition logging.hpp:60
LoggingLevel level
Severity of this log message.
Definition logging.hpp:54
Json extensions
Unknown JSON members preserved for forward-compatible round trips.
Definition logging.hpp:62
Json data
Structured log payload.
Definition logging.hpp:58
Parameters for logging/setLevel.
Definition logging.hpp:42
Json extensions
Unknown JSON members preserved for forward-compatible round trips.
Definition logging.hpp:48
LoggingLevel level
Minimum level the receiver should emit after the request.
Definition logging.hpp:44
std::optional< Json > meta
Optional _meta extension object preserved on the wire.
Definition logging.hpp:46