About MCP-ChatBot
MCP-ChatBot is a containerized weather chatbot example for people exploring LLM applications with MCP. It pairs a Streamlit interface with a FastMCP weather service and GPT-4o, and is structured to add more servers.
Key features
- 01Streamlit chat interface
- 02Natural-language weather queries
- 03WeatherAPI data retrieval
- 04Separate client and server containers
- 05Extensible MCP server setup
Use cases
- 01Ask for current weather by city
- 02Explore a containerized MCP chatbot
- 03Add service backends to the example
MCP support
The FastMCP server exposes weather retrieval to the Streamlit client over MCP. The example is designed to accommodate additional MCP servers.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEMCP-ChatBot
A versatile chatbot application that uses MCP (Modular Capability Protocol) to interact with multiple service backends.
Overview
MCP-ChatBot is a containerized application that demonstrates the use of Modular Capability Protocol (MCP) to enable LLM interactions with external services. This implementation includes a weather service backend and a Streamlit-based frontend that allows users to query for weather information through natural language.
Features
- Containerized Architecture: Separate containers for the MCP server and client application
- Weather Service Integration: Real-time weather data using WeatherAPI
- Streamlit UI: Clean, responsive user interface for interacting with the chatbot
- Extensible Design: Ready to add more MCP servers for additional capabilities
- GPT-4o Integration: Powered by OpenAI's GPT-4o model for natural language understanding
Architecture
The application consists of two main components:
- MCP Server: A FastMCP-based service that handles weather data retrieval
- Streamlit Client: A web-based UI for interacting with the chatbot
Getting Started
Prerequisites
- Docker and Docker Compose
- WeatherAPI Key (sign up at WeatherAPI)
- OpenAI API Key (sign up at OpenAI)
Installation
- Clone the repository:
git clone https://github.com/yourusername/MCP-ChatBot.git
cd MCP-ChatBot
- Create an
.envfile based on the example:
cp .env.example .env
- Edit the
.envfile and add your API keys:
PYTHONUNBUFFERED=1
OPENAI_API_KEY=your_openai_api_key_here
WEATHER_API_KEY=your_weather_api_key_here
- Launch the application using Docker Compose:
docker-compose up --build
- Access the Streamlit UI at:
http://localhost:8501
Usage
Once the application is running, you can interact with the chatbot through the Streamlit interface:
- Type natural language queries about weather in the text input
- Examples:
- "What's the weather like in New York?"
- "How hot is it in Tokyo right now?"
- "Tell me about the weather in London"
Extending the Application
Adding New MCP Servers
- Create a new server file in the
serversdirectory - Add the new service to the
docker-compose.ymlfile - Update the client.py to include the new server in the agent configuration
Example of adding a new server in client.py:
server_1 = MCPServerHTTP(url="http://mcp_server:8001/sse")
server_2 = MCPServerHTTP(url="http://new_server:8002/sse") # New server
return Agent("openai:gpt-4o", mcp_servers=[server_1, server_2])
Development
Project Structure
MCP-ChatBot/
├── .env.example # Example environment variables
├── .gitignore # Git ignore file
├── client.py # Streamlit client application
├── docker-compose.yml # Docker Compose configuration
├── Dockerfile.client # Dockerfile for Streamlit client
├── Dockerfile.server # Dockerfile for MCP server
├── LICENSE # MIT license
├── README.md # Project documentation
└── servers/ # MCP server implementations
└── server.py # Weather service implementation
Technology Stack
- FastMCP: Framework for creating MCP servers
- Streamlit: Web framework for the UI
- Pydantic-AI: Agent system for LLM interactions
- Docker: Containerization platform
- OpenAI GPT-4o: LLM for natural language processing
Troubleshooting
Common Issues
-
Connection Failed: Ensure that all services are up and running. The client has a retry mechanism, but if it fails, restart the application.
-
API Key Errors: Verify that you've added valid API keys to the
.envfile. -
Docker Network Issues: If containers can't communicate, check the Docker network configuration and ensure the service names match in the code.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- FastMCP for the MCP server implementation
- Streamlit for the frontend framework
- WeatherAPI for weather data
Created by Murali Anand © 2025
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.