Skip to content

✨ feat(support): add pixi and pdm package manager support #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions .github/workflows/auto-update-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ jobs:
repo: pypa/pip
docs_path: docs
target_dir: src/assets/pip
- manager: conda
repo: conda/conda
docs_path: docs
target_dir: src/assets/conda
- manager: poetry
repo: python-poetry/poetry
docs_path: docs
Expand All @@ -32,10 +36,14 @@ jobs:
repo: astral-sh/uv
docs_path: docs
target_dir: src/assets/uv
- manager: conda
repo: conda/conda
- manager: pixi
repo: prefix-dev/pixi
docs_path: docs
target_dir: src/assets/conda
target_dir: src/assets/pixi
- manager: pdm
repo: pdm-project/pdm
docs_path: docs
target_dir: src/assets/pdm

steps:
- name: Checkout main repo
Expand Down Expand Up @@ -79,5 +87,4 @@ jobs:
uses: stefanzweifel/git-auto-commit-action@778341af668090896ca464160c2def5d1d1a3eb0
with:
commit_message: 'docs(src/assets/): update ${{ matrix.manager }} official documentation'
commit_options: '--signoff'
file_pattern: 'src/assets/${{ matrix.manager }}/*'
1 change: 0 additions & 1 deletion .github/workflows/auto-update-index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,4 @@ jobs:
uses: stefanzweifel/git-auto-commit-action@778341af668090896ca464160c2def5d1d1a3eb0
with:
commit_message: 'chore(src/index/): rebuild search index from updated documentation'
commit_options: '--signoff'
file_pattern: 'src/index/*'
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.12
3.13
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ Thank you for your interest in contributing! This guide covers development workf

## 🔄 Contribution Workflow

**Issue-first approach**: No issue, no PR. No PR, no merge.
> [!IMPORTANT]
> **Issue-first approach**: No issue, no PR. No PR, no merge.

1. **Raise issue** - Bug report or feature request
2. **Get assigned** - Wait for maintainer assignment
Expand Down Expand Up @@ -75,8 +76,7 @@ Available templates and prompts for consistent contributions:
├── ISSUE_TEMPLATE/
│ ├── bug-report.md # Bug report template
│ └── feature-request.md # Feature request template
└── PULL_REQUEST_TEMPLATE/
└── pull_request_template.md
└── pull_request_template.md

prompts/
├── prompt-commit-msg-gen.md # Generate uniform commit messages
Expand All @@ -87,7 +87,7 @@ prompts/

## 🤖 Automated Systems

The repository auto-updates weekly (Tuesday 6pm ET):
The repository auto-updates weekly (Tuesday 06:00pm ET):

1. Syncs official documentation
2. Rebuilds search indexes
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
# ==============================================================================
# Stage 1: Dependencies builder
# ==============================================================================
FROM ghcr.io/astral-sh/uv:python3.12-alpine AS builder
FROM ghcr.io/astral-sh/uv:python3.13-alpine AS builder

# Set environment variables for uv
ENV UV_COMPILE_BYTECODE=1 \
Expand Down Expand Up @@ -41,7 +41,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
# ==============================================================================
# Stage 2: Runtime
# ==============================================================================
FROM ghcr.io/astral-sh/uv:python3.12-alpine AS runtime
FROM ghcr.io/astral-sh/uv:python3.13-alpine AS runtime

# Set environment variables for Python and stdio mode
ENV PYTHONUNBUFFERED=1 \
Expand Down
7 changes: 4 additions & 3 deletions README-dockerhub.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Python Dependency Manager Companion MCP Server

