mcp-nixos

by utensils
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Integrates with Codecov for tracking code coverage statistics from the project's test suite, with links to coverage reports.

  • Connects to the NixOS Elasticsearch API to query package information and system options with field-specific search boosts, multiple channel support, and error handling.

  • Offers specific integration for Firefox configuration in Home Manager, enabling access to Firefox profiles and settings information through dedicated search and info tools.

MCP-NixOS - AI 비서가 패키지에 대해 환각을 겪어서는 안 되기 때문입니다.

⚠️ 활발하게 개발 중 : 이 패키지는 활발하게 개발 중입니다. 제가 선택한 직업처럼 끊임없이 발전하고 있습니다.

📢 이름 변경 : 이 패키지는 0.2.0 버전에서 nixmcp 에서 mcp-nixos 로 이름이 변경되었습니다. 참고 자료를 적절히 업데이트하거나, 이전 버전을 계속 사용하든, 선택은 귀하에게 달려 있습니다.

이게 대체 뭐야?

MCP-NixOS는 AI 비서가 NixOS에 대해 허위 정보를 조작하는 것을 방지하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 솔직히 말해서, NixOS 설명서를 혼란스럽게 만드는 것보다 더 나쁜 것은 AI가 NixOS에 대해 자신 있게 환각을 보이는 것입니다.

다음에 대한 실시간 액세스를 제공합니다.

  • NixOS 패키지(실제로 존재하는 패키지)
  • 시스템 옵션(수 시간 동안 구성하는 데 소요되는 옵션)
  • 홈 관리자 설정(시스템 전체의 혼란이 충분하지 않은 경우)
  • nix-darwin macOS 구성(Apple 사용자도 복잡성이 필요하기 때문)

빠른 시작: 만성적으로 참을성이 없는 분들을 위해

있잖아, 우리 둘 다 네가 이 README를 훑어보고는 뭔가 안 되면 불평할 거라는 거 알아. 시작하기 위한 최소한의 내용은 다음과 같아.

지엑스피1

자, 이제 AI 비서가 2019년 패키지 이름을 엉뚱하게 설명하는 대신 NixOS에 대한 정확한 정보를 제공할 수 있게 되었습니다. 천만에요.

환경 변수(제어광을 위한)

변하기 쉬운설명기본
MCP_NIXOS_LOG_LEVEL당신은 당신의 실패에 대해 얼마나 알고 싶어합니까?정보
MCP_NIXOS_LOG_FILE해당 실패를 어디에 문서화할 것인가(아무데도—당신의 비밀은 안전합니다)
MCP_NIXOS_CACHE_DIR잊어버릴 물건을 보관할 곳OS별 캐시 위치*
MCP_NIXOS_CACHE_TTL캐시 무효화로 인해 하루가 망가질 때까지 얼마나 걸릴까요?86400 (24시간)
MCP_NIXOS_CLEANUP_ORPHANS시작 시 고아 MCP 프로세스를 종료할지 여부거짓
KEEP_TEST_CACHE디버깅을 위해 테스트 캐시 디렉토리를 유지합니다(개발 전용)거짓
ELASTICSEARCH_URLNixOS Elasticsearch API URLhttps://search.nixos.org/backend

*기본 캐시 위치(기가바이트가 조용히 사라지는 곳):

  • Linux: ~/.cache/mcp_nixos/ (~/.cache가 충분히 복잡하지 않았기 때문)
  • macOS: ~/Library/Caches/mcp_nixos/ (절대 볼 수 없는 곳에 묻혀 있음)
  • Windows: %LOCALAPPDATA%\mcp_nixos\Cache\ (Windows 디렉터리의 공백으로 인해 손실됨)

실제로 작동할 수 있는 기능

  • NixOS 리소스 : Elasticsearch API를 통한 패키지 및 시스템 옵션
    • 다양한 채널: 불안정한 버전(용감한 사람을 위한), 안정적인 버전(지루한 사람을 위한), 특정 버전
    • 작동 방법을 제외한 모든 것을 알려주는 자세한 패키지 메타데이터
  • 홈 관리자 : 구문 분석된 문서를 통한 사용자 구성 옵션
    • 주말에 구성할 프로그램, 서비스 및 설정
    • 엄청나게 구체적인 내용을 얻고 싶을 때를 위한 계층적 경로
  • nix-darwin : "저는 NixOS를 사용합니다" Apple 사용자를 위한 macOS 구성
    • Apple이 사용자가 건드리지 않도록 의도한 시스템 기본값, 서비스 및 설정
    • 새롭고 신나는 방법으로 Mac을 분해해보세요!
  • 스마트 캐싱 : 아무도 Elasticsearch 쿼리를 기다리고 싶어하지 않기 때문입니다.
    • 네트워크 요청을 줄이고 시작 시간을 개선합니다.
    • 캐시되면 오프라인에서도 작동합니다(다음 인터넷 중단에 완벽함)
  • 풍부한 검색 : 필요한 정보나 그에 가까운 정보를 찾아보세요
    • 놀랍게도 나쁘지 않은 빠른 인메모리 검색 엔진
    • 찾고 있는 것이 무엇인지 확실하지 않을 때를 위한 관련 옵션

