uc-remote-mcp
Enables reading and configuring an Unfolded Circle Remote Two or Remote 3 through the official Core REST API, exposing activities, touchscreen pages, profiles, integration entities, and physical-button mappings to MCP clients.
README
Unfolded Circle Remote MCP
An independent Model Context Protocol server for reading and configuring an Unfolded Circle Remote Two or Remote 3 through the official Core REST API.
The server exposes activities, touchscreen pages, profiles, integration entities, physical-button mappings, and a generic Core API request tool to MCP clients such as GitHub Copilot CLI.
[!WARNING] This server uses an admin API key and includes write, replacement, delete, and unrestricted request tools. A mistaken tool call can change or remove remote configuration. Back up important setups and test with the core simulator first.
Requirements
- Python 3.10 or newer
uvfor the examples below- An Unfolded Circle Remote or core simulator reachable from the MCP host
- An admin API key for authenticated endpoints
Run directly from GitHub
UC_REMOTE_URL=http://192.168.1.50 \
UC_API_KEY=replace-me \
uvx --from git+https://github.com/msvinth/uc-remote-mcp uc-remote-mcp
For a local checkout:
uv run uc-remote-mcp
The server uses stdio transport. Configure environment variables in the MCP
client rather than expecting the server to read a .env file automatically.
Create an API key
On the remote, generate a web-configurator PIN from the profile/settings view. Then run the helper from a clone:
./scripts/setup-api-key.sh 192.168.1.50
The PIN is read from a hidden prompt instead of a command-line argument. The new key is printed once; store it securely.
MCP client configuration
Add this entry under mcpServers:
{
"mcpServers": {
"unfolded-circle": {
"type": "local",
"command": "uvx",
"args": [
"--python",
"3.12",
"--from",
"git+https://github.com/msvinth/uc-remote-mcp",
"uc-remote-mcp"
],
"env": {
"UC_REMOTE_URL": "http://192.168.1.50",
"UC_API_KEY": "replace-me"
},
"tools": ["*"]
}
}
}
Keep the configuration file private because it contains the API key.
Home Assistant Copilot Terminal
The Copilot Terminal app in
/Users/msvinth/private/home-assistant-apps/copilot-terminal already includes
uvx, uses Python 3.12 for MCP servers, starts in /config, and persists
Copilot data at /data/home/.copilot/.
Its MCP config is:
/data/home/.copilot/mcp-config.json
Retain the existing home-assistant entry and add unfolded-circle beside it:
{
"mcpServers": {
"home-assistant": {
"type": "local",
"command": "uvx",
"args": [
"--index-strategy",
"unsafe-best-match",
"--python",
"3.12",
"ha-mcp"
],
"env": {
"HOMEASSISTANT_URL": "http://supervisor/core",
"HOMEASSISTANT_TOKEN": "provided-by-the-app"
},
"tools": ["*"]
},
"unfolded-circle": {
"type": "local",
"command": "uvx",
"args": [
"--python",
"3.12",
"--from",
"git+https://github.com/msvinth/uc-remote-mcp",
"uc-remote-mcp"
],
"env": {
"UC_REMOTE_URL": "http://192.168.1.50",
"UC_API_KEY": "replace-me"
},
"tools": ["*"]
}
}
}
The current Copilot Terminal setup-ha-mcp.sh regenerates this file at app
startup with only the Home Assistant entry. A manual merge can therefore be
overwritten on restart. Persistent automatic registration should be added
later as an optional feature in that sibling project; this repository does not
modify the app.
Configuration
| Variable | Required | Description |
|---|---|---|
UC_REMOTE_URL |
Yes | Remote origin only, such as http://192.168.1.50; do not include /api. |
UC_API_KEY |
For authenticated tools | Admin API key created by the remote. |
UC_TIMEOUT |
No | Positive request timeout in seconds; defaults to 20. |
Tools
Discovery and escape hatch: uc_ping, uc_ui_reference, uc_request,
get_screen_layout.
Entities: list_entities, get_entity.
Integrations: list_integration_instances, list_available_entities,
configure_entities.
Activities: list_activities, get_activity,
get_activity_ui_pages, get_activity_ui_page,
create_activity_ui_page, update_activity_ui_page,
delete_activity_ui_page, reorder_activity_ui_pages,
get_activity_buttons.
Profiles and groups: list_profiles, get_profile,
get_profile_pages, get_profile_page, update_profile_page,
get_profile_groups, list_activity_groups.
There are 25 tools in total. uc_request can call any Core REST API endpoint
available to the configured key.
Suggested workflow
- Call
uc_ping. - Inspect the target activity, profile, or page.
- Call
uc_ui_referencebefore constructing UI payloads. - Make the smallest possible update.
- Read the object again to confirm the result.
An entity provided by Home Assistant or another integration must be configured
on the remote before it can be placed on a page. Use
list_integration_instances, list_available_entities, and
configure_entities in that order.
Compatibility
The package targets the current MCP Python SDK v2 and Python 3.10+. Its endpoint coverage was reviewed against Unfolded Circle REST Core API 0.46.x. The Core API is pre-1.0 and may change between firmware releases.
Home Assistant entity support depends on the remote's integration driver: integration-home-assistant.
Development
uv sync
uv run ruff check .
uv run ruff format --check .
uv run pytest
uv build
See SECURITY.md before reporting credential or command-execution issues.
License and attribution
Original code and documentation in this repository are licensed under the MIT License.
Unfolded Circle API specifications and documentation have their own upstream licenses. This project links to those sources and does not relicense them. Unfolded Circle is a trademark of its respective owner. This community project is not affiliated with or endorsed by Unfolded Circle.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.