@prontosite/mcp 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/api.mjs +13 -2
  2. package/index.mjs +1 -1
  3. package/package.json +1 -1
package/api.mjs CHANGED
@@ -48,8 +48,19 @@ const needToken = (token, ref) => {
48
48
  export function resolveTarget(cfg, site) {
49
49
  const want = site || cfg.defaultSite || cfg.site || "active";
50
50
  if (cfg.sites) {
51
- const key = cfg.sites[want] ? want : Object.keys(cfg.sites).find(k => cfg.sites[k] && cfg.sites[k].site === want);
52
- if (key) { const e = cfg.sites[key]; return { token: needToken(e.token, key), slug: e.site || key }; }
51
+ const keys = Object.keys(cfg.sites);
52
+ const lc = String(want).toLowerCase();
53
+ // Auflösung ZUERST als PROFIL: exakter Label-Schlüssel → Label case-insensitiv → per entry.site (stabile
54
+ // ID) oder entry.slug. Erst so wird das richtige Token je Site gewählt.
55
+ const key = (cfg.sites[want] && want)
56
+ || keys.find(k => k.toLowerCase() === lc)
57
+ || keys.find(k => cfg.sites[k] && (cfg.sites[k].site === want || cfg.sites[k].slug === want));
58
+ if (key) { const e = cfg.sites[key]; return { token: needToken(e.token, key), slug: e.site || e.slug || key }; }
59
+ // WICHTIG (Befund Nick): In einer Multi-Site-Config darf ein UNBEKANNTES Label NICHT still auf das
60
+ // Default-/Einzel-Token (cfg.token) zurückfallen – sonst wird das Label als Website im FALSCHEN Token
61
+ // gesucht (z. B. „praxis-semra-demo" im Rosin-Token). Klar melden statt still das falsche Token nehmen.
62
+ throw new Error(`„${want}" ist kein Profil in deiner sites-Map. Verfügbar: ${keys.join(", ")}. `
63
+ + `Adressiere per Label oder stabiler Site-ID (s-…); sites_list zeigt alle.`);
53
64
  }
54
65
  return { token: needToken(cfg.token, want), slug: want };
55
66
  }
package/index.mjs CHANGED
@@ -14,7 +14,7 @@ import { z } from "zod";
14
14
  import { loadConfig, apiStatus, apiExport, apiDeploy, apiPublish, sitesList } from "./api.mjs";
15
15
 
16
16
  const cfg = loadConfig();
17
- const server = new McpServer({ name: "prontosite", version: "0.2.0" });
17
+ const server = new McpServer({ name: "prontosite", version: "0.2.1" });
18
18
  const asText = obj => ({ content: [{ type: "text", text: JSON.stringify(obj, null, 2) }] });
19
19
  const asError = e => ({ isError: true, content: [{ type: "text", text: "Fehler: " + (e?.message || String(e)) }] });
20
20
  const SITE_DESC = "Website-Slug (z. B. 'mas-monti'). Ohne Angabe die Standard-Site der Config. Bei Betreuer-"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prontosite/mcp",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "MCP-Server für ProntoSite – Website-Status, Export, Deploy und Veröffentlichen direkt aus einem KI-Assistenten (Claude Desktop). Dünner Client um die ProntoSite Deploy-API.",
5
5
  "type": "module",
6
6
  "bin": { "prontosite-mcp": "index.mjs" },