MCP Playground (Client)
A Streamlit-based playground UI for multiple models and providers.
Dependencies
- Python 3.11
- See
requirements.txt(key libs:streamlit,langchain,langgraph,boto3,python-dotenv, etc.)
Environment Variables
Create a .env file under client (use .env-example.txt as a reference). Common keys:
OPENAI_API_KEY,OPENAI_BASE_URLANTHROPIC_API_KEY,ANTHROPIC_BASE_URLGOOGLE_API_KEY,GOOGLE_BASE_URLAWS_REGION,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYGROQ_API_KEY,GROQ_BASE_URL
Optional: servers_config.json (MCP server/services config). The app reads client/servers_config.json.
Notes:
.env-example.txtonly shows OpenAI keys as a sample; add other provider keys as needed.- Bedrock (AWS) requires valid AWS credentials and region.
Run Locally
From the client directory:
# 1) Create and activate a virtualenv (example: venv)
python3.11 -m venv .venv
source .venv/bin/activate
# 2) Install dependencies
pip install --upgrade pip
pip install -r requirements.txt
# 3) Start (pick one)
streamlit run app.py --server.port=8501 --server.address=0.0.0.0
# or use the script (port 8502)
chmod +x run.sh
./run.sh
Default ports:
Dockerfile: 8501run.sh: 8502
Logs:
- Printed to console and saved under
logs/(handled by the app’s logging system).
Tip: You can override ports using Streamlit flags or environment variables, e.g. STREAMLIT_SERVER_PORT and STREAMLIT_SERVER_ADDRESS (the run.sh script sets these before starting).
Run with Docker
From the client directory:
# Build image (example tag)
docker build -t mcp-playground-client:latest .
# Run container (map 8501)
docker run --rm -it \
-p 8501:8501 \
--env-file .env \
mcp-playground-client:latest
The container starts with:
streamlit run app.py --server.port=8501 --server.address=0.0.0.0
Directory Overview (partial)
app.py: entry pointservices/,utils/,apps/: business logic and UI.streamlit/style.css: stylingservers_config.json: MCP/services configurationicons/,static/,logs/: assets and logs
FAQ
- If the port is busy, change
--server.port. - If environment variables are missing, ensure
.envis inclientand keys are correct.