papermoon-mkdocs-mcp
papermoon-mkdocs-mcp
MkDocs 문서 사이트를 위한 경량 MCP 서버입니다. 마크다운 파일을 디스크에서 직접 읽고, 전체 텍스트 및 선택적 의미 검색을 제공하며, Model Context Protocol을 통해 프로젝트 구조를 노출합니다.
기능
5가지 MCP 도구 -- search, read_document, list_documents, get_project_info, get_document_outline
SQLite FTS5 키워드 검색 (BM25 랭킹, 외부 의존성 없음)
선택적 의미 벡터 검색 (sentence-transformers 기반)
하이브리드 검색 -- 키워드 + 벡터 결과를 Reciprocal Rank Fusion으로 결합
증분 인덱싱 -- 파일 변경 시 빠른 업데이트
서버 재시작 후에도 유지되는 영구 SQLite 인덱스
내비게이션 인식 --
mkdocs.yml및.nav.yml파싱문서 제외 가능 -- 초안 및 내부 페이지를 MCP 표면에서 제외
보안 우선 -- 경로 탐색 방지, 읽기 전용 검색 연결
최소 의존성 -- 필수 3개, 선택 2개
Related MCP server: mdbook-mcp-server
설치
pip install papermoon-mkdocs-mcp벡터 검색을 활성화하려면:
pip install papermoon-mkdocs-mcp[vector]빠른 시작
MkDocs 프로젝트 루트(mkdocs.yml이 있는 위치)에서 실행:
cd /path/to/your/mkdocs-project
papermoon-mkdocs-mcp또는 특정 구성 파일을 지정:
papermoon-mkdocs-mcp --config /path/to/mkdocs.yml서버는 --config를 생략하면 현재 디렉터리에서 mkdocs.yml을 자동 감지합니다.
전송 옵션
기본적으로 서버는 stdio 전송을 사용합니다. 원격 또는 다중 클라이언트 설정을 위해 네트워크 전송으로 전환할 수 있습니다:
# Streamable HTTP (recommended for network access)
papermoon-mkdocs-mcp --transport streamable-http --host 0.0.0.0 --port 9000
# SSE (legacy client compatibility)
papermoon-mkdocs-mcp --transport sse --port 8080플래그 | 기본값 | 설명 |
|
|
|
|
| 바인드 주소 (네트워크 전송 전용) |
|
| 바인드 포트 (네트워크 전송 전용) |
보안 참고: 루프백이 아닌 주소에 바인딩할 때는 서버를 TLS를 종료하는 리버스 프록시(예: nginx, Caddy) 뒤에 배치하세요.
MCP 클라이언트 구성
Claude Desktop
Claude Desktop 구성 파일에 추가:
{
"mcpServers": {
"mkdocs": {
"command": "papermoon-mkdocs-mcp",
"args": ["--config", "/path/to/mkdocs.yml"]
}
}
}참고: Claude Desktop이 명령을 찾지 못하는 경우(Failed to spawn process: No such file or directory), mkdocs-mcp 대신 실행 파일의 전체 경로를 사용하세요:
{
"mcpServers": {
"mkdocs": {
"command": "/path/to/.venv/bin/mkdocs-mcp",
"args": ["--config", "/path/to/mkdocs.yml"]
}
}
}이는 패키지가 가상 환경에 설치되어 있고 해당 bin/ 디렉터리가 Claude Desktop의 PATH에 없는 경우 흔히 발생합니다.
Claude Code / VS Code
프로젝트 루트의 .mcp.json에 추가:
{
"mcpServers": {
"mkdocs": {
"command": "papermoon-mkdocs-mcp",
"args": ["--config", "/path/to/mkdocs.yml"]
}
}
}사용 가능한 도구
search
키워드, 의미, 또는 하이브리드 검색으로 문서를 검색합니다.
매개변수 | 타입 | 기본값 | 설명 |
| str | (필수) | 검색 쿼리 문자열 |
| str |
|
|
| int |
| 반환할 최대 결과 수 (1--100) |
경로, 제목, 관련성 점수(0.0--1.0 정규화), 텍스트 스니펫과 함께 순위가 매겨진 결과를 반환합니다.
read_document
상대 경로로 문서 파일을 읽습니다.
매개변수 | 타입 | 기본값 | 설명 |
| str | (필수) | docs 디렉터리 기준 상대 경로 (예: |
마크다운 본문(frontmatter 제거), 별도 필드로 파싱된 frontmatter, 제목 구조, 파일 메타데이터를 반환합니다.
list_documents
모든 문서 파일을 나열하며, 선택적으로 섹션으로 필터링합니다.
매개변수 | 타입 | 기본값 | 설명 |
| str 또는 null |
| 필터링할 디렉터리 접두사 (예: |
문서 메타데이터(경로, 제목, 설명, 카테고리, 크기, 수정 시간)를 반환합니다.
get_project_info
MkDocs 프로젝트 메타데이터를 가져옵니다. 매개변수를 받지 않습니다.
사이트 이름, 사이트 URL, docs 디렉터리, 테마, 내비게이션 트리, 문서 수, 인덱스 상태를 반환합니다.
get_document_outline
문서의 제목 구조(목차)를 가져옵니다.
매개변수 | 타입 | 기본값 | 설명 |
| str | (필수) | docs 디렉터리 기준 상대 경로 (예: |
문서 제목과 레벨, 텍스트, 앵커가 포함된 제목 목록을 반환합니다.
문서 제외
일부 마크다운 파일은 MCP를 통해 노출할 가치가 없습니다 -- 초안, 내부 런북, 생성된 임시 파일 등. mkdocs.yml에 mcp_exclude 목록을 추가하세요:
site_name: My Docs
mcp_exclude:
- drafts/ # any directory named 'drafts', at any depth
- internal/** # anchored: only 'internal/' at the docs root
- "*-scratch.md" # by filename suffix, at any depth
- "!internal/public.md" # re-include one file from a broader rule제외는 모든 곳에 동시에 적용됩니다. 제외된 문서는 내비게이션 트리에 없고, 검색 인덱스에 들어가지 않으며, list_documents에 나타나지 않고, read_document 및 get_document_outline에서 거부됩니다 -- 거부 응답은 존재하지 않는 파일에 대한 응답과 동일하므로 문서가 존재한다는 사실을 드러내지 않습니다.
mcp_exclude는 이 MCP 서버에만 영향을 줍니다. mkdocs build가 게시하는 내용은 변경하지 않습니다.
패턴 구문
패턴은 gitignore 스타일이며 docs_dir 기준 문서 경로와 일치합니다.
패턴 | 일치 항목 |
|
|
| docs 루트의 |
| 루트 레벨 |
| 모든 깊이에서 |
|
|
|
|
|
|
| 문자 클래스 |
| 이전 패턴이 제외한 경로를 다시 포함 |
/를 포함하는 패턴은docs_dir에 고정됩니다./가 없으면 모든 깊이에서 일치합니다.끝에
/가 있으면 패턴이 디렉터리로 제한되므로drafts/는drafts.md라는 파일을 숨기지 않습니다.규칙은 순서대로 평가되며 마지막으로 일치하는 규칙이 결정하므로
!재포함 규칙은 해당 규칙을 제외하는 규칙 뒤에 배치하세요.빈 줄과
#주석은 무시됩니다.
새로 제외된 파일은 다음 실행 시 인덱스에서 제거되고, 패턴을 제거하면 다시 포함됩니다 -- .mkdocs-mcp.db를 삭제할 필요가 없습니다.
아키텍처
src/mkdocs_mcp/
config.py -- MkDocs config detection and nav parsing
exclusions.py -- mcp_exclude pattern matching
repository.py -- SQLite schema and CRUD operations
indexer.py -- Index orchestration with incremental updates
searcher.py -- Keyword, vector, and hybrid search
server.py -- FastMCP server with 5 tool definitions
utils.py -- Path validation, frontmatter parsing, text extraction
models.py -- Pydantic response models시작 시 서버는 mkdocs.yml을 읽고, docs 디렉터리를 스캔하며, SQLite FTS5 인덱스를 구축(또는 증분 업데이트)합니다. 검색 쿼리는 인덱스를 직접 조회합니다. 벡터 검색은 all-MiniLM-L6-v2로 쿼리를 임베딩하고 저장된 문서 임베딩과 비교합니다. 하이브리드 모드는 Reciprocal Rank Fusion을 사용하여 두 결과 목록을 융합합니다.
개발
git clone https://github.com/aspect-build/mkdocs-mcp.git
cd mkdocs-mcp
pip install -e ".[dev]"
pytest린트 및 타입 검사:
ruff check .
mypy src/요구 사항
Python >= 3.10
필수: fastmcp (>=3.0, <4), pydantic (>=2.0, <3), pyyaml (>=6.0), markdown (>=3.4)
선택 (벡터 검색): sentence-transformers (>=3.0), numpy (>=1.24)
라이선스
자세한 내용은 LICENSE를 참조하세요.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only MCP server for the OrchestKit docs: full-text search + Markdown fetch. No auth.
Query any docs site via MCP. Submit a URL, ask questions, get cited answers.
Team docs served to AI agents over MCP - search, Markdown reads, version pinning, read audit.
Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables interaction with MkDocs documentation through the MCP protocol, allowing AI assistants to read, search, and retrieve documentation content from MkDocs projects.9MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to access and read mdbook documentation, including structure, content, and search.203MIT
- AlicenseNot gradedqualityDmaintenanceProvides semantic search over markdown documentation using RAG, allowing natural language queries and integration with MCP clients.1MIT
- FlicenseAqualityDmaintenanceEnables searching documentation from GitHub repositories and web pages via MCP tools, with in-memory indexing and caching for fast retrieval.3-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/papermoonio/mkdocs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server