ADMP-LS / client /README.md
jackkuo's picture
reinit repo
82bf89e

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_URL
  • ANTHROPIC_API_KEY, ANTHROPIC_BASE_URL
  • GOOGLE_API_KEY, GOOGLE_BASE_URL
  • AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
  • GROQ_API_KEY, GROQ_BASE_URL

Optional: servers_config.json (MCP server/services config). The app reads client/servers_config.json.

Notes:

  • .env-example.txt only 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: 8501
  • run.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 point
  • services/, utils/, apps/: business logic and UI
  • .streamlit/style.css: styling
  • servers_config.json: MCP/services configuration
  • icons/, static/, logs/: assets and logs

FAQ

  • If the port is busy, change --server.port.
  • If environment variables are missing, ensure .env is in client and keys are correct.