from mcp.server.fastmcp import FastMCP from gradio_client import Client import sys import io import json mcp = FastMCP("gradio-spaces") clients = {} def get_client(space_id: str) -> Client: """Get or create a Gradio client for the specified space.""" if space_id not in clients: clients[space_id] = Client(space_id) return clients[space_id] @mcp.tool() async def generate_image(prompt: str, space_id: str = "ysharma/SanaSprint") -> str: """Generate an image using Flux. Args: prompt: Text prompt describing the image to generate space_id: HuggingFace Space ID to use """ client = get_client(space_id) result = client.predict( prompt=prompt, model_size="1.6B", seed=0, randomize_seed=True, width=1024, height=1024, guidance_scale=4.5, num_inference_steps=2, api_name="/infer" ) return result @mcp.tool() async def run_dia_tts(prompt: str, space_id: str = "ysharma/Dia-1.6B") -> str: """Text-to-Speech Synthesis. Args: prompt: Text prompt describing the conversation between speakers S1, S2 space_id: HuggingFace Space ID to use """ client = get_client(space_id) result = client.predict( text_input=f"""{prompt}""", audio_prompt_input=None, max_new_tokens=3072, cfg_scale=3, temperature=1.3, top_p=0.95, cfg_filter_top_k=30, speed_factor=0.94, api_name="/generate_audio" ) return result if __name__ == "__main__": import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') mcp.run(transport='stdio')