Skip to main content
Glama
ogatomo21

cosense-mcp-worker

by ogatomo21

cosense-mcp-worker

Ein zustandsloser Remote-MCP-Server zur Bedienung eines einzelnen Cosense-Projekts (ehemals Scrapbox). Er läuft auf Cloudflare Workers, nutzt Hono für das HTTP-Routing und für MCP den createMcpHandler() von Cloudflare Agents sowie das MCP SDK v2. Die OAuth-Implementierung liegt nicht im Worker, sondern wird an Cloudflare Access Managed OAuth delegiert.

Ein Worker ist an genau ein Cosense-Projekt und eine connect.sid gebunden. Über die Argumente der MCP-Tools können keine anderen Projekte oder Anmeldeinformationen angegeben oder geändert werden.

Ein-Klick-Bereitstellung auf Cloudflare

Deploy to Cloudflare

Über diese Schaltfläche können Benutzer einen Worker in ihrem eigenen Cloudflare-Konto erstellen, bauen und bereitstellen. Im Einrichtungsbildschirm werden der Workername sowie COSENSE_PROJECT_NAME, CF_ACCESS_TEAM_DOMAIN, CF_ACCESS_AUD und das Secret COSENSE_SID eingegeben.

Die Erstellung der Cloudflare-Access-Anwendung, die Aktivierung von Managed OAuth und die Konfiguration der Zugriffsrichtlinie müssen vom Benutzer nach der Bereitstellung selbst durchgeführt werden.

Bereitgestellte Endpunkte

Endpunkt

Beschreibung

GET /

Gibt eine Dienstübersicht zurück. Gibt weder Projektname noch Geheimnisse preis.

GET /health

Health-Check ohne Authentifizierung.

ALL /mcp

Durch Cloudflare Access geschützter Streamable-HTTP-MCP-Endpunkt.

MCP-Tools

Tool

Eingabe

Beschreibung

get_page

title

Ruft den Seitentext, direkte Links, verwandte Seiten mit 1-Hop- und 2-Hop-Verbindung sowie externe und projektfremde Links ab.

list_pages

Keine

Ruft bis zu 100 Seiten nach Änderungsdatum sortiert mit Beschreibung und Änderungsdatum ab.

search_pages

query

Führt eine Cosense-Volltextsuche im konfigurierten Projekt durch.

insert_lines

title, targetLineText, text

Fügt nach der ersten exakt übereinstimmenden Zeile ein. Wenn keine Übereinstimmung gefunden wird, wird am Ende angehängt. text kann Zeilenumbrüche enthalten.

Lokale Einrichtung

Erforderlich sind Node.js 20 oder höher, Corepack, ein Cloudflare-Konto mit Cloudflare-Zero-Trust-Zugang und eine Sitzungs-ID mit Berechtigungen für das Ziel-Cosense-Projekt.

git clone <リポジトリURL> cosense-mcp-worker
cd cosense-mcp-worker
corepack enable
pnpm install

Nicht geheime Werte werden in wrangler.jsonc konfiguriert.

"vars": {
  "COSENSE_PROJECT_NAME": "your-project",
  "CF_ACCESS_TEAM_DOMAIN": "https://your-team.cloudflareaccess.com",
  "CF_ACCESS_AUD": "YOUR_ACCESS_APPLICATION_AUDIENCE_TAG"
}

Die Sitzungs-ID muss unbedingt als Worker-Secret festgelegt werden. Sie darf nicht in wrangler.jsonc, im Quellcode oder in Git gespeichert werden.

pnpm wrangler secret put COSENSE_SID

Nur für die lokale Entwicklung wird sie in .dev.vars gespeichert, das nicht eingecheckt wird.

COSENSE_SID=your-connect.sid-value

Validierung und lokale Ausführung erfolgen wie folgt:

pnpm lint
pnpm typecheck
pnpm test
pnpm wrangler dev --local

Einrichtung von Cloudflare Access Managed OAuth

