Backlog Remote MCP Server
Backlog Remote MCP Server
Backlog 用のリモート MCP (Model Context Protocol) サーバー。 Cloudflare Workers または AWS のどちらにもデプロイできます。
英語 | 日本語
特徴
マルチスペース — 1 つのサーバーで複数の Backlog スペースを提供
読み取り専用ガード — 共有スペースを
readOnlyにすることで、すべての書き込み API 呼び出しを拒否OAuth 2.1 + PKCE — Dynamic Client Registration (DCR) に対応しており、MCP クライアントが直接接続可能
メール許可リスト — サーバーを利用できるユーザーを制限
2 つのランタイム — 同じビジネスロジックが Cloudflare または AWS で動作
Related MCP server: backlog-mcp-server
デプロイ先の選択
Cloudflare Workers | AWS | |
ランタイム | Workers (エッジ) | Lambda + API Gateway HTTP API |
MCP セッション | Durable Objects | ステートレス |
OAuth 認証サーバー |
| MCP SDK |
上位 IdP | Cloudflare Access | Amazon Cognito |
状態の保存 | Workers KV | DynamoDB (TTL) |
シークレット | Workers Secrets | Secrets Manager |
IaC | wrangler | AWS SAM |
設定ファイル |
|
|
ツールとその動作は両方で同じです。
推定コスト
注記 これらは参考値です。 実際の費用はリージョン、利用状況、料金の変更によって変動します。実際の見積りには公式の計算ツールをご利用ください。
前提条件
個人利用または小規模なチームを想定しています。
項目 | 想定 |
ユーザー数 | 1 〜 5 |
MCP リクエスト数 | 月あたり約 3,000 |
Backlog スペース | 3 |
ログの保存期間 | 30 日 |
固定費用 (アイドル状態でも発生)
Cloudflare | AWS | |
ランタイム | $0 (無料版で動作) | $0 |
認証プラットフォーム | $0 (Zero Trust はユーザー 50 人まで無料) | $0 (Cognito の無料枠内) |
シークレット | $0 (Workers Secrets は無料) | 約 $0.80 (Secrets Manager のシークレット 2 つ) |
証明書 | $0 | $0 (公開 ACM 証明書は無料) |
合計 | $0 | **約 月/月 |
AWS では固定コストは実質的に Secrets Manager のみです。 Secrets Manager は使用の有無にかかわらず、シークレットごとに毎月請求されます。Cloudflare では Workers Secrets が無料のため固定コストはありません。
メーター制の費用
Cloudflare | AWS | |
リクエスト数 | Workers | Lambda + API Gateway |
状態の保存 | Durable Objects + KV | DynamoDB |
ログ | Workers Logs | CloudWatch Logs |
想定されるボリューム (月約 3,000 リクエスト) では、どちらも無料の許容範囲内に収まります。API Gateway HTTP API には恒久的な無料枠がないため、AWS では リクエスト数に比例した少額 (100 万リクエストあたり約 $1) が発生します。
知っておくべきしきい値
Cloudflare — Zero Trust の 50 ユーザーライン
Zero Trust (Access) は ユーザー 50 人まで無料です。それを超えると有料プランに移行し、ユーザーごと・月ごとに請求されます。これは支払金額がユーザー数に比例します。
Cloudflare — Workers 無料版の制限
このプロジェクトでは SQLite バックアップ Durable Objects を利用しており、これは Workers 無料プランで利用可能 です。無料プランでは1日あたりのリクエスト数やその他の使用量に制限があり、上限を超過するとエラーが発生します。継続的な利用には. Workers Paid (月額 $5 から) をご検討ください。
AWS — Lambda の恒常的な無料枠
Lambda には月間 100 万リクエストと 400,000GB 秒の無料枠が含まれます。API Gateway と Secrets Manager には恒久的な無料枠はありません。
AWS — CloudWatch Logs
ログはがイレストの量に応じて課金されます。テンプレートは LogRetentionDays (既定 30 日) で保存期間を設定し、ログが際限なく累積しないようにしています。
まとめ
規模 | Cloudflare | AWS |
個人利用 | ほぼ $0 | 約 $1/月 |
数十人 (50 人以下) | ほぼるか $0 〜 $5 | $1〜数ドル/月 |
51 人以上 | Zero Trust が利用者ごとの課金に切り替わる | Cognito の MAU 無料枠に依存 |
小規模な小チームでは Cloudflare が低額で固定コストがありません。 AWS では Secrets Manager の固定コストが発生しますが、既存の AWS 環境へ統合したり、「IAM」によるアクセス管理を検討している場合は、その旨を考慮して決めてください。
セットアップ
0. 前提条件
Node.js 20 以降。
git clone <this-repo>
cd backlog-remote-mcp-server
npm install追加のツールはデプロイターゲットによって異なります。
ターゲット | 前提条件 |
Cloudflare Workers | Workers が有効な Cloudflare アカウント、カスタムドメイン (任意) |
AWS | AWS アカウント、AWS CLI v2、AWS SAM CLI |
実行順序
Backlog API キーとスペース設定 — 両プラットフォーム共通
ID プロバイダを選択
デプロイターゲットを選択
問題が発生した場合
トラブルシューティングの節は、各デプロイガイドの末尾にあります。
アーキテクチャ
MCP client (Claude, Kiro, Cursor, ...)
↓ Streamable HTTP + OAuth
Runtime (Cloudflare Workers or AWS Lambda)
↓ Upstream IdP (Cloudflare Access or Amazon Cognito)
↓ Email allowlist check
↓ Backlog API key routing
Backlog space A / B / C ...ディレクトリ構成
ビジネスロジックはランタイムコードから分離されています。
src/
core/ Runtime-independent
backlog-client.ts Backlog API client (including the readOnly guard)
tools/ 40 MCP tools
create-server.ts MCP server assembly and authorization
platforms/
cloudflare/ Cloudflare Workers wiring
aws/ AWS Lambda wiring
infra/
aws/ SAM template and parameterssrc/core は @modelcontextprotocol/sdk と zod にのみ依存し、ランタイム固有の API を参照しません。プラットフォームを追加するには、src/platforms/ 以下にアダプターを追加すれば、同じツール実装を共有できます。
MCP クライアントから接続
Claude Desktop / Kiro / Cursor (mcp-remote 経由)
{
"mcpServers": {
"backlog": {
"command": "npx",
"args": [
"mcp-remote",
"https://<MCP_HOSTNAME>/mcp"
]
}
}
}初回の接続時に、ブラウザウィンドウが開いて認証されます。
MCP Inspector (テスト用)
npx @modelcontextprotocol/inspector@latesthttps://<MCP_HOSTNAME>/mcp を inspector に入力し、OAuth 設定を完了します。
使用法
スペースの指定
すべてのツールはオプションの space パラメータを受け付けます。
# Use default space
"Show me the issues for PROJECT-KEY"
# Specify a particular space
"List projects in the PERSONAL space"
→ space: "PERSONAL"例
# List configured spaces
"What Backlog spaces are available?" → list_spaces
# List projects
"Show COMPANY_A projects" → get_project_list(space: "COMPANY_A")
# Create an issue
"Create a new bug issue in PROJECT-KEY" → add_issue(...)
# List pull requests
"Show open PRs in repo-name" → get_pull_requests(...)利用可能なツール
カテゴリ | ツール |
スペース | list_spaces, get_space, get_users, get_myself |
プロジェクト | get_project_list, get_project, add_project, update_project, delete_project, get_project_users |
課題 | get_issue, get_issues, count_issues, add_issue, update_issue, delete_issue, get_issue_notifications, add_issue_comment, get_priorities, get_issue_types, get_categories, get_version_milestones, add_version_milestone, get_resolutions |
Wiki | get_wiki_pages, get_wikis_count, get_wiki, add_wiki |
Git | get_git_repositories, get_git_repository, get_pull_requests, get_pull_request, add_pull_request, update_pull_request, get_pull_request_comments, add_pull_request_comment |
通知 | get_notifications, get_notifications_count, reset_unread_notification_count, mark_notification_as_read |
add_*、update_*、delete_* は書き込み操作です。readOnly が true に設定されたスペースに対して呼び出すと、Backlog API にリクエストを送る前に拒否されます。list_spaces で各スペースの readOnly 状態を確認できます。
セキュリティ
認証: Cloudflare Access → Google / Microsoft Entra ID。OAuth フロー全体を Cloudflare が管理します
承認:
ALLOWED_EMAILSでアプリケーション層のメール許可リストを提供しますダブルチェック: アクセスポリシー (Cloudflare 側) + アプリ内の許可リスト (Worker 側)
API キーの保護: Backlog の API キーは Cloudflare, ≪≫に保存され、クライアントに公開されません
PKCE + CSRF : OAuth フローは PKCE (S256) と CSRF トークンで保護されています
クライアント同意: Dynamic Client Registration は誰でも開かれているため、認可はクライアントとリダイレクト先を示し、CSRF で保護された同意画面で制御されます。承認は
client_idとredirect_uriをキーとして行われるため、異なるリダイレクト先での再登録では既存の承認を引き継ぐことはできません書き込みガード:
readOnly: trueのスペースは、GET 以外のすべての呼び出しを拒否します。チェックはsrc/core/backlog-client.tsの API 呼び出し層にあり、個々のツール実装には依存しません設定の隔離: すべての環境固有値を
.dev.vars(非追跡) に格納します。リポジトリにはプレースホルダのみ含まれます
運営上の留意点
ALLOWED_EMAILSはこのサーバーでの実質的な承認境界となります。Worker 前面にはゾーンレベルでの Access アプリケーションはありませんnpm run deployは.dev.varsの値を本番シークレットに上書きします。ローカルと本番で値が異なる場合は、通常のデプロイにはdeploy:no-secretsを使い、シークレットはsecrets:pushで明示的に更新しますBacklog の API キーは、その所有者の完全な権限を持ちます。書き込み不要なスペースには、読み取り専用のキーを発行し、かつ
readOnly: trueを設定してください
ローカル開発
ローカル実行には Cloudflare Workers ビルド (wrangler dev) を使用します。ビジネスロジックは src/core に存在するため、ここで検証した内容は AWS デプロイでも同様です。
cp .dev.vars.example .dev.vars # fill in your values
npm run dev
# Server starts at http://localhost:8788/mcpwrangler dev はローカルで KV と Durable Objects をエミュレートするため、実際の Cloudflare リソースには一切触れません。
設定の確認
完全な OAuth からツール呼び出し (tool call) までを 1 コマンドで確認するには:
npm run check:localこれにより以下の操作が実行され、途中でブラウが開きログインできます。
認証サーバーのメタデータを取得する
動的クライアント登録
ブラウザで承認 → IdP ログイン
PKCE でのトークン交換
initialize/tools/listget_spaceを呼び出し、Backlog から実際のレスポンスを表示する
tools/list が access_denied のみを返す場合、ログインに使用したメールは許可リストに含まれていません。
デプロイ済みエンドポイントでも動作します。
npm run check:local -- --base https://your-deployed-hostHTTPS 経由での実行
IdP が http:// リダイレクト URL を受け入れない場合に使用します。
npm run dev:https
# Server starts at https://localhost:8788/mcp (self-signed certificate)型チェックとテスト
型はプラットフォームごとに分離されているため、AWS コードで Workers グローバルを誤って使用する(またはその逆)と型エラーになります。
npm run type-check # both tsconfig.cloudflare.json and tsconfig.aws.json
npm test # runs all suites belowコマンド | 対象範囲 |
| OAuth 認可サーバーのロジック(DCR、PKCE、使い捨てトークン、スコープ、失効) |
| 同意画面(HTML エスケープ、署名付き Cookie、CSRF、承認ゲート) |
| DynamoDB ストアのクライアント登録 TTL と更新 |
いずれも外部サービスにはアクセスしません。DynamoDB と接続先 IdP はスタブされます。
設定ファイル
ファイル | 目的 | Git |
| ローカル開発 + Cloudflare デプロイ | 無視 |
| 上記のテンプレート | コミット済み |
| AWS デプロイ | 無視 |
| 上記のテンプレート | コミット済み |
各ファイルへの入力方法の詳細は、デプロイガイドを参照してください。
ライセンス
MIT
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.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to interact with Bitbucket Cloud repositories, allowing users to manage pull requests, comments, tasks, and branches through natural language commands.4,1381MIT
- AlicenseBqualityDmaintenanceEnables interaction with Backlog project management tools, allowing users to manage projects, issues, and wikis through natural language.1233,209MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Atlassian Cloud APIs for Confluence and Jira, supporting document management, search, issue tracking, and sprint operations through natural language.2MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to interact with Atlassian Cloud (Jira, Confluence, Bitbucket) through natural language, providing CRUD operations for issues, pages, pull requests, and more.8620MIT
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Connect AI assistants to Stellary projects, boards, documents, and governed agent workflows.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
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/midnight480/backlog-remote-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server