shiyui-cosense-mcp
Provides read-only access to a Scrapbox (Cosense) project, enabling retrieval of pages, full-text search, semantic vector search, and related page discovery.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@shiyui-cosense-mcpsearch full text for 'OAuth setup'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
shiyui-cosense-mcp
https://scrapbox.io/shiyui 専用の Remote MCP Server。
Cosense Personal Access Token(PAT)を必須とし、Cloudflare Secret
COSENSE_PATに保存shiyui固定のCosense requestへx-personal-access-tokenを送信PATが未設定または空ならCosenseへ接続せず失敗
Public / Private pageを同じ認証経路で取得
MCPはCloudflare Access Managed OAuthで保護
6つのread toolと、用途を分けた4つのwrite toolを公開
writeは公式CLIと同じpage edit APIとreplace links APIを使用し、任意project、任意URL、cacheは持たない
Tools
Tool | 用途 |
| titleを指定して本文を取得 |
| 通常本文を全文検索 |
| titleと本文中link記法をsemantic検索 |
| 1-hop / 2-hopの関連pageを取得 |
| page metadataを一覧取得 |
| 1 pageの変更履歴を取得 |
| pageを新規作成 |
| 既存pageの末尾へtextを追記 |
| 既存pageの本文更新・タイトル変更 |
| project内の旧titleへのlinkを一括置換 |
project、origin、URL、HTTP header、credential、file pathはtool引数に含めない。
search_full_text、search_vector、get_related_pages の limit は1–100、既定値は20とする。list_pages の limit は1–1000、既定値は20で、sort と明示的な skip を受け取る。いずれも指定された範囲だけを取得し、自動paginationやpage detailのN+1取得は行わない。続きが必要な場合は、返されたcursorまたは nextSkip を指定して改めて呼ぶ。
get_page_changes は get_page が返す pageId と任意の commitId を受け取る。対象pageのcommitsとactor名解決用のproject usersを2 GETで並列取得し、他page、page本文、関連pageへ広げない。返却は最新100件の変更に限定し、変更前後のtextは各2000文字までとする。actorはnameだけを返し、email、user ID、line IDは返さない。
Write
write toolは、ユーザーの書き込み意思と対象が明確な場合に呼ぶ。依頼の範囲内でLLMが文章を整えて実行でき、生成した最終文字列の再提示と再承認は必須にしない。意図が曖昧な場合や依頼範囲を超える場合だけ確認する。
project固有の書き方・記法・編集方針の正本はCosenseの cosenseの書き方 とする。現在のcommit、page状態、既存の書式を判断するために必要な場合だけ get_page を使い、安全確認だけを目的とした一律のreadは要求しない。操作固有の削除・競合・再実行条件は各tool descriptionに置く。
create_pageは同名の実pageがある場合に失敗する。既存pageへの追記へ切り替えないappend_to_pageは対象の現在状態として取得済みのcommitIdをexpectedCommitIdとして必須にする。既知の結果がcurrentなら確認だけの再readは行わないupdate_pageも対象の現在状態を示すcommitIdを必須にし、title行を除く完成後の本文をbodyに指定する。bodyの省略は本文維持、空文字は本文全削除を表す。bodyを指定した場合、含めなかった既存行は削除される。任意のnewTitleでタイトルも変更できるreplace_linksはproject内の[title]、#title、[title.icon]を一括置換する。pageタイトルは変更せず、previewも行わない。独立したtoolとして影響範囲を分離するが、ユーザーがrenameとlink更新をまとめて依頼した場合は追加確認なしで続けて実行できるpage編集はpageが不存在、rename済み、または更新済みなら失敗する。競合時とsubmit結果が不明な場合は、最新pageを読んでから次の操作を判断する
create / appendのtextとupdateのbodyにはMCP独自の文字数・行数・change数上限を設けない。NULを拒否し、appendは空白だけのtextも拒否する
create / append / updateは1 call内で
page-edit-for-ai/previewとsubmitを各1回までとし、自動retryしないsubmit結果が不明な場合は同じwriteを再実行せず、先に
get_pageで反映状態を確認するタイトル変更だけの依頼からlink置換を推測しない。link更新も明確に依頼されている場合は、
update_pageが返した実際のtitleを使ってreplace_linksを続けて呼ぶreplace_linksの通信失敗または5xxは一部だけ反映済みの可能性がある。同じfromTitle/toTitleだけを再実行できる
preview ID、line ID、page ID、project、origin、credentialはwrite toolの引数に含めない。raw operationも公開しない。
Related MCP server: confluence-http-api-mcp
Requirements
Node.js 24.11以上
pnpm 11.16.0
Cloudflare Workers Free plan
Cloudflare Zero Trust Free plan
Cosense Personal Access Token
One-time PINを受信するemail address 1件
Install
pnpm install --frozen-lockfile
pnpm checkpnpm-workspace.yaml はdependencyのminimum release ageを7日に設定する。
Cosense PAT
PATは https://scrapbox.io/settings/personal-access-tokens で発行する。README、wrangler.jsonc、example file、Gitには保存しない。
localでは、Git管理外の .dev.vars を作成して実値を設定する。
cp .dev.vars.example .dev.varsCOSENSE_PAT=replace-with-personal-access-tokenCloudflareにはSecretとして登録する。
npx wrangler secret put COSENSE_PATPATが未設定または空の場合はfail closedとし、匿名requestへfallbackしない。Cosenseが 401 または 403 を返した場合は認証失敗として扱い、PAT、upstream response body、statusごとの意味をclientへ返さない。
Cloudflare Access
Cloudflare Zero TrustにOne-time PIN identity providerを追加する。
Workerの公開hostname全体を対象にSelf-hosted Access applicationを作成する。
Allow policyのIncludeを本人のemail 1件にし、利用可能なidentity providerをOne-time PINだけにする。
applicationでManaged OAuthとDynamic Client Registrationを有効にする。
DCRのredirect URIにChatGPT管理画面で表示されたcallback URIを登録する。
localhost clientとloopback clientを無効にする。
Application Audience tagとteam domainを
wrangler.jsoncに設定する。Preview URLは使用しない。
wrangler.jsoncでpreview_urls: falseを明示し、Cloudflare上でも無効になっていることを確認する。
{
"vars": {
"TEAM_DOMAIN": "https://<team>.cloudflareaccess.com",
"POLICY_AUD": "<application-audience-tag>"
}
}Access for SaaS application、OIDC client ID / secret、Worker callback、custom scopeは使用しない。
課金
Workers FreeとZero Trust Freeだけを使用し、有料planへupgradeしない
KV、Durable Objects、D1、R2、Queues、Workers AIは使用しない
readは1 tool callあたり最大2 request。page writeは最大4 request、
replace_linksは1 requestで、自動retryは行わないWorkers Freeの1日100,000 requestを超えた場合は処理が失敗し、従量課金には移行しない
Deploy
pnpm exec wrangler login
pnpm exec wrangler whoami
pnpm check
pnpm exec wrangler deploy --dry-run
pnpm run deployChatGPT Developer modeへ次を登録する。
https://<worker-origin>/mcp初回接続でOne-time PIN認証を行い、10 toolの一覧と1回のread callを確認する。writeの動作確認を行う場合は、対象と書き込み意思を明示して依頼する。
Data boundary
readはallowlist済みの
GET、page writeは対象確認用のGETとpreview / submitPOST、link置換は固定projectのreplace linksPOSTだけを使用し、すべてcache: "no-store"とする全Cosense requestへ
x-personal-access-tokenを付与し、Public / Privateで分岐しないMCP responseも
Cache-Control: no-storeresponseにemail、user ID、line ID、raw API responseを含めない。変更履歴のactorはnameだけを返す
list_pagesは1 GETだけとし、N+1取得、全件走査、自動paginationを行わないget_page_changesは対象pageのcommitsとactor名解決用usersの2 GETだけとし、他pageへ広げないtitle、query、pageId、commitId、cursorは500文字までとする。Workerの16 KiB URL境界を超えないための通信上の制約であり、page本文の利用制限ではない
writeは新規作成、末尾追記、完成形によるpage更新、link一括置換に限定し、同名存在またはcommit不一致から別操作へfallbackしない
自動retry、polling、background同期、事前indexを行わない
PAT、OAuth token、Access assertion、page本文、queryをlogしない
401/403はtokenとupstream bodyを含まない認証失敗として返すCosense internal APIとPAT headerの利用方法は予告なく変更される可能性がある
read調査の履歴は docs/research.md、writeの設計根拠は docs/write-design.md を参照する。
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only MCP server for the OrchestKit docs: full-text search + Markdown fetch. No auth.
Read-only MCP access to devplane.dev's public pages, FAQ corpus and comparisons.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
OAuth-protected, read-only-by-default MCP server for provenance-labeled QuillCaddie project memory.
Related MCP Servers
- AlicenseAqualityAmaintenanceThis server facilitates interaction with cosense/Scrapbox projects, enabling users to retrieve, list, search, and create pages while supporting various query operations and secure access to private projects.991 npm52MIT
- AlicenseAqualityDmaintenanceRead-only MCP server for self-hosted Confluence that lets AI agents search pages, fetch content, and navigate page trees via the REST API.52 npmMIT
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server for accessing GitBook content, including spaces, pages, and search, through AI assistants.175 npmMIT
- AlicenseNot gradedqualityBmaintenanceMCP server for a content-first knowledge base, enabling AI agents to search (full-text, semantic, hybrid) and retrieve Markdown documents, list content, and find related docs.7 npmMIT