Scrapbox API を操作するための MCP サーバー (MCP server for operating Scrapbox API)
This Scrapbox MCP server has well-structured tool definitions with proper naming conventions and clear descriptions. All 9 tools use action verbs (list_, get_, search_, create_, update_, insert_, delete_) following agentic patterns. Most parameter descriptions are present and constraints are defined (enums for sort, min/max for limits). However, several issues limit the score: (1) output schemas are not documented, the source shows input schemas via Zod but no output types are visible, (2) descriptions vary widely in quality and detail, (3) no visible error handling guidance or recovery paths, (4) no pagination documentation for list_pages despite accepting limit/skip parameters. Tools are properly registered in src/definitions/tools/index.ts with Zod-based input validation, which is solid. The codebase structure is clean and follows MCP SDK patterns.
新規ページを作成。既存ページの場合は全置換される。WebSocket API経由で即時作成。
ページを削除。SCRAPBOX_ENABLE_DELETE=true が必要。この操作は取り消せません。
指定ページへのバックリンク(被リンク)一覧を取得。
指定ページからのリンク先一覧を取得。
指定ページの内容を取得。Scrapbox記法のまま返却し、リンク先一覧とバックリンク情報も含む。
指定ページの指定行に新しい行を挿入。行番号を省略すると末尾に追記。WebSocket API経由で即時更新。
プロジェクト内の全ページ一覧を取得。ソート順やページネーションを指定可能。
キーワードでページを全文検索。最大100件の制限あり(API制限)。 検索構文: - 複数語句: スペース区切りでAND検索 - 除外検索: -word で除外 - フレーズ検索: "exact phrase" で囲む
No output schemas documented. While input schemas are defined via Zod (limit, skip, sort for list_pages; title for get_page, etc.), there is no visible documentation of what these tools return. LLMs cannot plan downstream calls or extract the right data without knowing response structure.
Pagination parameters (limit, skip) exist on list_pages but no documentation states the total count returned or whether more results are available. Without pagination metadata, LLMs cannot discover all pages if the count exceeds the limit.
No error handling guidance. Descriptions do not explain what errors might occur (e.g., 'page not found', 'invalid Scrapbox syntax', 'API rate limit exceeded') or what the LLM should do next. Error responses would be opaque without recovery instructions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 8 | 2025-06-18+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
既存ページを更新(全置換)。WebSocket API経由で即時更新。
delete_page description mentions 'SCRAPBOX_ENABLE_DELETE=true' as a prerequisite, but this is a server-side config detail that should not burden the tool description. The description should focus on what the tool does and warn that it is irreversible, not on environment setup.
get_links and get_backlinks have minimal descriptions (60 chars or less). They state WHAT ('list from page X') but not WHEN to use instead of the other or how they differ. LLM may conflate the two or call both unnecessarily.
insert_lines parameter 'lines' accepts both string and string array but the description does not clarify the difference in behavior or which is preferred. LLMs may pass the wrong type.