ws-mcp

MCP.Pizza Chef: nick1udwig

ws-mcp is an MCP client that wraps standard input/output MCP servers with a WebSocket interface, enabling real-time, bidirectional communication. It facilitates running multiple MCP servers concurrently, configurable via JSON, and is designed for integration with tools like kibitz. This client simplifies managing MCP servers over WebSocket connections, supporting dynamic configuration and streamlined server orchestration.

Use This MCP client To

Run multiple MCP servers concurrently with WebSocket communication Configure MCP server sets dynamically via JSON config files Integrate MCP stdio servers into WebSocket-based workflows Enable real-time bidirectional communication with MCP servers Use with kibitz for enhanced MCP client-server interactions

README

ws-mcp

Wrap MCP stdio servers with a WebSocket. For use with kibitz.

Quickstart

Prerequisites

Install uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

Configuration

The config file specifies which MCP servers to run. The default config (no --config or --command args provided) includes:

  • wcgw: For general system operations and file management
  • fetch: For making HTTP requests

To make a configuration file:

  1. Create your configuration file:
    cp sample.config.json config.json
  2. Modify config.json to add or remove servers based on your needs.
  3. Run with --config path/to/config.json to use the new config file.

Running ws-mcp

Basic usage with default config file (no --config or --command provided) and port:

uvx --refresh ws-mcp@latest

This will start all configured servers on the default port (10125).

To use a config file and port:

uvx --refresh ws-mcp@latest --config path/to/config --port 10125

Detailed Usage

# Example using fetch
uvx --refresh ws-mcp --command "uvx mcp-server-fetch" --port 3002

# Example using wcgw
## On macOS
uvx --refresh ws-mcp --command "uvx --from wcgw@latest --python 3.12 wcgw_mcp" --port 3001

## On Linux (or if you have issues on macOS with wcgw)
cd /tmp
git clone https://github.com/nick1udwig/wcgw.git
cd wcgw
git submodule update --init --recursive
git checkout hf/fix-wcgw-on-ubuntu
cd ..
uvx --refresh ws-mcp --command "uvx --from /tmp/wcgw --with /tmp/wcgw/src/mcp_wcgw --python 3.12 wcgw_mcp" --port 3001

# Example using Brave search
export BRAVE_API_KEY=YOUR_API_KEY_HERE
uvx --refresh ws-mcp --env BRAVE_API_KEY=$BRAVE_API_KEY --command "npx -y @modelcontextprotocol/server-brave-search" --port 3003

# Or, with a .env file:
uvx --refresh ws-mcp --env-file path/to/.env --command "npx -y @modelcontextprotocol/server-brave-search" --port 3003

# `--command` can be supplied multiple times!
#  Example serving multiple servers at once:
uvx --refresh ws-mcp --env-file path/to/.env --command "npx -y @modelcontextprotocol/server-brave-search" --command "uvx mcp-server-fetch" --port 3004

# Servers can also be specified in a `.json` file following [the standard MCP format](https://modelcontextprotocol.io/quickstart/user#2-add-the-filesystem-mcp-server)
uvx --refresh ws-mcp --env-file path/to/.env --config path/to/config.json --port 3005

ws-mcp FAQ

How do I configure which MCP servers ws-mcp runs?
You create or modify a JSON config file specifying the MCP servers to run, then launch ws-mcp with the --config option pointing to that file.
What prerequisites are needed to run ws-mcp?
You need to install the uv runtime environment, which can be installed via the provided curl command.
Can ws-mcp run MCP servers other than the default ones?
Yes, you can customize the config file to add or remove MCP servers as needed.
How does ws-mcp communicate with MCP servers?
It wraps MCP stdio servers with a WebSocket interface, enabling real-time communication over WebSocket connections.
Is ws-mcp compatible with other MCP tools?
Yes, it is designed to work with tools like kibitz and can integrate with various MCP stdio servers.
How do I start ws-mcp with the default configuration?
Run the command without --config or --command arguments, and it will use the default config file and port.
What MCP servers are included by default in ws-mcp?
The default config includes wcgw for system operations and file management, and fetch for HTTP requests.
Can ws-mcp be used with multiple LLM providers?
While ws-mcp itself is a client wrapper, it supports MCP servers that can interact with LLMs like OpenAI, Claude, and Gemini.