# Smolagents Chat Server Demo This is a simple web server that provides a chat interface for interacting with an AI code agent powered by `smolagents` and the Qwen2.5-Coder-32B-Instruct model, enhanced with MCP (Model Control Protocol) tools. ## Features - Web-based chat interface - AI code agent powered by Qwen2.5-Coder - Integration with MCP tools through MCPClient - Asynchronous request handling - Clean, responsive UI - Graceful shutdown handling ## Requirements - Python 3.8+ - Starlette - AnyIO - Smolagents with MCP support ## Installation 1. Install the required packages: ```bash pip install starlette anyio smolagents[mcp] uvicorn ``` 2. Optional: If you want to use a specific model, you may need additional dependencies. ## Usage 1. Run the server: ```bash uvicorn examples.server.main:app --reload ``` 2. Open your browser and navigate to `http://localhost:8000` 3. Interact with the AI code agent through the chat interface ## How It Works The server consists of two main routes: - `/` - Serves the HTML page with the chat interface - `/chat` - API endpoint that processes messages and returns responses The server integrates with MCP tools through the following components: 1. MCPClient Configuration: ```python mcp_server_parameters = { "url": "https://evalstate-hf-mcp-server.hf.space/mcp", "transport": "streamable-http", } mcp_client = MCPClient(server_parameters=mcp_server_parameters) ``` 2. CodeAgent with MCP Tools: ```python agent = CodeAgent( model=InferenceClientModel(model_id="Qwen/Qwen2.5-Coder-32B-Instruct"), tools=mcp_client.get_tools(), ) ``` When a user sends a message: 1. The message is sent to the `/chat` endpoint 2. The server runs the AI code agent in a separate thread 3. The agent processes the message using MCP tools 4. The agent's response is returned to the client and displayed in the chat The server also includes a shutdown handler that properly disconnects the MCP client when the server stops: ```python async def shutdown(): mcp_client.disconnect() ``` ## Customization You can modify the `CodeAgent` configuration by changing the model or MCP server parameters. For example: ```python # Custom MCP server mcp_server_parameters = { "url": "your-mcp-server-url", "transport": "your-transport-method", } # Custom agent configuration agent = CodeAgent( model=InferenceClientModel(model_id="your-preferred-model"), tools=mcp_client.get_tools(), ) ```