MCP 리소스 및 도구: 필요하다고 몰랐던 강력한 도구

NixOS: 당신을 더 똑똑하고 더 멍청하게 느끼게 하는 OS

자원:

  • nixos://package/{name} - 확실히 존재하는 패키지를 찾으세요
  • nixos://search/packages/{query} - 존재할 수 있는 패키지 검색
  • nixos://search/options/{query} - 잘못 구성한 검색 시스템 옵션
  • nixos://option/{name} - 여전히 엉망으로 만들 수 있는 옵션 정보를 얻으세요
  • nixos://search/programs/{name} - 프로그램을 제공하는 패키지 찾기
  • nixos://packages/stats - 괴짜 친구들을 감동시킬 통계

도구:

  • nixos_search(query, type, channel) - 가장 많이 사용하게 될 검색 함수
  • nixos_info(name, type, channel) - 패키지 또는 옵션 세부 정보 가져오기
  • nixos_stats(channel) - 아무도 요청하지 않은 NixOS 통계를 가져옵니다.

채널:

  • unstable (기본값) - 정신 건강을 포함하여 아무것도 안정적이지 않은 경계에서 생활함
  • stable (24.11) - 일정에 따라 파손을 선호하는 분들을 위해
  • 이전 버전 - 이전 실패에 대한 향수를 느낄 때

홈 관리자: 시스템 전체 구성이 충분히 복잡하지 않았기 때문에

자원:

  • home-manager://search/options/{query} - 사용자 구성 옵션 검색
  • home-manager://option/{name} - 나중에 스크린샷으로 볼 수 있는 옵션 세부 정보
  • home-manager://options/prefix/{prefix} - 접두사 아래의 모든 옵션
  • home-manager://options/{category} - 카테고리 옵션(프로그램, 서비스 등)

도구:

  • home_manager_search(query) - 검색 구성 옵션
  • home_manager_info(name) - 실제 설명과 함께 옵션 세부 정보를 가져옵니다.
  • home_manager_options_by_prefix(option_prefix) - 접두사로 옵션 가져오기
  • home_manager_list_options() - 과부하 시 모든 옵션 카테고리를 나열합니다.

nix-darwin: 고통을 갈망하는 Mac 사용자를 위해

자원:

  • darwin://search/options/{query} - macOS 검색 옵션
  • darwin://option/{name} - Apple 기기에 대한 옵션 세부 정보
  • darwin://options/prefix/{prefix} - 접두사 아래의 모든 옵션
  • darwin://options/{category} - 카테고리 옵션(시스템, 서비스 등)

도구:

  • darwin_search(query) - macOS 구성 옵션 검색
  • darwin_info(name) - Apple이 알려주고 싶지 않은 옵션 세부 정보 가져오기
  • darwin_options_by_prefix(option_prefix) - 접두사로 옵션 가져오기
  • darwin_list_options() - 모든 옵션 범주 나열

도구 사용 예(복사/붙여넣기 가능)

# NixOS examples for when you're pretending to know what you're doing nixos_search(query="firefox", type="packages", channel="unstable") nixos_search(query="postgresql", type="options", channel="stable") nixos_info(name="firefox", type="package") nixos_info(name="services.postgresql.enable", type="option") # Home Manager examples for the domestic configuration enthusiasts home_manager_search(query="programs.git") home_manager_info(name="programs.firefox.enable") home_manager_options_by_prefix(option_prefix="programs.git") # nix-darwin examples for the masochistic Mac users darwin_search(query="system.defaults.dock") darwin_info(name="services.yabai.enable") darwin_options_by_prefix(option_prefix="system.defaults")

설치 및 구성: 아마도 건너뛸 부분

설치하세요(독을 선택하세요)

# Option 1: Install with pip like a normie pip install mcp-nixos # Option 2: Install with uv because you're too cool for pip uv pip install mcp-nixos # Option 3: Run directly with uvx (recommended for the truly enlightened) uvx --install-deps mcp-nixos

