Is a MCP server exist for Incus

Hello there,

Maybe a silly question but I was wondering if it exists a MCP server for incus ? I’ve seen it exist an API and I’d love to connect a LLM to this.

If the subject has already be treated, sorry for redundancy but I didn’t catch any info so far.

Best Regards,

PS: Incus is an amazing tool, I love it. I will use it as a daily (k8s, CI/CD, …) for personal and professional stuff

Hi Frédéric.

I have not heard of one. It is an interesting idea.

You can get everything from Incus as JSON using the CLI tools. That might be enough to connect an LLM or to build a simple MCP interface. If you decide to build a MCP service then Go should work pretty well. Incus is written in Go.

Hey @jarrodu ,

Thanks for the comment, I will definitely check that. I’m not really familiar with Go but I guess that worst a try.\

I didn’t yet really realized that I just could use directly the cli tool directly with a LLM. But you right, that’s so simple as that. I will try with Claude code. Great tips :wink:

It’s freaking thinking we can nowdays do such things using LLM …

▎ Thanks Jarrod — agreed, Go is the natural fit here since it can use Incus’s own github.com/lxc/incus/client SDK directly instead of shelling out to the CLI and parsing JSON.

▎ I’m going to start on a minimal MCP server for Incus. Planned first-pass tool surface (read-heavy, safe-by-default):

▎ - list_instances, instance_info, instance_state
▎ - start_instance / stop_instance / restart_instance (explicit, no bulk/destructive ops in v1)
▎ - list_projects, list_networks, list_storage_pools
▎ - exec_in_instance (opt-in, since this is the one genuinely sensitive capability)

▎ Deliberately leaving out instance creation/deletion and cluster-admin operations for a first pass — those need more thought around confirmation/safety before exposing them to an LLM-driven client. Will follow up here once there’s something runnable to look at.

First working version is up: GitHub - fredmj/incus-mcp-server: A Model Context Protocol server for Incus · GitHub

Matches what I outlined above:

- list_instances

- instance_info

- instance_state

- list_projects

- list_networks

- list_storage_pools always on, start_instance

- stop_instance

- restart_instance

- exec_in_instance gated behind an explicit --enable-write flag (off by default).

Built on the official Go SDKs on both sides (github.com/lxc/incus/v6 and GitHub - modelcontextprotocol/go-sdk: The official Go SDK for Model Context Protocol servers and clients. Maintained in collaboration with Google. · GitHub ), and reuses the incus CLI’s own config file so there’s no separate credential setup if incus list already works for you.

Tested against a real cluster, not just unit tests - happy to hear about rough edges if anyone tries it.

I experimentally vibe coded one, and it was ‘VERY’ secure for lab products, but a bit hard to use. It did do things, but I REALLY don’t trust ‘self hosted’ models on my incus infra! The fronteir models mostly don’t mess it up, but I would be VERY hesitant to use one on prod!