- TypeScript 99.1%
- CSS 0.4%
- JavaScript 0.3%
- HTML 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
## Problem After page refresh, the model selector would be empty even though the authentication provider was restored and models were loaded successfully. Users had to manually click "reload models" to populate the selector. ## Root Cause The context state wasn't being properly updated after models were loaded during provider restoration. The provider had the models, but React components weren't re-rendering to show them. ## Solution - **Added forced re-render**: Added extra `setAuthStateVersion()` call after model loading to trigger React context update - **Auto-load models on restore**: Provider restoration now automatically loads models and restores saved model selection - **Improved error handling**: Better error handling during model restoration ## Technical Details - Modified `restoreProviderWithModels()` to force context re-render - Ensured model loading happens immediately when provider is restored - Maintained existing model persistence functionality - Cleaned up debugging logs ## User Experience - ✅ **Seamless model selection**: Model selector is populated immediately after refresh - ✅ **Persistent choice**: Previously selected model is automatically restored - ✅ **No manual intervention**: No need to click "reload models" button 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
| docs | ||
| src | ||
| .eslintrc.cjs | ||
| .gitignore | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| README.md | ||
| tailwind.config.js | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Example Remote MCP Client
A React TypeScript application for connecting to multiple MCP (Model Context Protocol) servers and providing a conversational interface with tool calling capabilities.
Features
- 🔗 Multi-server MCP connections (HTTP/SSE transports)
- 🤖 Inference provider abstraction (starting with OpenRouter)
- 💬 Conversational interface with agent loops
- 🛠️ Real-time tool call visualization
- 🔍 MCP debugging and message tracing
- 📱 Responsive UI with left sidebar and chat interface
Development
Prerequisites
- Node.js (v18 or higher)
- npm, yarn, or pnpm
Getting Started
-
Install dependencies:
npm install -
Start the development server:
npm run dev -
Open http://localhost:3000 in your browser
Available Scripts
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLintnpm run test- Run testsnpm run test:ui- Run tests with UI
Architecture
The application is built with a modular architecture using React hooks and providers:
- InferenceProvider - Abstraction for LLM inference (OpenRouter, etc.)
- MCPProvider - Multi-server MCP connection management
- AgentLoop - Tool calling and conversation flow
- UI Components - Modular, reusable interface components
Technology Stack
- React 18 with TypeScript
- Vite for build tooling
- Tailwind CSS for styling
- MCP TypeScript SDK for protocol implementation
- Vitest for testing
Project Status
This is an active development project serving as both:
- A public example implementation of MCP client features
- A prototyping testbed for MCP protocol changes