Expand description
Response transformers for modifying tool call responses.
This module provides the ResponseTransformer trait that allows users to modify/filter
tool call responses before they are returned to the MCP client (LLM). Common use cases include:
- Removing irrelevant fields to reduce token count
- Removing null value fields
- Making responses more suitable for LLM consumption
§Example
use rmcp_openapi::ResponseTransformer;
use serde_json::Value;
/// Transformer that removes null fields from responses
struct RemoveNulls;
impl ResponseTransformer for RemoveNulls {
fn transform_response(&self, response: Value) -> Value {
remove_nulls(response)
}
fn transform_schema(&self, schema: Value) -> Value {
// Mark all fields as optional since they may be removed
mark_fields_optional(schema)
}
}
fn remove_nulls(value: Value) -> Value {
match value {
Value::Object(map) => {
let filtered: serde_json::Map<String, Value> = map
.into_iter()
.filter(|(_, v)| !v.is_null())
.map(|(k, v)| (k, remove_nulls(v)))
.collect();
Value::Object(filtered)
}
Value::Array(arr) => {
Value::Array(arr.into_iter().map(remove_nulls).collect())
}
other => other,
}
}
fn mark_fields_optional(schema: Value) -> Value {
// Implementation would remove required fields from schema
schema
}Traits§
- Response
Transformer - Transforms tool responses and their corresponding schemas.