How campusx-official/mcp-client works
This repository contains two small MCP chat clients: a Streamlit conversational app and an asynchronous command-line demo. Both discover tools from configured MCP servers, ask an OpenAI model whether to call them, execute requested tools, and use tool results for a final response. The Streamlit app additionally keeps and renders conversation history. Server implementations are external; their configured locations are embedded in the clients, and their internals are not present in the tree.
Main entry points: client2.py Streamlit chat · client1.py CLI demo
Components 8
Chat clients
- Streamlit chat
client2.py - CLI demo
client1.py
MCP tool access
- MCP client adapter
External services
- OpenAI model
- Math MCP server
- Expense MCP server
- Manim MCP server
Other components
- Chat user
Connections 22
- Chat user → Streamlit chat: sends chat
- Streamlit chat → MCP client adapter: discovers tools
- MCP client adapter → Math MCP server: lists tools
- MCP client adapter → Expense MCP server: lists tools
- MCP client adapter → Manim MCP server: lists tools
- MCP client adapter → Streamlit chat: returns tools
- Streamlit chat → OpenAI model: requests response
- OpenAI model → Streamlit chat: returns tool calls
- Streamlit chat → MCP client adapter: invokes tools
- MCP client adapter → Math MCP server: dispatches call
- MCP client adapter → Expense MCP server: dispatches call
- MCP client adapter → Manim MCP server: dispatches call
- MCP client adapter → Streamlit chat: returns results
- Streamlit chat → OpenAI model: submits tool results
- Chat user → CLI demo: starts demo
- CLI demo → MCP client adapter: discovers tools
- MCP client adapter → CLI demo: returns tools
- CLI demo → OpenAI model: requests tool choice
- OpenAI model → CLI demo: returns tool calls
- CLI demo → MCP client adapter: invokes tools
- MCP client adapter → CLI demo: returns results
- CLI demo → OpenAI model: submits tool results