# mcpo

A simple MCP-to-OpenAPI proxy server.

View the [*synix* NixOS module on Forgejo](https://git.sid.ovh/sid/synix/tree/master/modules/nixos/mcpo).

## References

- [GitHub](https://github.com/open-webui/mcpo)

## Configuration

You have to provide a package, for example from [synix](https://git.sid.ovh/sid/synix/tree/master/pkgs/mcpo/default.nix).

Setting `mcpServers` is required. The following example runs a NixOS MCP server using [mcp-nixos](https://github.com/utensils/mcp-nixos).

```nix
{ inputs, lib, pkgs, ... }:

let
  inherit (pkgs.stdenv.hostPlatform) system;
in
{
  imports = [ inputs.synix.nixosModules.mcpo ];

  services.mcpo = {
    enable = true;
    package = inputs.synix.packages."${system}".mcpo;
    settings = {
      mcpServers = {
        nixos = {
          command = lib.getExe inputs.mcp-nixos.packages."${system}".mcp-nixos;
        };
      };
    };
  };
}
```

## Usage

Each tool will be accessible under its own unique route `127.0.0.1:8000/<mcp-server>`. Following the example from above, visit [127.0.0.1:8000/nixos/docs](http://127.0.0.1:8000/nixos/docs) to send requests manually.

## Open WebUI Integration

Follow the [official Open WebUI integration documentation starting at *Step 2*](https://docs.openwebui.com/openapi-servers/open-webui/#step-2-connect-tool-server-in-open-webui).

In Open WebUI, users have to set *Function Calling* to *Native* in *Settings* > *General* > *Advanced Parameters*. Then, they can enable MCP servers in a chat by clicking *More* (the plus sign) in the bottom left of the prompt window.