구성하기(확실히 망칠 부분)

MCP 구성 파일에 다음을 추가합니다(예: ~/.config/claude/config.json ):

{ "mcpServers": { "nixos": { "command": "uvx", "args": ["mcp-nixos"] } } }

소스 코드를 이용한 개발의 경우(처벌을 즐기는 사람들을 위해):

{ "mcpServers": { "nixos": { "command": "uv", "args": ["run", "-m", "mcp_nixos.__main__"], "env": { "PYTHONPATH": "." } } } }

캐시 및 채널: 마법이 일어나고 파일이 사라지는 곳

캐시 시스템:

  • 5분 안에 잊어버릴 기본 위치
  • HTML 콘텐츠, 직렬화된 데이터 및 검색 인덱스를 저장합니다.
  • 캐시되면 오프라인에서도 작동합니다(실제로 감상할 수 있는 유일한 기능)

NixOS 채널:

  • unstable : 최신 NixOS 불안정(무모한 사람을 위한)
  • stable : 현재 안정적인 릴리스(위험 회피형)
  • 24.11 : 특정 버전 참조(역사적 경향을 가진 사람들을 위해)

개발: 단순히 물건을 사용하는 것에 만족하지 못하는 사람들을 위해

종속성(더 이상 아무것도 홀로 서 있지 않기 때문에)

이 프로젝트에서는 pyproject.toml 사용합니다. 왜냐하면 우리는 동물이 아니기 때문입니다.

# Install development dependencies for the brave pip install -e ".[dev]" # Or with uv (recommended for the enlightened) uv pip install -e ".[dev]"

Nix 사용하기(물론 Nix 개발 환경이 있습니다)

# Enter dev shell and see available commands nix develop && menu # Common commands for common folk run # Start the server (and your journey into madness) run-tests # Run tests with coverage (expose the flaws) lint # Format and lint code (fix the mess you made) publish # Build and publish to PyPI (share your pain)

테스트(네, 실제로 테스트합니다)

우리는 실제 세계를 두려워하지 않기 때문에 모의 테스트 대신 실제 Elasticsearch API 호출을 사용합니다.

# Run tests with coverage (default and recommended) run-tests # Run tests without coverage (for those who prefer blissful ignorance) run-tests --no-coverage

코드 커버리지는 Codecov 에서 추적됩니다(여기서는 100% 커버리지에 관심이 있다고 가장합니다).

LLM과 함께 사용하기: 이 연습의 요점

구성이 완료되면 MCP 호환 모델에서 프롬프트에 MCP-NixOS를 사용합니다.

# NixOS resources for the confused ~nixos://package/python ~nixos://option/services.nginx ~nixos://search/packages/firefox # Home Manager resources for the domestically challenged ~home-manager://search/options/programs.git ~home-manager://option/programs.firefox.profiles # nix-darwin resources for the Apple addicted ~darwin://search/options/system.defaults.dock # NixOS tools for the tool-inclined ~nixos_search(query="postgresql", type="options") ~nixos_info(name="firefox", type="package", channel="unstable") # Home Manager tools for home improvement ~home_manager_search(query="programs.zsh") ~home_manager_info(name="programs.git.userName") # nix-darwin tools for the Mac masochists ~darwin_search(query="services.yabai") ~darwin_info(name="system.defaults.dock.autohide")

LLM은 MCP 서버를 통해 정보를 가져오고 이번에는 실제로 정확한 정보를 제공할 수도 있습니다.

구현 세부 정보: 카드의 집 공개

코드 아키텍처: 어떻게 작동하게 만들었는가 (어떻게든)

MCP-NixOS는 어떻게든 모든 역경에도 불구하고 작동할 수 있는 모듈식 구조로 구성되어 있습니다.

  • mcp_nixos/cache/ - 대역폭과 정신 건강을 보호하는 캐싱 구성 요소
  • mcp_nixos/clients/ - Elasticsearch와 통신하고 HTML 문서를 구문 분석하는 API 클라이언트
  • mcp_nixos/contexts/ - 모든 것이 무너지지 않도록 유지하는 컨텍스트 객체
  • mcp_nixos/resources/ - 모든 플랫폼에 대한 MCP 리소스 정의
  • mcp_nixos/tools/ - 실제 작업을 수행하는 MCP 도구 구현
  • mcp_nixos/utils/ - 동물이 아니기 때문에 유틸리티 함수가 필요합니다.
  • mcp_nixos/server.py - 이 카드의 집을 하나로 묶어주는 접착제

NixOS API 통합: 외부 연결

