Connect a read-only conda server#
This tutorial installs conda-cli-mcp in an isolated environment, connects a
generic stdio MCP client, and inspects the tools discovered from the target
conda installation.
Prerequisites#
conda
>=26.7,<27an MCP client that can start a local stdio server
Prepare the server#
Install the server without modifying the target conda environment:
conda create --yes --name conda-cli-mcp --override-channels --channel jezdez --channel conda-forge "conda-cli-mcp>=0.2"
conda activate conda-cli-mcp
This installs from the jezdez channel on
Anaconda.org. The version
constraint prevents the incompatible 0.1.0 console command from being
installed with this guide.
Confirm the server and target conda are available:
ccm --version
conda --version
Find the absolute executable paths that the MCP client will use.
python3 -c "import shutil; print(shutil.which('ccm'))"
python3 -c "import os, shutil; print(os.environ.get('CONDA_EXE') or shutil.which('conda'))"
py -c "import shutil; print(shutil.which('ccm'))"
py -c "import os, shutil; print(os.environ.get('CONDA_EXE') or shutil.which('conda.exe'))"
On Windows, select conda.exe. Batch launchers ending in .bat or .cmd are
not supported.
Configure the MCP client#
Add a stdio server entry using the two paths from the previous step:
{
"mcpServers": {
"conda": {
"command": "/absolute/path/to/ccm",
"args": ["--conda-exe", "/absolute/path/to/conda"]
}
}
}
The surrounding configuration and restart procedure depend on the client. Keep the server arguments read-only for this first connection.
Inspect the discovered interface#
Start or restart the MCP client, then list the server’s tools. The list should
contain generated tools such as conda_info. Exact tools depend on the target
conda installation and its installed plugins.
Read the conda://capabilities resource. Confirm that:
target_executableis the selected conda pathconda_versionis in the supported rangegenerated_toolscontains the structured tool namespluginsdescribes external conda entry points visible at startup
The resource also contains the immutable startup command catalog and a discovery fingerprint.
Run a read-only tool#
Call conda_info with an empty input object:
{}
The result contains a short text summary and structured fields. A successful
call has exit_code set to 0, preserves conda’s output in stdout, and sets
parsed_json when stdout is exactly one complete JSON document.
Mutation tools can still appear in the list. The default policy rejects their execution before conda starts.
Next steps#
Configure the server for another conda installation or different resource limits.
Enable operations only when the client needs write or process execution access.
Read the MCP interface reference for the complete resource, tool, and result contracts.