Work

Qmcp

A chat client that speaks the Model Context Protocol, so the model and the tools it can reach are separate choices.

C Sarath Babu's Qmcp, a cross-platform AI chat client. The logo

I built a chat client that implements the Model Context Protocol.

One interface, any model behind it. GPT, Claude, DeepSeek, or something running on your own machine through Ollama. Desktop and mobile, from one Flutter codebase.

Why the protocol matters

Every chat app is welded to its model.

The app knows how to talk to one provider, and the tools it can reach are whatever the person who wrote it decided to build in. Change the model and you change apps.

MCP separates those. The client speaks one protocol, servers expose tools and context over it, and the model on the other end is a configuration value.

Qmcpone interfaceMCPthe protocolCloud modelsGPT, Claude, DeepSeekLocal modelsOllama
The client does not know or care which model is answering

That means the conversation and the context outlive the choice of model, which is the opposite of how every provider would prefer it.

One codebase, five platforms

Flutter, so macOS, Windows, Linux, iOS and Android come from the same source.

That was the point of picking it. A chat client is mostly a list, a text field and a settings screen. Writing that five times to get the same result is work without a reason.

git clone https://github.com/qubasehq/Qmcp
cd Qmcp
flutter pub get
flutter run -d macos      # or windows, linux, or a device id

Local models on a phone

The part I did not expect to work: Ollama runs inside Termux on Android.

So the model answering you can be a file on the same phone, with nothing leaving it and no API key anywhere. Getting there involves a repository you have to add by hand and a developer setting that has to be turned off, which is enough steps that it needed writing down properly.

What is next

An MCP server marketplace, so finding and installing servers is not a manual job. Document processing for retrieval. The usual interface work.

tl;dr

One chat client. Any model, cloud or local. The protocol keeps them separate.

Source on GitHub