ElectrodeYT/clickable-ut-mcp-server
If you are the rightful owner of clickable-ut-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
This is a Clickable MCP Server designed for AI Agent interaction, providing tools for building, running, and interacting with applications on devices.
Clickable MCP Server
Disclaimers
I made while during a Uni lecture which I technically didn't have to attend. While this works on my machine(TM), the code is ugly, and not all code paths (namely the X11 as host display server) are tested. Well, me saying I made it is a huge stretch, given that I basically just told a LLM to make it while I watched the lecture, but still. I looked a bit at the code to make sure it did not generate any total BS, but I am not super good at Typescript, so I don't know if its following any TS-specific best-practices, but other than that (and general AI-code-ugliness, which I am too lazy to fix for this half-sarcastic project), it's probably fine.
I will say here, please don't use this to make low-effort AI slop applications for Ubuntu Touch. I don't personally mind people using AI as assistants for programming, or most other things for that matter, but there is a difference between a assistant and a black box that I tell what I want and have it do everything for me. In that sense, I genuinely don't know how useful this MCP server even can be, but again, I made this as a boredom project.
I'll use this disclaimer to also once again direct attention to the enviromental effects of AI. I'm not going to write here and say you shouldn't use it given I just made a utility for it, but please do remember that all pieces of code, all uses of a search engine, all uses of AI, well, all uses of basically anything on this world use some kind of resource, whether it is energy, or water, or other related things. This is just how the world works, and we should take care of this world, to ensure that we don't run out of the resources we need to do things.
Installation
This is a normal node.js + Typescript MCP server, and is as such installed as any other MCP server. It uses STDIO for communication. A sample config is provided under claude_desktop_config.example.json. Despite its name, I haven't tested it with Claude Desktop. I have, however, tested it with both Kilo Code and Copilot.
This MCP server works far better with Copilot than Kilo Code. I believe this has to do with how Kilo Code launches MCP servers (pretty sure it strips some enviroment variables and maybe does other sandboxing); I was too lazy to debug all of this, but the TL;DR is that opening the Xwayland session does not work. On Copilot, it works just fine.
Usage
It's a MCP server that connects to a AI Agent. Just tell the Agent what to do :^)
In all seriousness, this provides tools for building, running on device, taking logs from the device, things like that. It also provides tools for running the desktop application and interacting with it, including taking screenshots. On Wayland, this is done by running a rootful Xwayland server, as GUI automation on Wayland isn't exactly as easy as on Xorg. This also gets around some issues when running fractional scaling on Wayland (which messes with the few tools that do exist for Wayland input automation).
There is a script to check the system enviroment for missing packages and the like. In short, however, you need:
- X.org / Xwayland
- xwd / netpbm tools
- xdpyinfo / xdotool
- If using Xwayland, the MCP server will start fluxbox inside the session if available
- I did this because it looks nicer, gives window decorations to the running application, and allows you to open other things in it if needed
It uses a random X display ID between 100 and 200 for the Xwayland instance.