Backlog Remote MCP Server
Backlog Remote MCP Server
Ein Remote-MCP-Server (Model Context Protocol) für Backlog. Auf Cloudflare Workers oder AWS bereitstellbar.
Englisch | 日本語
Funktionen
Multi-Space – mehrere Backlog-Spaces über einen Server bedienen
Read-only-Schutz – einen geteilten Space als
readOnlymarkieren, um jeden Schreib-API-Aufruf abzulehnenOAuth 2.1 + PKCE – unterstützt Dynamic Client Registration (DCR), sodass sich MCP-Clients direkt verbinden können
E-Mail-Allowlist – schränkt ein, wer den Server verwenden darf
Zwei Laufzeitumgebungen – dieselbe Geschäftslogik läuft auf Cloudflare oder AWS
Related MCP server: backlog-mcp-server
Auswahl einer Bereitstellung
Cloudflare Workers | AWS | |
Laufzeit | Workers (Edge) | Lambda + API Gateway HTTP API |
MCP-Sitzung | Durable Objects | Zustandslos |
OAuth-Autorisierungsserver |
| MCP SDK |
Upstream-IdP | Cloudflare Access | Amazon Cognito |
Zustandspeicher | Workers KV | DynamoDB (TTL) |
Secrets | Workers Secrets | Secrets Manager |
IaC | wrangler | AWS SAM |
Konfigdatei |
|
|
Die Tools und ihr Verhalten sind auf beiden Plattformen identisch.
Geschätzte Kosten
Hinweis Hierbei handelt es sich nur um Referenzwerte. Die tatsächlichen Kosten variieren je nach Region, Nutzung und Preisänderungen. Für eine echte Schätzung verwenden Sie die offiziellen Rechner.
Annahmen
Privater Gebrauch oder ein kleines Team.
Eintrag | Annahme |
Benutzer | 1–5 |
Unabhängig | ~3.000 / Monat |
Backlog-Spaces | 3 |
Log-Aufbewahrung | 30 Tage |
Fixkosten (auch bei Nicht genutzt werden)
Cloudflare | AWS | |
Laufzeit | $0 (Free-Plan funktioniert) | $0 |
Auth-Plattform | $0 (Zero Trust free bis 50 Nutzer) | $0 (innerhalb des Cognito-Freikontingents) |
Secrets | $0 (Workers Secrets kostenlos) | ~$0.80 (2 Secrets in Secrets Manager) |
Zertifikate | $0 | $0 (öffentliche ACM-Zertifikate kostenlos) |
Gesamt | $0 | ~$1/Monat |
Auf AWS besteht die Fixkosten ist im Wesentlichen nur das Secrets Manager, das pro Secret und Monat berechnet wird, unabhängig davon, ob es verwendet wird. Cloudflare hat keine Festkosten, weil Workers Secrets kostenlos sind.
Was abgerechnet wird
Posten | Cloudflare | AWS |
Anfragen | Workers | Lambda + API Hub-Gateway |
Zustandspeicher | Durable Objects + KV | DynamoDB |
Logs | Workers-Logs | CloudWatch-Logs |
Bei der angenommenen Menge (~3.000 Anfragen/Monat) ** bleiben beide innerhalb der Source Freikontingente**. Das API Gateway HTTP API hat kein dauerhaftes kostenloses Kontingent, daher fallen bei AWS geringe Kosten proportional zur Anfragenzahl an (etwa $1 pro Million Anfragen).
Wichtige Grenzwerte
Cloudflare – die 50-Nutzer-Grenze bei Zero Trust
Zero Trust (Access) ist für bis zu 50 Benutzer kostenlos. Pripped danach wechseln Sie zu einem kostenpflichtigen Plan mit Abrechnung pro Benutzer und Monat. Das ist die Kostenposition, die mit dem number of growth steigt.
Cloudflare – Grenzen des Workers Free Plan
Dieses Projekt verwendet SQLite-basierten Durable Objects, die im Workers Free Plan verfügbar sind. Der Free Plan begrenzt die Anzahl der täglichen Anfragen und andere Nutzung; wird eine Grenze überschritten, upon Fehler zurückgegeben. Für langfristige Nutzung z deem Workers Paid Plan in Betracht (auch ab 5 $/Monat).
AWS – Das Lambda Free Tier ist dauerhaft
Lambda besitzt ein dauerhaftes Free Tier von 1M Anfragen und 400.000 GB-Sekunden pro Monat. API Gateway und Secrets Manager besitzen kein dauerhaftes Free Tier.
AWS – CloudWatch Logs
Logs werden nach Aufnahmevolumen abgerechnet. Diese Vorlage verwaltet die Aufbewahrung
explizit über LogRetentionDays (Standard 30), sodass Logs nicht unbegrenzt wachsen.
Zusammenfassung
Umfang | Cloudflare | AWS |
Privat | etwa 0 € | ~$1/Monat |
Dutzende Nutzer (≤50) | etwa $0–$5 | ~$1 bis einige $/Monat |
51+ Nutzer | Zero Trust wechselt zur Abrechnung pro Benutzer | hängt vom Cognito-MAU-Freikontingent ab |
** Für kleine Teams ist Cloudflare einfacher und hat keine Fixkosten.****AWS trägt die Fixkosten für Secrets Manager, lohnt sich aber, wenn Sie die Bereitstellung in eine bestehende AWS-Landschaft integrieren or Zugriffe über IAM steuern möchten.
Einrichtung
0. Voraussetzungen
Node.js 20 oder höher.
git clone <this-repo>
cd backlog-remote-mcp-server
npm installWeitere Tools hängen vom Programmziel ab:
Ziel | Voraussetzungen |
Cloudflare Workers | Cloudflare-Konto mit aktiviertem Workers, eigene Domain (optional) |
AWS | AWS-Konto, AWS CLI v2, AWS IMPORT CLI |
Reihenfolge
Backlog-API-Schlüssel und Space-Konfiguration – einteilend für beide Plattformen
Wählen Sie einein Gateway
Wählen Sie ein Auf einem-Standort
Wenn etwas schiefgeht
Die Fehlerbehebungssh-Verantwortenection ist am Ende eines Staubt Ein ges.
Architektur
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 ...Verzeichnisstruktur
Die Geschäftslogik ist von der Laufzeit-Verknüpfungen getrennt.
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 hängt nur von @modelcontextprotocol/sdk und zod ab und referenziert keine
laufzeitspezifische API. Eine weitere Plattform hinzuzufügen bedeutet, einen Adapter unter
src/platforms/ anzulegen und dieselben Tool-Implementierungen gemeinschaftlich zu nutzen.
Verbindung von MCP-Clients
Claude Desktop / Kiro / Cursor (über mcp-remote-Proxy)
{
"mcpServers": {
"backlog": {
"command": "npx",
"args": [
"mcp-remote",
"https://<MCP_HOSTNAME>/mcp"
]
}
}
}Bei der ersten Verbindung wird ein Browserfenster zur Authentifizierung geöffnet.
MCP Inspector (zum Testen)
npx @modelcontextprotocol/inspector@latestGeben Sie https://<MCP_HOSTNAME>/mcp in den Inspector ein und schließen Sie den OAuth-Ablauf über OAuth Settings ab.
Verwendung
Einen Space angeben
Alle Tools akzeptieren einen optionalen space-Parameter:
# Use default space
"Show me the issues for PROJECT-KEY"
# Specify a particular space
"List projects in the PERSONAL space"
→ space: "PERSONAL"Beispiele
# 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(...)Unter dem Menüpunkt
Kategorie | Tools |
Space | list_spaces, get_space, get_users, get_myself |
Project | get_project_list, get_project, add_project, update_project, delete_project, get_project_users |
Issue | get_issue, get_issues, count_issues, add_issue, update_issue, delete_issue, get_issue_comments, 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_repository, get_pull_requests, get_pull_request, add_pull_request, update_pull_request, get_pull_request_comments, add_pull_request_comment |
Benachrichtigung | get_notifications, get_notifications_count, reset_unread_notification_count, mark_notification_as_read |
add_* , update_* und delete_* sind Schreiboperationen. Aufrufe für einen Space mit readOnly: true
werden abgelehnt, noch sie die Backlog-API erreichen. Verwenden Sie list_spaces, um den
readOnly-Status jedes Spaces zu sehen.
Sicherheit
Authentifizierung: Cloudflare Access → Google / Microsoft Entra ID. Der Office- undeden-Ablauf ist completely managed da Cloudflare
Autorisierung:
ALLOWED_EMAILSstellt eine anwendungsweite E-Mail-Allowlist bereitDoppelte Absicherung: Access Policy (Cloudflare) + In-App-Allowlist (Worker)
API-Schlüssel-Schutz: Backlog-API-Schlüssel liegen in Cloudflare Secrets und werden niemals an Clients weitergegeben
unmittelbare Phonenunten: OAuth-Ablauf ist mit PKCE (S256) und CSRF-Tokens geschützt
MMetadata of behaviors: Dynamic Client Registration ist offen für alle, daher wird die Autorisierung durch einem Zustimmungsbildschirm abgesichert, der den Client und sein Redirect-Ziel benennt und eine durch CSRF geschützte Zustimmung erfordert. Zustimmungen werden auf Basis von
client_id+redirect_urigespeichert, sodass eine neue Registrierung mitte anderemredirect_urikeine frühere Zustimmung erben kannSchreibschritt: Spaces mit
readOnly: truelehnen jeden Nicht-GET-Aufruf ab. Die Prüfung ist in der API-Aufrufsschicht vonsrc/core/backlog-client.tseingebaut und hängt nicht von einer einzelnen Tool-Implementierung abKonfig globale: Alle umgebungspezifischen Werte sind in
.dev.vars(untracked). Das Repository entält nur Platzhalter
Sicherheitshinweise
ALLOWED_EMAILSist die effektive Autorisierungsgrenze für diesen Server. Es gibt keine Access-Anwendung auf Zonenebene vor dem Worker.npm run deployüberzeugt productionsecrets mit den Values from zu übersetzer. Wenn lokal und in production andere Werte needed, verwenden Siedeploy:no-secretsfür den Routinely Deployment and setzen Secrets explizit viasecrets:push.Ein Backlog-API-Schlüssel enthält die volle Berechtigung seines Besitzers. For Space, die keine Schreibvorgänge brauchen, you ein Lesen oder Schlüssel und setzen Sie
readOnly: true.
Lokale Entwicklung
Lokal wird die Cloudflare-Workers-Build (wrangler dev) verwendet. Weil die Geschäftslogik in src/core liegt, gilt das, was Sie hier the testing. wenn auch für das AWS-Deployment.
cp .dev.vars.example .dev.vars # fill in your values
npm run dev
# Server starts at http://localhost:8788/mcpwrangler dev emuliert KV and Durable Objects locally, es berührt also nie Cloudflare-Ressourcen.
Einrichtung prüfen
Führen Sie die komplette OAuth- und Tool-Call-Prüfung in einem einzigen Befehl aus:
npm run check:localEr führt Folgendes aus und öffnet dabei einen Browser, damits you sich mit Login anmelden können:
Abrufen der Metadaten des Authorization Servers
Dynamische Client-Registrierung
Genehmigung im Browser → IdP-Anmeldung
Token-Austausch mit PKCE
initialize/tools/listAufruf von
get_spaceund Anzeigen der echten Antwort von Backlog
Wenn tools/list nur access_denied zurückgibt, ist die E-Mail-Adresse, mit der Sie sich angemeldet haben, nicht in der Zulassungsliste.
Es funktioniert auch gegen einen bereitgestellten Endpunkt:
npm run check:local -- --base https://your-deployed-hostAusführen über HTTPS
Verwenden Sie dies, wenn der IdP eine http://-Redirect-URL nicht akzeptiert.
npm run dev:https
# Server starts at https://localhost:8788/mcp (self-signed certificate)Typprüfung und Tests
Die Typen sind pro Plattform aufgeteilt, sodass die missbräuchliche Verwendung eines Workers-Globals im AWS-Code (oder umgekehrt) ein Typfehler ist.
npm run type-check # both tsconfig.cloudflare.json and tsconfig.aws.json
npm test # runs all suites belowCommand | Abdeckung |
| OAuth-Authorization-Server-Logik (DCR, PKCE, Einmal-Tokens, Scopes, Widerruf) |
| Zustimmungsbildschirm (HTML-Escaping, signierte Cookies, CSRF, Genehmigungs-Gate) |
| TTL und Erneuerung der Client-Registrierung im DynamoDB-Store |
Keiner davon greift auf externe Dienste zu — DynamoDB und der vorgelagerte IdP sind gestubbt.
Konfigurationsdateien
Datei | Zweck | Git |
| Lokale Entwicklung + Cloudflare-Deployment | ignoriert |
| Vorlage für die obige Datei | versioniert |
| AWS-Deployment | ignoriert |
| Vorlage für die obige Datei | versioniert |
Siehe die Deployment-Anleitungen, um zu erfahren, wie Sie sie ausfüllen.
Lizenz
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