An MCP server that provides tools to query and modify Wikidocs book and blog content, including page management, search, caching, and image uploads.
This server provides 16 tools with consistent naming and generally acceptable descriptions. Most tools follow verb_noun conventions (get_, create_, update_, list_, search_). However, there are significant gaps in schema completeness, parameter descriptions are often minimal, output schemas are not explicitly documented, and error handling lacks recovery guidance. The codebase shows proper tool registration via fastmcp decorators with descriptions, but parameter type information is embedded in Python function signatures rather than exposed in explicit JSON Schema objects that an LLM client can inspect. Tool naming is clear and task-focused, but several parameter descriptions are too brief (e.g., 'page 번호 (기본값: 1)' lacks context on valid ranges or when pagination is needed). No tool has explicit destructiveHint or readOnlyHint annotations despite clear operational differences between read and write tools.
새 블로그 포스트를 생성합니다. 제목(title), 내용(content)은 필수이며, 공개 여부(is_public)와 태그(tags)는 옵션입니다.
책(book_id)에 속하는 새 페이지를 생성합니다. 제목(subject), 내용(content)은 필수이며, 상위 페이지 ID(parent_id)와 공개 여부(open_yn)는 옵션입니다.
블로그 포스트 목록을 페이지별로 조회합니다. page 번호를 지정할 수 있습니다 (기본값: 1).
특정 블로그 포스트 ID의 내용을 조회합니다.
블로그 프로필 정보를 조회합니다.
특정 책의 기본 정보(제목, 요약, 페이지 수)와 모든 페이지 데이터를 조회합니다. 항상 최신 데이터를 가져오려고 시도하며, API 요청이 실패할 경우에만 캐시를 사용합니다. 이후 검색이나 구조 분석 도구를 사용하기 위해 필요한 첫 번째 단계입니다.
Output schemas are not explicitly documented. Tools return Dict[str, Any] with no schema declaration visible to MCP clients. LLMs cannot predict response structure for downstream tool chaining.
Parameter descriptions are minimal or absent in the schema view. E.g., 'page 번호 (기본값: 1)' lacks context on valid range, or whether page numbering starts at 0 or 1. Descriptions like '블로그 ID' (blog ID) are too terse, no guidance on when it's needed or how to obtain it.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 50 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 53 | - | v1 |
책의 목차 구조를 간단히 요약합니다. 대량의 페이지가 있는 책에서 전체 구조를 파악할 때 유용합니다.
책 캐시 상태를 확인합니다. 어떤 책이 캐시되어 있는지, 언제 캐시되었는지 확인할 수 있습니다.
주어진 페이지 ID로 페이지를 조회합니다.
위키독스 책 페이지 작성을 위한 마크다운 포매팅 가이드를 조회합니다. 책 페이지를 생성하거나 수정하기 전에 이 가이드를 참조하세요.
사용자 본인이 작성한 모든 위키독스 책 목록을 조회합니다.
책의 페이지에서 키워드를 검색합니다. 제목과 내용을 모두 검색하며, 관련도가 높은 순으로 결과를 반환합니다.
기존 블로그 포스트를 수정합니다. 블로그 ID(blog_id), 제목(title), 내용(content), 공개 여부(is_public), 태그(tags)를 지정할 수 있습니다.
위키독스 페이지를 수정합니다. `page_id`는 필수입니다. 제목(`subject`), 내용(`content`), 부모 페이지 ID(`parent_id`), 또는 공개 여부(`open_yn`, Y 또는 N) 중 하나 이상을 반드시 전달해야 합니다. `old_str`/`new_str` 매개변수는 지원되지 않습니다. 전체 `content`를 전달하세요. 생략된 필드는 서버에 저장된 기존 값을 그대로 사용하게 됩니다.
블로그용 이미지를 업로드합니다. blog_id와 이미지 파일 경로(file_path)가 필요합니다.
페이지용 이미지를 업로드합니다. page_id와 이미지 파일 경로(file_path)가 필요합니다.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Tools like create_blog_post and update_blog_post are clearly destructive, but MCP clients have no machine-readable signal. Pattern:tool-annotation compliance is absent.
Error handling lacks recovery guidance. Tools return generic error dicts like {"error": "...", "message": "..."} with no actionable next steps. E.g., if get_book_info fails due to invalid book_id, there is no suggestion to call list_my_books() first.
Numeric parameter constraints not specified. E.g., search_book_pages max_results=20 defaults without stating min/max bounds (1-1000?). get_blog_list page parameter has no constraint on valid page numbers. LLMs may pass absurd values.
No pagination guidance for list-like tools. get_blog_list and list_my_books do not document total_count or next_page in response, LLMs cannot determine if there are more results or how to paginate through large datasets.
File upload tools (upload_blog_image, upload_page_image) accept file_path as a string parameter with minimal validation context. No guidance on file size limits, supported formats, or path handling (absolute vs relative, security checks for path traversal).