conda-meta-mcp
README.md
[](https://github.com/j178/prek)
[](https://github.com/astral-sh/ruff)
[](https://github.com/astral-sh/ty)
[](https://github.com/conda-incubator/conda-meta-mcp/actions/workflows/tests.yml)
# conda-meta-mcp
An MCP (Model Context Protocol) server exposing authoritative, read-only Conda ecosystem metadata for AI agents.
đź“– **Read the introduction blog post:** [conda-meta-mcp: Expert Conda Ecosystem Data for AI Agents](https://conda.org/blog/conda-meta-mcp)
> [!NOTE]
> `conda-meta-mcp` provides read-only access to conda ecosystem metadata from channel data
> (packages and repodata), conda-forge data, and the OpenTeams search index for package
> content. Users are solely responsible for all requests they initiate, authorize, automate,
> or cause to be made through `conda-meta-mcp`, including compliance with any applicable
> third-party terms, rate limits, access requirements, and package licenses.
>
> Metadata and license fields may be incomplete, outdated, or informational only. This
> project does not provide legal advice or grant rights to use third-party services or
> content.
## What “Meta” Means Here
“Meta” refers to structured, machine-consumable ecosystem intelligence about packages — not the upstream project documentation itself. This server provides (see also the schema [server-info.json](server-info.json) for current capabilities):
Currently available:
- Version metadata (MCP tool/library versions) via the `info` tool
- Package info tarball data via the `package_insights` tool
- Package search via the `package_search` tool
- Import to package heuristic mapping via the `import_mapping` tool
- File path to package mapping via the `file_path_search` tool
- PyPI name to conda package mapping via the `pypi_to_conda` tool
- CLI help (for conda) via the `cli_help` tool
- Repository metadata queries (depends / whoneeds) via the `repoquery` tool
Tools backed by channel-specific data sources require an explicit `channel` argument and
fail for unsupported channels before reading their data source.
Planned:
- Solver feasibility signals (dry-run outputs)
- Schema references and selected spec excerpts
- Binary linkage information
- Links (not copies) to sections of knowledge bases
It does not embed, index, or serve full library docs (e.g. numpy API pages); that remains out of scope by design.
## 1. Purpose
Enable agents to answer packaging questions by providing up-to-date critical and fragmented expert knowledge. This project provides a safe, inspectable, zero‑side‑effect surface so agents deliver accurate, up‑to‑date guidance.
## 2. Scope
### Goals
- Trustworthy machine interface
- Read‑only, hostable
- Fast startup, low latency
- Clear extension & testing pattern
### Non‑Goals
- Performing installs / mutations
- Replacing human docs
- Re‑implementing conda‑forge processing logic
## 3. Design Principles
- Side‑effect free by contract
- Tool registration pattern (`conda_meta_mcp.tools`)
- Test + pre‑commit enforced consistency
- Incremental expansion
## 4. Installation
### Via pixi (recommended)
Install globally as a tool:
```shell
pixi global install conda-meta-mcp
```
Or add to your project:
```shell
pixi add conda-meta-mcp
```
### Via conda/mamba
```shell
conda install -c conda-forge conda-meta-mcp
```
Or with mamba/micromamba:
```shell
mamba install -c conda-forge conda-meta-mcp
```
### From source (development)
Prerequisites: [pixi](https://pixi.sh/latest/installation/)
```shell
git clone https://github.com/conda-incubator/conda-meta-mcp.git
cd conda-meta-mcp
pixi run cmm --help
```
## 5. Agent Setup
### Installed as conda package
Call `cmm mcp-json` to get an json snippet containing the command with args to add to your agent configuration.
### Installed from source
Call `pixi run cmm mcp-json` to get an json snippet containing the command with args to add to your agent configuration.
## 6. Usage inside GitHub Copilot coding agent
Create a GitHub workflow named `copilot-setup-steps.yml` containing (see also [GitHub Documentation](https://docs.github.com/en/enterprise-cloud@latest/copilot/how-tos/use-copilot-agents/coding-agent/customize-the-agent-environment)):
```yaml
jobs:
copilot-setup-steps:
...
steps:
...
- name: Setup conda-meta-mcp
uses: conda-incubator/conda-meta-mcp@main
...
```
Add this MCP configuration inside your repository under Settings -> Copilot -> Coding agent -> MCP Configuration:
```json
{
"mcpServers": {
"conda-meta-mcp": {
"type": "local",
"command": "cmm",
"args": [
"run"
],
"tools": [
"*"
]
}
}
}
```
## 7. Development
Tasks (pixi):
- Tests: `pixi run test` (for coverage open `htmlcov/index.html`)
- Lint / format / type / regenerate metadata: `pixi run pre-commit`
## 8. Extending (New Tool)
1. Create `conda_meta_mcp/tools/<name>.py` with:
```python
from .registry import register_tool
@register_tool # or @register_tool(cache_clearers=[...]) for custom cache clearers
async def my_tool(...) -> dict:
"""Tool description (becomes MCP tool description)."""
return await asyncio.to_thread(_helper_function, ...)
```
1. Add unit tests (mock heavy deps)
1. `pixi run prek`
1. `pixi run test`
1. Open PR
## 8. Safety Model
- No environment mutation
- No external command side effects
- Future additions must preserve read‑only contract
This server cannot be deployed
Maintenance
ActivityActive
ResponsivenessNo issues