Spaces:
Sleeping
Sleeping
import gradio as gr | |
import os | |
from smolagents import InferenceClientModel, CodeAgent, MCPClient | |
# Configuration | |
MCP_SERVER_URL = "https://ashokdll-mcp-sentiment.hf.space/gradio_api/mcp/sse" # Replace with your actual URL | |
mcp_client = None | |
agent = None | |
def initialize_agent(): | |
"""Initialize the MCP client and agent""" | |
global mcp_client, agent | |
try: | |
# Connect to your MCP Server | |
mcp_client = MCPClient({"url": MCP_SERVER_URL}) | |
tools = mcp_client.get_tools() | |
# Debug: Print available tools | |
print("Available tools:") | |
for tool in tools: | |
print(f"- {tool.name}: {tool.description}") | |
# Create the model with HF token | |
model = InferenceClientModel(token=os.getenv("HF_TOKEN")) | |
# Create the agent with tools | |
agent = CodeAgent(tools=[*tools], model=model) | |
return True, "Agent initialized successfully" | |
except Exception as e: | |
print(f"Error initializing agent: {e}") | |
return False, str(e) | |
def chat_function(message, history): | |
"""Handle chat messages""" | |
global agent | |
# Initialize agent if not already done | |
if agent is None: | |
success, error_msg = initialize_agent() | |
if not success: | |
return f"β Error connecting to MCP server: {error_msg}\n\nPlease check:\n1. Your MCP server URL is correct\n2. Your sentiment analysis space is running\n3. MCP server is enabled in your sentiment analysis app" | |
try: | |
# Run the agent with the user's message | |
response = agent.run(message) | |
return str(response) | |
except Exception as e: | |
return f"β Error running agent: {str(e)}" | |
def cleanup(): | |
"""Cleanup function to disconnect MCP client""" | |
global mcp_client | |
if mcp_client: | |
try: | |
mcp_client.disconnect() | |
except: | |
pass | |
# Create the Gradio interface | |
demo = gr.ChatInterface( | |
fn=chat_function, | |
type="messages", | |
examples=[ | |
"Analyze the sentiment of: 'I absolutely love this new product!'", | |
"What's the sentiment of: 'This is terrible and I hate it'", | |
"Check sentiment: 'The weather is okay today'", | |
"Perform sentiment analysis on: 'Python programming is amazing!'" | |
], | |
title="π€ Sentiment Analysis Agent with MCP", | |
description="This agent connects to your sentiment analysis MCP server and can analyze text sentiment using natural language commands.", | |
) | |
# Launch the interface | |
if __name__ == "__main__": | |
try: | |
demo.launch() | |
finally: | |
cleanup() |