NixOS Elasticsearch API에 연결:

  • 다중 채널 지원(불안정, 안정/24.11)
  • 더 나은 관련성을 위한 필드별 검색 향상
  • 최악을 예상하면서도 최상의 결과를 바라는 오류 처리(내 인생 이야기)

HTML 문서 파서: 꿈이 죽는 곳

홈 관리자와 nix-darwin 옵션의 경우, 우리는 HTML 구문 분석에 반하는 범죄를 저질렀습니다.

  1. 문서 파서 : BeautifulSoup 주문, 정규 표현식의 흑마법, 그리고 잘못된 HTML을 72시간 동안 똑바로 쳐다보는 것에서 나오는 결단력을 결합하여 구조화된 데이터를 추출합니다.
  2. 검색 엔진 : 다음으로 구성됨:
    • 빠른 텍스트 검색을 위한 역색인(넘어지지 않을 때)
    • 계층적 조회를 위한 접두사 트리(오전 3시에 좋은 생각처럼 보였어요)
    • "바이브 기반 정렬"로 가장 잘 설명되는 알고리즘을 기반으로 한 결과 점수 매기기
  3. 캐싱 시스템 : HTML을 한 번 파싱하는 것만으로도 충분히 힘든 일이기 때문에:
    • HTML 콘텐츠, 처리된 데이터 구조 및 검색 인덱스를 저장합니다.
    • 플랫폼별 캐시 위치를 사용하므로 별도로 생각할 필요가 없습니다.
    • 필요할 때 콘텐츠를 새로 고치기 위해 TTL 기반 만료를 구현합니다.
    • 일이 불가피하게 잘못될 때 우아하게 물러납니다(내 관계와는 달리)

모델 컨텍스트 프로토콜이란 무엇인가요?

끝까지 바로 건너뛰신 분들을 위해

모델 컨텍스트 프로토콜(MCP)은 stdin/stdout을 통해 JSON 메시지를 사용하여 LLM을 외부 데이터 및 도구에 연결하는 개방형 프로토콜입니다. 이 프로젝트는 MCP를 구현하여 AI 비서가 NixOS, Home Manager, nix-darwin 리소스에 접근할 수 있도록 하여 운영 체제에 대한 허위 정보를 더 이상 조작하지 않도록 지원합니다.

특허

MIT (나는 괴물이 아니기 때문에)

NixOS 눈송이 로고는 NixOS 프로젝트에 대한 출처를 명시하여 사용되었습니다. 자세한 내용은 출처 정보를 참조하세요.


스스로를 공포의 창시자라고 칭하는 제임스 브링크가 만든 작품으로, 어떻게든 자기 의지와 상관없이 모든 것을 작동시키는 듯합니다.

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

MCP-NixOS는 NixOS 패키지, 옵션, 홈 관리자 및 nix-darwin 구성에 대한 실시간의 정확한 정보를 제공하는 모델 컨텍스트 프로토콜 서버로, AI 어시스턴트가 NixOS 리소스에 대해 환상을 갖는 것을 방지하고 사실에 기반한 시스템 구성 지침을 제공할 수 있도록 합니다.

  1. What The Hell Is This Thing?
    1. Quick Start: For the Chronically Impatient
      1. Environment Variables (For Control Freaks)
    2. Features That Might Actually Work
      1. MCP Resources & Tools: The Power Tools You Didn't Know You Needed
        1. NixOS: The OS That Makes You Feel Simultaneously Smarter and Dumber
        2. Home Manager: Because System-Wide Configuration Wasn't Complicated Enough
        3. nix-darwin: For Mac Users Who Crave Pain
        4. Tool Usage Examples (Copy/Paste Ready)
      2. Installation & Configuration: The Part You'll Probably Skip
        1. Install It (Pick Your Poison)
        2. Configure It (The Part You'll Definitely Mess Up)
        3. Cache & Channels: Where Magic Happens and Files Disappear
      3. Development: For Those Not Content With Just Using Things
        1. Dependencies (Because Nothing Stands Alone Anymore)
        2. Using Nix (Of Course There's a Nix Development Environment)
        3. Testing (Yes, We Actually Do That)
      4. Using with LLMs: The Whole Point of This Exercise
        1. Implementation Details: The House of Cards Revealed
          1. Code Architecture: How We Made This Work (Somehow)
          2. NixOS API Integration: The External Connection
          3. HTML Documentation Parsers: Where Dreams Go To Die
        2. What is Model Context Protocol?
          1. For Those Who Skipped Straight to the End
        3. License
          ID: j13wrfj9az