chore(mcp): Add helpers to parse parameters (#2821)
Signed-off-by: Colin Walters <walters@verbum.org>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
#[allow(unused_imports)] // this is used in schema below
|
||||
use serde_json::json;
|
||||
use serde_json::{json, Value};
|
||||
use thiserror::Error;
|
||||
|
||||
#[non_exhaustive]
|
||||
@@ -35,3 +35,32 @@ pub enum PromptError {
|
||||
#[error("Prompt not found: {0}")]
|
||||
NotFound(String),
|
||||
}
|
||||
|
||||
/// Helper function to require a string, returning a ToolError
|
||||
pub fn require_str_parameter<'a>(
|
||||
v: &'a serde_json::Value,
|
||||
name: &str,
|
||||
) -> Result<&'a str, ToolError> {
|
||||
let v = v
|
||||
.get(name)
|
||||
.ok_or_else(|| ToolError::InvalidParameters(format!("The parameter {name} is required")))?;
|
||||
match v.as_str() {
|
||||
Some(r) => Ok(r),
|
||||
None => Err(ToolError::InvalidParameters(format!(
|
||||
"The parameter {name} must be a string"
|
||||
))),
|
||||
}
|
||||
}
|
||||
|
||||
/// Helper function to require a u64, returning a ToolError
|
||||
pub fn require_u64_parameter(v: &serde_json::Value, name: &str) -> Result<u64, ToolError> {
|
||||
let v = v
|
||||
.get(name)
|
||||
.ok_or_else(|| ToolError::InvalidParameters(format!("The parameter {name} is required")))?;
|
||||
match v.as_u64() {
|
||||
Some(r) => Ok(r),
|
||||
None => Err(ToolError::InvalidParameters(format!(
|
||||
"The parameter {name} must be a number"
|
||||
))),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user