NIMO Controller: MCP-based interface for self-driving laboratories
Project description
nimo-controller
Installation
Installation requires uv.
git clone https://github.com/NIMS-DA/nimo-controller.git
cd nimo-controller
uv sync
Examples
Bayesian optimization
The example_mcp/ackley directory contains an example MCP server that demonstrates how to use PHYSBO with the Ackley function.
Start the MCP server:
cd example_mcp/ackley
uv run mcp_ackley.py
In a separate terminal, launch NIMO Controller:
cd nimo-controller
uv run nimo-controller
Then open http://127.0.0.1:8888/ in your browser.
At this point you will see a warning indicating that no candidates file has been loaded yet.
Click the Upload candidates file button and upload example_mcp/ackley/candidates.csv.
Once uploaded, the x1 and x2 blocks will appear in the NIMO toolbox.
Use the blocks to build the workflow shown below:
Press the Run button to execute the workflow.
Note that the target is the negated Ackley function, since PHYSBO performs maximization.
Phase diagram construction
The example_mcp/phase_diagram directory contains an example MCP server that demonstrates the PDC algorithm by constructing a phase diagram for the fictional material X described in the IvoryOS integration guide.
Start the MCP server:
cd example_mcp/phase_diagram
uv run mcp_phase_diagram.py
Restart NIMO Controller, then upload example_mcp/phase_diagram/candidates.csv via the Upload candidates file button.
Build the workflow shown below. After running the workflow, a phase diagram will be constructed.
Configuration
Configuration is loaded from the following sources, in order of precedence:
- The path specified by
--config <path> ./config.yamlin the current directory<user-config-dir>/nimo-controller/config.yaml(for example,~/.config/nimo-controller/config.yaml)- The default configuration bundled with the package
Example config.yaml:
model: "gpt-4o-mini"
port: 8888
# Optional: route requests to an OpenAI-compatible local endpoint (e.g. Ollama).
# openai_base_url: "http://127.0.0.1:11434/v1"
# openai_api_key: "ollama"
mcp_servers:
sdl: "http://127.0.0.1:8001/mcp"
Runtime data, including the uploaded candidates.csv and optimization results, is written to <user-data-dir>/nimo-controller/ (for example, ~/.local/share/nimo-controller/).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nimo_controller-0.0.1.tar.gz.
File metadata
- Download URL: nimo_controller-0.0.1.tar.gz
- Upload date:
- Size: 39.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31c5c32c2277ff198e6cc033d027eabfd4cf7d190644fef6f415501b5f604940
|
|
| MD5 |
a0ce0f447e633a94c9d16e7e0b96010f
|
|
| BLAKE2b-256 |
3c128e5ded37de46713ef3555af8f4baf85c9f5847487ca4e3159c44eaa2cb98
|
File details
Details for the file nimo_controller-0.0.1-py3-none-any.whl.
File metadata
- Download URL: nimo_controller-0.0.1-py3-none-any.whl
- Upload date:
- Size: 43.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a2cfc71b7680bba3f3cf95b6ab358a3881532222adf8b11fdc5169f320fb1ec
|
|
| MD5 |
935b97d6b5f1176ea1e78b7844588428
|
|
| BLAKE2b-256 |
9d6c0679794168a76e3ef39ed1550e399fa1239556815107d9934dd4809f5a3d
|