Führen Sie die folgenden Befehle erst aus, wenn Sie bereit sind, die Bereitstellung durchzuführen.

pnpm deploy

Erstellen Sie anschließend im Cloudflare-Zero-Trust-Dashboard eine Access-Anwendung für den Worker-Hostnamen.

  1. Erstellen Sie eine MCP-Serveranwendung für die Worker-Domain und den Pfad /mcp.

  2. Konfigurieren Sie eine Zugriffsrichtlinie mit Benutzern oder Identitätsgruppen, die Zugriff auf das Ziel-Cosense-Projekt haben sollen.

  3. Kopieren Sie das Application Audience (AUD)-Tag und legen Sie es in CF_ACCESS_AUD fest.

  4. Stellen Sie sicher, dass die Team-Domain von Zero Trust mit CF_ACCESS_TEAM_DOMAIN übereinstimmt.

  5. Aktivieren Sie unter den erweiterten Einstellungen der Anwendung Managed OAuth.

  6. Registrieren Sie https://<worker-host>/mcp beim MCP-Client.

Authorization-Code-Flow, PKCE, Anmeldung, Aktualisierungstoken, OAuth-Discovery und Zugriffsrichtlinien werden vollständig von Cloudflare Access übernommen. Der Worker selbst implementiert keinen OAuth-Server.

Der Worker empfängt die Cf-Access-Jwt-Assertion, validiert die RS256-Signatur, den Aussteller und die AUD mithilfe des JWKS-Endpunkts des Teams und leitet die Anfrage nur dann an den MCP-Handler weiter, wenn die Validierung erfolgreich ist.

Die OAuth-Discovery-Informationen bei Verwendung von Managed OAuth werden von der Access-Ebene an den Client zurückgegeben. Fügen Sie dem Worker keine OAuth-Endpunkte oder einen eigenen Autorisierungsserver hinzu.

Sicherheitseigenschaften

  • COSENSE_SID wird als Secret-Binding behandelt und nicht in JSON-Antworten oder Protokollen angezeigt.

  • /mcp lehnt Anfragen ohne oder mit ungültiger Access-Assertion mit 401 ab.

  • Das Access-JWT wird mit https://<team-domain>/cdn-cgi/access/certs auf die Signatur überprüft, außerdem werden Aussteller und AUD validiert.

  • Der Ursprung von /mcp ist auf alle erlaubt. Die Kompatibilität mit Remote-MCP-Clients hat Priorität; die Zugriffskontrolle erfolgt über OAuth-Token von Cloudflare Access und die JWT-Validierung im Worker.

  • Das MCP-Toolschema lehnt undefinierte Eingaben ab, sodass der Aufrufer Projekt- oder Anmeldeinformationen nicht überschreiben kann.

  • Es werden keine beliebigen Fehlermeldungen von Cosense unverändert zurückgegeben, sondern nur auf die jeweilige Operation bezogene Fehler.

  • Die Tool-Ausgabe ist auf 100.000 Zeichen begrenzt, um unbeabsichtigt große Antworten zu vermeiden.

Verzeichnisstruktur

src/
  config.ts                 Worker bindingの検証
  index.ts                  Honoルートとstateless MCP HTTP transport
  middleware/access-auth.ts Access JWTの検証
  mcp/server.ts             MCP SDK v2 server factory
  mcp/tools/                ツールごとのスキーマと登録処理
  cosense/client.ts         Cosense adapter
  cosense/formatter.ts      LLM向けページ整形
  cosense/insert-lines.ts   純粋な挿入位置計算
test/                       外部Cosense APIを呼ばないユニットテスト

Referenzen

Inspiriert von yosider/cosense-mcp-server. Dieses Projekt kopiert keinen Code aus diesem Repository, sondern ist eine Neuimplementierung für Cloudflare Workers.

-
license - not tested
Not graded
quality - not tested
C
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 Connectors

  • Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth

  • Streamable HTTP MCP server for Google Calendar and Sheets with OAuth login.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

View all MCP Connectors

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/ogatomo21/cosense-mcp-worker'

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