fix: is_error is optional per MCP schema for CallToolResult (#675)

This commit is contained in:
Kalvin C
2025-01-21 15:30:54 -08:00
committed by GitHub
parent a5fad45603
commit bc6fd1a6e4
4 changed files with 6 additions and 5 deletions
+1 -1
View File
@@ -687,8 +687,8 @@ mod tests {
use super::*;
use lazy_static::lazy_static;
use serde_json::json;
use std::fs;
use std::sync::Mutex;
use std::{env, fs};
use tempfile::TempDir;
use tokio::sync::OnceCell;
+1 -1
View File
@@ -584,7 +584,7 @@ mod tests {
match name {
"tool" | "test__tool" => Ok(CallToolResult {
content: vec![],
is_error: false,
is_error: None,
}),
_ => Err(Error::NotInitialized),
}
+2 -1
View File
@@ -218,7 +218,8 @@ pub struct ListToolsResult {
#[serde(rename_all = "camelCase")]
pub struct CallToolResult {
pub content: Vec<Content>,
pub is_error: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_error: Option<bool>,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
+2 -2
View File
@@ -179,11 +179,11 @@ pub trait Router: Send + Sync + 'static {
let result = match self.call_tool(name, arguments).await {
Ok(result) => CallToolResult {
content: result,
is_error: false,
is_error: None,
},
Err(err) => CallToolResult {
content: vec![Content::text(err.to_string())],
is_error: true,
is_error: Some(true),
},
};