import gradio as gr def process(name: str, hidden_state: str, flag: bool, gallery_images: list = []): """ Process inputs and return a result. Args: name: A text input from user hidden_state: A value from gr.State (hidden from MCP) flag: A boolean checkbox gallery_images: Gallery images list Returns: str: Result showing all received values """ return f"name={name}, hidden_state={hidden_state}, flag={flag}, gallery={gallery_images}" with gr.Blocks() as demo: gr.Markdown("# Gradio MCP Bug: gr.State breaks parameter order") name_input = gr.Textbox(label="Name", value="test") hidden_state = gr.State(value="hidden_value") flag_input = gr.Checkbox(label="Flag", value=True) gallery = gr.Gallery(label="Images", value=[]) output = gr.Textbox(label="Result") btn = gr.Button("Process") btn.click( process, inputs=[name_input, hidden_state, flag_input, gallery], outputs=[output], api_visibility="public", ) if __name__ == "__main__": demo.launch(mcp_server=True, show_error=True)