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_URL | NixOS Elasticsearch API URL | https://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()
- 모든 옵션 범주 나열
도구 사용 예(복사/붙여넣기 가능)
설치 및 구성: 아마도 건너뛸 부분
설치하세요(독을 선택하세요)
구성하기(확실히 망칠 부분)
MCP 구성 파일에 다음을 추가합니다(예: ~/.config/claude/config.json
):
소스 코드를 이용한 개발의 경우(처벌을 즐기는 사람들을 위해):
캐시 및 채널: 마법이 일어나고 파일이 사라지는 곳
캐시 시스템:
- 5분 안에 잊어버릴 기본 위치
- HTML 콘텐츠, 직렬화된 데이터 및 검색 인덱스를 저장합니다.
- 캐시되면 오프라인에서도 작동합니다(실제로 감상할 수 있는 유일한 기능)
NixOS 채널:
unstable
: 최신 NixOS 불안정(무모한 사람을 위한)stable
: 현재 안정적인 릴리스(위험 회피형)24.11
: 특정 버전 참조(역사적 경향을 가진 사람들을 위해)
개발: 단순히 물건을 사용하는 것에 만족하지 못하는 사람들을 위해
종속성(더 이상 아무것도 홀로 서 있지 않기 때문에)
이 프로젝트에서는 pyproject.toml
사용합니다. 왜냐하면 우리는 동물이 아니기 때문입니다.
Nix 사용하기(물론 Nix 개발 환경이 있습니다)
테스트(네, 실제로 테스트합니다)
우리는 실제 세계를 두려워하지 않기 때문에 모의 테스트 대신 실제 Elasticsearch API 호출을 사용합니다.
코드 커버리지는 Codecov 에서 추적됩니다(여기서는 100% 커버리지에 관심이 있다고 가장합니다).
LLM과 함께 사용하기: 이 연습의 요점
구성이 완료되면 MCP 호환 모델에서 프롬프트에 MCP-NixOS를 사용합니다.
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 구문 분석에 반하는 범죄를 저질렀습니다.
- 문서 파서 : BeautifulSoup 주문, 정규 표현식의 흑마법, 그리고 잘못된 HTML을 72시간 동안 똑바로 쳐다보는 것에서 나오는 결단력을 결합하여 구조화된 데이터를 추출합니다.
- 검색 엔진 : 다음으로 구성됨:
- 빠른 텍스트 검색을 위한 역색인(넘어지지 않을 때)
- 계층적 조회를 위한 접두사 트리(오전 3시에 좋은 생각처럼 보였어요)
- "바이브 기반 정렬"로 가장 잘 설명되는 알고리즘을 기반으로 한 결과 점수 매기기
- 캐싱 시스템 : HTML을 한 번 파싱하는 것만으로도 충분히 힘든 일이기 때문에:
- HTML 콘텐츠, 처리된 데이터 구조 및 검색 인덱스를 저장합니다.
- 플랫폼별 캐시 위치를 사용하므로 별도로 생각할 필요가 없습니다.
- 필요할 때 콘텐츠를 새로 고치기 위해 TTL 기반 만료를 구현합니다.
- 일이 불가피하게 잘못될 때 우아하게 물러납니다(내 관계와는 달리)
모델 컨텍스트 프로토콜이란 무엇인가요?
끝까지 바로 건너뛰신 분들을 위해
모델 컨텍스트 프로토콜(MCP)은 stdin/stdout을 통해 JSON 메시지를 사용하여 LLM을 외부 데이터 및 도구에 연결하는 개방형 프로토콜입니다. 이 프로젝트는 MCP를 구현하여 AI 비서가 NixOS, Home Manager, nix-darwin 리소스에 접근할 수 있도록 하여 운영 체제에 대한 허위 정보를 더 이상 조작하지 않도록 지원합니다.
특허
MIT (나는 괴물이 아니기 때문에)
NixOS 눈송이 로고는 NixOS 프로젝트에 대한 출처를 명시하여 사용되었습니다. 자세한 내용은 출처 정보를 참조하세요.
스스로를 공포의 창시자라고 칭하는 제임스 브링크가 만든 작품으로, 어떻게든 자기 의지와 상관없이 모든 것을 작동시키는 듯합니다.
You must be authenticated.
Tools
MCP-NixOS는 NixOS 패키지, 옵션, 홈 관리자 및 nix-darwin 구성에 대한 실시간의 정확한 정보를 제공하는 모델 컨텍스트 프로토콜 서버로, AI 어시스턴트가 NixOS 리소스에 대해 환상을 갖는 것을 방지하고 사실에 기반한 시스템 구성 지침을 제공할 수 있도록 합니다.
- What The Hell Is This Thing?
- Quick Start: For the Chronically Impatient
- Features That Might Actually Work
- MCP Resources & Tools: The Power Tools You Didn't Know You Needed
- Installation & Configuration: The Part You'll Probably Skip
- Development: For Those Not Content With Just Using Things
- Using with LLMs: The Whole Point of This Exercise
- Implementation Details: The House of Cards Revealed
- What is Model Context Protocol?
- License