MCP Client Demo
by yonaka15
A demo implementation of a Model Context Protocol (MCP) client using Web Workers and Server-Sent Events (SSE). This project is currently a work in progress.
View on GitHub
Last updated: N/A
MCP Client Demo
Note: This project is currently a work in progress (WIP). Features and implementations may change significantly.
A demo implementation of a Model Context Protocol (MCP) client using Web Workers and Server-Sent Events (SSE).
Features
- Web Worker-based MCP client implementation
- Server-Sent Events (SSE) transport
- Interactive testing UI
- Type-safe implementation with TypeScript
- Built with Vite + React
Getting Started
Prerequisites
- Node.js 18.x or later
- An MCP-compatible server running on
localhost:3020
Installation
- Clone the repository
- Install dependencies:
npm install
Development
Start the development server:
npm run dev
Testing the Worker
- Open
test.html
in your browser - Click "Connect" to establish connection with the MCP server
- Use "List Tools" to see available tools
- Select a tool and provide input in JSON format
- Click "Execute Tool" to run the selected tool
Project Structure
src/
├── worker.ts # MCP client worker implementation
├── worker-test.ts # Worker test interface
├── types.ts # Type definitions
└── App.tsx # Main React application
Key Components
- worker.ts: Main Web Worker implementation of the MCP client
- worker-test.ts: Testing interface for the worker
- types.ts: Shared type definitions for worker commands and responses
Implementation Details
Worker Commands
The worker accepts the following commands:
connect
: Establish connection with MCP serverdisconnect
: Close the connectionlistTools
: Get list of available toolscallTool
: Execute a specific tool
Worker Responses
The worker sends responses in the following format:
type WorkerResponse =
| {
type: "status";
status: WorkerStatus;
}
| {
type: "result";
result: ListToolsResult | CallToolResult;
}
| {
type: "error";
error: string;
details?: Record<string, unknown>;
};
Development
Building
Build the project:
npm run build
Linting
Run ESLint:
npm run lint
Contributing
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a new Pull Request