An AI client for your OpenRemote instance with support for MCP.
This guide assumes you already have an OpenRemote instance running.
-
Create service user
In your OpenRemote instance, create a new service user (
settings > users > SERVICE USERS > ADD USER) and give it the permissions you want to have. The MCP server will auto discover the tools that are available.Note: The service user is required to have the
read:services&write:servicesrole. -
Setup docker service Create a docker-compose.yml file and configure the service.
services: # Other OpenRemote services... mcp-client: image: openremote/mcp-client:latest restart: always depends_on: manager: condition: service_healthy ports: - "8421:8421" volumes: - ./mcp_config.json:/app/mcp_config.json environment: APP_HOMEPAGE_URL: https://<SERVICE_URL>:8421 # Change this to the URL this service is available on OPENREMOTE_CLIENT_ID: <OPENREMOTE_CLIENT_ID> OPENREMOTE_CLIENT_SECRET: <OPENREMOTE_CLIENT_SECRET> OPENREMOTE_URL: <OPENREMOTE_URL> OPENREMOTE_VERIFY_SSL: 1 # Fill one of the following keys or both! OPENAI_API_KEY: <OPENAI_API_KEY> ANTHROPIC_API_KEY: <ANTHROPIC_API_KEY>
-
Create MCP configuration
Create a new file
mcp_config.jsonin the same directory as thedocker-compose.ymlfile. Add any MCP configuration you want to use. Below is a quick example to connect it to the OpenRemote MCP server.{ "openremote": { "transport": "streamable_http", "url": "https://mcp-server:8420/mcp" } } -
Run the service
Finally, you can run the new services by using docker compose.
docker compose up
This will run the additional service, it will auto-register to your OpenRemote instance. and you can view them in the services tab inside your OpenRemote dashboard.
Setup a development environment for the service.
- Python & UV installed
- Node & NPM installed
- Running an instance of OpenRemote
-
Create service user
In your OpenRemote instance, create a new service user (
settings > users > SERVICE USERS > ADD USER) and give it the permissions you want to have.Note: The service user is required to have the
read:services&write:servicesrole. -
Sync dependencies
uv sync
-
Setup environment variables
Create a new file
.envin the root of the project directory. and fill in the following variables replacing the brackets with your own values.APP_HOMEPAGE_URL: http://localhost:3000 OPENREMOTE_CLIENT_ID=<OPENREMOTE_CLIENT_ID> OPENREMOTE_CLIENT_SECRET=<OPENREMOTE_CLIENT_SECRET> OPENREMOTE_URL=<OPENREMOTE_URL> OPENREMOTE_VERIFY_SSL=1 # Fill one of the following keys or both! OPENAI_API_KEY= ANTHROPIC_API_KEY=
-
Create MCP configuration file
Create a new file
mcp_config.jsonin the root directory of the project. Add any MCP configuration you want to use. Below is a quick example to connect it to the OpenRemote MCP server.{ "openremote": { "transport": "streamable_http", "url": "http://localhost:8420/mcp" } } -
Setup UI
Go into the
uidirectory and install the npm packages.cd ui && npm install
-
Run service
Start the service using uvicorn.
uv run uvicorn app:app --reload --port=8421
Then run the UI in development mode.
cd ui && npm run dev
- Docker installed
-
Build docker image
Build the docker image
docker build . --tag=openremote/mcp-client:latest