Skip to main content
Glama
Sigumaa

shiyui-cosense-mcp

by Sigumaa

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

用途

get_page

titleを指定して本文を取得

search_full_text

通常本文を全文検索

search_vector

titleと本文中link記法をsemantic検索

get_related_pages

1-hop / 2-hopの関連pageを取得

list_pages

page metadataを一覧取得

get_page_changes

1 pageの変更履歴を取得

create_page

pageを新規作成

append_to_page

既存pageの末尾へtextを追記

update_page

既存pageの本文更新・タイトル変更

replace_links

project内の旧titleへのlinkを一括置換

project、origin、URL、HTTP header、credential、file pathはtool引数に含めない。

search_full_textsearch_vectorget_related_pageslimit は1–100、既定値は20とする。list_pageslimit は1–1000、既定値は20で、sort と明示的な skip を受け取る。いずれも指定された範囲だけを取得し、自動paginationやpage detailのN+1取得は行わない。続きが必要な場合は、返されたcursorまたは nextSkip を指定して改めて呼ぶ。

get_page_changesget_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 は対象の現在状態として取得済みの commitIdexpectedCommitId として必須にする。既知の結果が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/previewsubmit を各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 check

pnpm-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.vars
COSENSE_PAT=replace-with-personal-access-token

CloudflareにはSecretとして登録する。

npx wrangler secret put COSENSE_PAT

PATが未設定または空の場合はfail closedとし、匿名requestへfallbackしない。Cosenseが 401 または 403 を返した場合は認証失敗として扱い、PAT、upstream response body、statusごとの意味をclientへ返さない。

Cloudflare Access

  1. Cloudflare Zero TrustにOne-time PIN identity providerを追加する。

  2. Workerの公開hostname全体を対象にSelf-hosted Access applicationを作成する。

  3. Allow policyのIncludeを本人のemail 1件にし、利用可能なidentity providerをOne-time PINだけにする。

  4. applicationでManaged OAuthとDynamic Client Registrationを有効にする。

  5. DCRのredirect URIにChatGPT管理画面で表示されたcallback URIを登録する。

  6. localhost clientとloopback clientを無効にする。

  7. Application Audience tagとteam domainを wrangler.jsonc に設定する。

  8. Preview URLは使用しない。wrangler.jsoncpreview_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 deploy

ChatGPT Developer modeへ次を登録する。

https://<worker-origin>/mcp

初回接続でOne-time PIN認証を行い、10 toolの一覧と1回のread callを確認する。writeの動作確認を行う場合は、対象と書き込み意思を明示して依頼する。

Data boundary

  • readはallowlist済みの GET、page writeは対象確認用の GET とpreview / submit POST、link置換は固定projectのreplace links POSTだけを使用し、すべて cache: "no-store" とする

  • 全Cosense requestへ x-personal-access-token を付与し、Public / Privateで分岐しない

  • MCP responseも Cache-Control: no-store

  • responseに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 を参照する。

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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/Sigumaa/shiyui-cosense-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server