share-pages
share-pages
Markdown / HTML を短期間だけ共有するための、Node.js ローカル実装と Cloudflare Workers 実装です。MCPクライアントから共有ページの作成・一覧・削除を実行できます。
初期アイデアは TOKIUM Tech Blog の記事 に着想を得ています。
Features
Markdown / HTML のアップロード
ドラッグ&ドロップUI
一時共有URLの発行
Markdownレンダリング
HTMLのsandbox iframe表示
危険なHTML要素の除去
元ファイルのダウンロード
72時間の有効期限
期限切れページの閲覧時・定期削除
手動削除とページ一覧
ローカルJSON永続化
Cloudflare R2保存
Cloudflare Durable ObjectsによるMCP Streamable HTTPセッション管理
OAuth 2.0 / PKCE と Dynamic Client Registration
MCP tools:
share_markdownshare_htmllist_shared_pagesdelete_shared_page
Related MCP server: Remote MCP Server on Cloudflare
Requirements
Node.js 20+
npm
Cloudflareアダプターを使う場合: Wrangler 4+
Cloudflare版の本番利用にはR2、Durable Objects、OAuth用Secretが必要
Local Node.js server
npm ci
npm test
npm run check
npm startデフォルトでは http://127.0.0.1:8787 で起動し、データを data/pages.json に保存します。
SHARE_PAGES_DATA_DIR=/secure/path/share-pages-data npm startローカルのstdio MCPクライアントから使う場合:
SHARE_PAGES_URL=http://127.0.0.1:8787 npm run mcpHosted instance
運営者がホスティングしているHosted instanceを利用できます。
https://share-pages-production.pocky1111gm.workers.devGoogle OAuthによるログインが必要です。
Googleでメールアドレスが認証済みのアカウントであれば、メールアドレスのドメインを問わず利用できます。
共有ページは公開URLを知っている人が閲覧できます。
共有ページの有効期限は72時間です。
運営者はサービスの停止、データ削除、仕様変更を行う場合があります。
可用性やデータ保存を保証するサービスではありません。
機密情報、個人情報、認証情報、重要な業務データはアップロードしないでください。
利用者自身で管理したい場合は、以下のCloudflare Workers手順でセルフホストしてください。
Cloudflare Workers
Cloudflareへログインします。
npx wrangler@4.114.0 loginwrangler.jsoncの環境名、R2バケット名、SHARE_PAGES_ORIGINを自分の環境へ変更します。R2バケットを作成します。
npx wrangler@4.114.0 r2 bucket create YOUR_BUCKET_NAMEGitHub Actions用のCloudflare API Tokenを作成します。
Cloudflare Dashboardの次のページを開きます。
https://dash.cloudflare.com/profile/api-tokensCreate Tokenから、手動のR2 API Tokenではなく、Cloudflare Workers用のテンプレートを選択します。
Create Token
→ Edit Cloudflare Workersテンプレートが表示されない場合は、Custom tokenで次のAccount権限を設定します。
Account Settings: Read
Workers Scripts: Edit
Workers R2 Storage: EditDurable ObjectsはWorkerのデプロイとmigrationの一部として扱うため、別のDurable Objects用S3/R2 Tokenは作成しません。workers_dev: trueの構成ではZone Workers Routes権限も不要です。
Account Resourcesは対象のCloudflareアカウント1つだけに限定してください。All accountsは選択しないでください。CI専用Tokenには有効期限を設定し、定期的にローテーションしてください。
GitHubリポジトリのSecretへ登録します。Tokenの値はリポジトリへ書き込まず、GitHub Secretだけに保存します。
gh secret set CLOUDFLARE_API_TOKEN --repo YOUR_GITHUB_OWNER/share-pagesプロンプトにTokenを入力します。Tokenはチャット、Issue、ログ、READMEへ貼り付けないでください。
Google OAuthのSecretを設定します。値はリポジトリへ保存しません。
npx wrangler@4.114.0 secret put GOOGLE_CLIENT_ID --env staging
npx wrangler@4.114.0 secret put GOOGLE_CLIENT_SECRET --env staging
npx wrangler@4.114.0 secret put GOOGLE_ALLOWED_DOMAIN --env staging
npx wrangler@4.114.0 secret put MCP_OAUTH_SIGNING_SECRET --env stagingSHARE_API_TOKENを使う場合は、MCP OAuthの代わりにWorker APIを保護する用途として設定します。
Google OAuthのリダイレクトURIに登録します。
https://YOUR_WORKER_HOST/auth/callbackdry-run、テスト、デプロイを実行します。
npm run check
npm test
npx wrangler@4.114.0 deploy --env staging --dry-run
npx wrangler@4.114.0 deploy --env stagingCloudflare MCP
Cloudflare版のMCPエンドポイントは次の形式です。
https://YOUR_WORKER_HOST/mcpCursorなどのStreamable HTTPクライアントには、次のように登録します。
{
"mcpServers": {
"share-pages": {
"url": "https://YOUR_WORKER_HOST/mcp"
}
}
}MCPセッションはMcpAgentとDurable Objectsで保持されます。R2バケットは直接公開せず、Worker経由で配信してください。
Configuration
Cloudflare Secrets:
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET
GOOGLE_ALLOWED_DOMAIN
GOOGLE_ALLOWED_EMAIL
MCP_OAUTH_SIGNING_SECRET
SHARE_API_TOKEN公開リポジトリには値をコミットしないでください。サンプルは .env.example を参照してください。
Security notes
アップロード内容は信頼できない入力として扱ってください。
HTMLはsandbox iframeとサニタイズを使用しますが、重要な機密情報の共有には使わないでください。
共有URLを知っている人は、期限内であればページを閲覧できます。
本番で利用者を限定したい場合は、Google OAuthの許可ドメインまたはメールアドレスをSecretで追加設定してください。
R2バケットを公開設定にしないでください。
Secret、OAuthコード、トークン、個人データをIssue・ログ・PRへ貼り付けないでください。
詳細は SECURITY.md を参照してください。
Development
npm ci
npm run check
npm test
git diff --check貢献方法は CONTRIBUTING.md、ライセンスは LICENSE、依存ライセンスの概要は NOTICE を参照してください。
CI/CD
Pushes to main run tests and deploy the production Worker through GitHub Actions. Pull requests create an isolated staging Worker and add its Preview URL to the PR.
Current limitations
既定の期限は72時間です。
共有ページのURLを知っている利用者への細かなアクセス制御は提供していません。
OAuthのGoogle設定は利用者自身のCloudflare/Google Cloudプロジェクトが必要です。
Cloudflare版のMCPツールとローカルstdio MCPは別トランスポートです。
高トラフィック用途、監査ログ、利用者ごとの厳密なアクセス制御は未実装です。
License
MIT License. See LICENSE.
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.
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/takapi-s/share-pages'
If you have feedback or need assistance with the MCP directory API, please join our Discord server