Skip to main content

Module transformer

Module transformer 

Source
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§

ResponseTransformer
Transforms tool responses and their corresponding schemas.