> README updated on 2025-07-27 by [@KemingHe](https://github.com/KemingHe)
> [!NOTE]
> **🚀 Major Update**: Now supports **6 Python package managers**! Added `pixi` and `pdm` with full auto-updating documentation alongside existing `pip`, `conda`, `poetry`, and `uv` support.

Stop getting out-of-date Python package manager commands from your AI. Cross-reference latest official `pip`, `poetry`, `uv`, and `conda` docs with auto-updates. [[Watch Demo on YouTube]](https://youtu.be/3nVp46Q8FdY)
Stop getting out-of-date Python package manager commands from your AI. Cross-reference latest official [`pip`](https://pip.pypa.io/), [`conda`](https://docs.conda.io/projects/conda), [`poetry`](https://python-poetry.org/), [`uv`](https://docs.astral.sh/uv/), [`pixi`](https://pixi.sh/), and [`pdm`](https://pdm-project.org/) docs with auto-updates. [[Watch Demo on YouTube]](https://youtu.be/3nVp46Q8FdY)

## 🚀 Quick Start for Agentic IDEs

Expand Down Expand Up @@ -49,7 +50,7 @@ docker pull keminghe/py-dep-man-companion:latest

## 🗺️ Roadmap

- [ ] Add support for `pipenv`, `pdm`, `pixi`
- [x] Added support for `pixi` and `pdm` in version 0.1.1
- [ ] Add comprehensive tests with 100% coverage
- [ ] Add indexing support for PDF and CSV files

Expand Down
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Python Dependency Manager Companion MCP Server

> README updated on 2025-07-27 by [@KemingHe](https://github.com/KemingHe)
> README updated on 2025-08-16 by [@KemingHe](https://github.com/KemingHe)

Stop getting out-of-date Python package manager commands from your AI. Cross-reference latest official `pip`, `poetry`, `uv`, and `conda` docs with auto-updates. [[Watch Demo on YouTube]](https://youtu.be/3nVp46Q8FdY)
Stop getting out-of-date Python package manager commands from your AI. Cross-reference latest official [`pip`](https://pip.pypa.io/), [`conda`](https://docs.conda.io/projects/conda), [`poetry`](https://python-poetry.org/), [`uv`](https://docs.astral.sh/uv/), [`pixi`](https://pixi.sh/), and [`pdm`](https://pdm-project.org/) docs with auto-updates. [[Watch Demo on YouTube]](https://youtu.be/3nVp46Q8FdY)

## 🚀 Quick Start for Agentic IDEs

Expand Down Expand Up @@ -49,7 +49,7 @@ docker pull keminghe/py-dep-man-companion:latest

## 🗺️ Roadmap

- [ ] Add support for `pipenv`, `pdm`, `pixi`
- [x] Added support for `pixi` and `pdm` in version 0.1.1
- [ ] Add comprehensive tests with 100% coverage
- [ ] Add indexing support for PDF and CSV files

Expand All @@ -68,7 +68,9 @@ python-dependency-manager-companion-mcp-server/
│ │ ├── conda/ # conda docs
│ │ ├── pip/ # pip docs
│ │ ├── poetry/ # poetry docs
│ │ └── uv/ # uv docs
│ │ ├── uv/ # uv docs
│ │ ├── pixi/ # pixi docs
│ │ └── pdm/ # pdm docs
│ ├── index/ # Pre-built search index
│ ├── build_index.py # Tantivy index builder
│ └── mcp_server.py # FastMCP stdio server
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[project]
name = "py_dep_man_companion"
version = "0.1.0"
version = "0.1.1"
description = "Local stdio MCP server providing unified search across Python dependency managers' latest and official documentation."
readme = "README.md"
license = {file = "LICENSE"}
requires-python = ">=3.12"
requires-python = ">=3.13"
urls.repository = "https://github.com/KemingHe/python-dependency-manager-companion-mcp-server"
urls.issues = "https://github.com/KemingHe/python-dependency-manager-companion-mcp-server/issues"
dependencies = [
Expand Down
4 changes: 2 additions & 2 deletions src/build_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def create_schema() -> tantivy.Schema:
Fields:
- content: Full-text searchable markdown content
- path: File path for result retrieval
- package: Source package manager (pip, conda, poetry, uv) for filtering
- package: Source package manager (pip, conda, poetry, uv, pixi, pdm) for filtering
- title: Document title extracted from file path
- source_repo: Original repository from metadata
- docs_path: Documentation directory path from metadata (for GitHub links)
Expand Down Expand Up @@ -163,7 +163,7 @@ def build_index():
# Create schema and index
schema = create_schema()
index = tantivy.Index(schema, path=str(INDEX_DIR))
writer = index.writer(heap_size=50_000_000) # 50MB heap for better performance
writer = index.writer(heap_size=100_000_000) # 100MB heap for better performance

# Find all documentation files
markdown_files = find_markdown_files(ASSETS_DIR)
Expand Down
10 changes: 5 additions & 5 deletions src/mcp_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
"""
FastMCP server for Python dependency manager documentation search.

Provides fuzzy search capabilities across pip, conda, poetry, and uv documentation
using a pre-built Tantivy index. Supports package filtering and handles typos
through fuzzy matching.
Provides fuzzy search capabilities across pip, conda, poetry, uv, pixi,
and pdm documentation using a pre-built Tantivy index. Supports package filtering
and handles typos through fuzzy matching.
"""

import logging
Expand Down Expand Up @@ -109,7 +109,7 @@ def search_py_dep_man_docs(
),
],
package_filter: Annotated[
Literal["pip", "conda", "poetry", "uv"] | None,
Literal["pip", "conda", "poetry", "uv", "pixi", "pdm"] | None,
Field(
description="Focus on specific tool when comparing or learning tool-specific workflows"
),
Expand Down Expand Up @@ -257,7 +257,7 @@ def main():
try:
logger.info("Starting Python Dependency Manager Documentation MCP Server...")
logger.info(
"Server provides fuzzy search across pip, conda, poetry, and uv documentation"
"Server provides fuzzy search across pip, conda, poetry, uv, pixi, and pdm documentation"
)

# Initialize index on startup to catch errors early
Expand Down
Loading