mcp_context_server/
schema.rs1use jsonschema::validator_for;
2use serde_json::Value;
3
4#[derive(Debug, thiserror::Error)]
5pub enum SchemaValidationError {
6 #[error("Schema parse error: {0}")]
7 SchemaParse(#[from] serde_json::Error),
8 #[error("Schema compile error: {0}")]
9 SchemaCompile(String),
10 #[error("Instance validation failed")]
11 ValidationFailed,
12}
13
14pub fn validate_json(schema_str: &str, instance_str: &str) -> Result<(), SchemaValidationError> {
17 let schema_json: Value = serde_json::from_str(schema_str)?;
18 let instance_json: Value = serde_json::from_str(instance_str)?;
19
20 let validator = validator_for(&schema_json)
21 .map_err(|e| SchemaValidationError::SchemaCompile(e.to_string()))?;
22
23 if validator.is_valid(&instance_json) {
24 Ok(())
25 } else {
26 Err(SchemaValidationError::ValidationFailed)
27 }
28}