restricted-github-mcp 1.1.4 → 1.1.6

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.
package/dist/index.js CHANGED
@@ -5,6 +5,12 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextpro
5
5
  import { Octokit } from "octokit";
6
6
  import * as dotenv from "dotenv";
7
7
  import { execSync } from "child_process";
8
+ import express from "express";
9
+ import path from "path";
10
+ import fs from "fs";
11
+ import { fileURLToPath } from "url";
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
8
14
  // MCP servers must not log to stdout as it's used for the protocol.
9
15
  // Some libraries might log to stdout on initialization.
10
16
  // We redirect all console.log to console.error to avoid polluting stdout.
@@ -16,6 +22,8 @@ const BASE_BRANCH = process.env.BASE_BRANCH || "main";
16
22
  const TARGET_REPO = process.env.TARGET_REPO;
17
23
  const REPO_PATH = process.env.REPO_PATH || process.cwd();
18
24
  const READ_ONLY = process.env.READ_ONLY === "true";
25
+ // On déplace le lancement de la GUI ici pour qu'il soit prioritaire
26
+ startConfigServer().catch(err => console.error("Failed to start config server:", err));
19
27
  if (!GITHUB_TOKEN) {
20
28
  console.error("GITHUB_TOKEN environment variable is required");
21
29
  process.exit(1);
@@ -198,6 +206,44 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
198
206
  };
199
207
  }
200
208
  });
209
+ async function startConfigServer() {
210
+ const app = express();
211
+ const port = 3000;
212
+ app.use(express.json());
213
+ // Utilise un chemin relatif au fichier compilé pour trouver public
214
+ const publicPath = path.join(__dirname, "..", "public");
215
+ app.use(express.static(publicPath));
216
+ app.get("/api/config", (req, res) => {
217
+ res.json({
218
+ GITHUB_TOKEN: process.env.GITHUB_TOKEN,
219
+ TARGET_REPO: process.env.TARGET_REPO,
220
+ TARGET_BRANCH: process.env.TARGET_BRANCH,
221
+ BASE_BRANCH: process.env.BASE_BRANCH || "main",
222
+ REPO_PATH: process.env.REPO_PATH || process.cwd(),
223
+ READ_ONLY: process.env.READ_ONLY === "true",
224
+ });
225
+ });
226
+ app.post("/api/config", (req, res) => {
227
+ const newConfig = req.body;
228
+ let envContent = "";
229
+ for (const [key, value] of Object.entries(newConfig)) {
230
+ envContent += `${key}=${value}\n`;
231
+ }
232
+ try {
233
+ fs.writeFileSync(path.join(process.cwd(), ".env"), envContent);
234
+ // Update current process env as well
235
+ Object.assign(process.env, newConfig);
236
+ res.sendStatus(200);
237
+ }
238
+ catch (error) {
239
+ console.error("Failed to save .env:", error);
240
+ res.status(500).send("Failed to save configuration");
241
+ }
242
+ });
243
+ app.listen(port, () => {
244
+ console.error(`Config GUI available at http://localhost:${port}`);
245
+ });
246
+ }
201
247
  async function main() {
202
248
  const transport = new StdioServerTransport();
203
249
  await server.connect(transport);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,oEAAoE;AACpE,wDAAwD;AACxD,0EAA0E;AAC1E,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;AAC5B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAChD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC;AACtD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AACzD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC;AAEnD,oEAAoE;AACpE,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC,CAAC;AAEvF,IAAI,CAAC,YAAY,EAAE,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AAEpD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,uBAAuB;IAC7B,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,MAAM,KAAK,GAAW;IACpB;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,kJAAkJ;QAC/J,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBAC9D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6FAA6F,EAAE;aAC1I;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBACvE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;aAClF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,0EAA0E;QACvF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,qFAAqF;QAClG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;CACF,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,KAAK;CACb,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC9D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAW,CAAC;gBAC3C,MAAM,aAAa,GAAG,SAAS,IAAI,SAAS,CAAC;gBAC7C,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;gBAE3C,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACvE,CAAC;gBAED,IAAI,CAAC;oBACH,2CAA2C;oBAC3C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBAEnC,YAAY;oBACZ,IAAI,CAAC;wBACH,QAAQ,CAAC,kBAAkB,OAAO,GAAG,EAAE,WAAW,CAAC,CAAC;oBACtD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,uCAAuC;wBACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;wBAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACxB,OAAO;gCACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC;6BAC5E,CAAC;wBACJ,CAAC;wBACD,MAAM,CAAC,CAAC;oBACV,CAAC;oBAED,2BAA2B;oBAC3B,uEAAuE;oBACvE,gCAAgC;oBAChC,MAAM,MAAM,GAAG,WAAW,IAAI,YAAY;wBACxC,CAAC,CAAC,0BAA0B,YAAY,eAAe,WAAW,MAAM;wBACxE,CAAC,CAAC,QAAQ,CAAC;oBAEb,QAAQ,CAAC,YAAY,MAAM,SAAS,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;oBAElE,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2DAA2D,aAAa,SAAS,aAAa,EAAE,EAAE,CAAC;qBACpI,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,aAAa,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,IAAI,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC9D,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAW,CAAC;gBAEpC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;gBACD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAClD,CAAC;gBAED,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAE7C,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACvE,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;wBAC/C,KAAK;wBACL,IAAI;wBACJ,KAAK;wBACL,IAAI;wBACJ,IAAI,EAAE,aAAa;wBACnB,IAAI,EAAE,WAAW;qBAClB,CAAC,CAAC;oBAEH,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;qBAClG,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,IAAI,GAAG;oBACX,WAAW;oBACX,aAAa;oBACb,WAAW;oBACX,SAAS;oBACT,SAAS;oBACT,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE;iBACnC,CAAC;gBAEF,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;yBACjE,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBACrE,CAAC;gBACD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACvE,CAAC;gBAED,MAAM,MAAM,GAAG,0BAA0B,YAAY,eAAe,WAAW,MAAM,CAAC;gBAEtF,IAAI,CAAC;oBACH,yCAAyC;oBACzC,QAAQ,CAAC,aAAa,MAAM,KAAK,SAAS,GAAG,CAAC,CAAC;oBAE/C,2CAA2C;oBAC3C,QAAQ,CAAC,mBAAmB,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;oBAEjE,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,WAAW,SAAS,SAAS,+BAA+B,aAAa,EAAE,EAAE,CAAC;qBACtI,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC;IAElB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,mEAAmE;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAEpC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,GAAG,CAAC,IAAI,CAAC;YACP,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;YACtC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;YACpC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;YACxC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM;YAC9C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE;YACjD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;SAC5C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3B,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,UAAU,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC;QACpC,CAAC;QAED,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;YAC/D,qCAAqC;YACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACtC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACpB,OAAO,CAAC,KAAK,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACtD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "restricted-github-mcp",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "files": [
7
- "dist"
7
+ "dist",
8
+ "public"
8
9
  ],
9
10
  "bin": "dist/index.js",
10
11
  "scripts": {
@@ -24,10 +25,12 @@
24
25
  "dependencies": {
25
26
  "@modelcontextprotocol/sdk": "^1.25.3",
26
27
  "dotenv": "^17.2.3",
28
+ "express": "^5.2.1",
27
29
  "octokit": "^5.0.5"
28
30
  },
29
31
  "devDependencies": {
30
32
  "@modelcontextprotocol/inspector": "^0.19.0",
33
+ "@types/express": "^5.0.6",
31
34
  "@types/node": "^25.0.10",
32
35
  "tsx": "^4.21.0",
33
36
  "typescript": "^5.9.3"
@@ -0,0 +1,123 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>GitHub MCP</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <style>
9
+ body {
10
+ background-color: #0f172a;
11
+ color: #f8fafc;
12
+ }
13
+ </style>
14
+ </head>
15
+ <body class="min-h-screen p-8">
16
+ <div class="max-w-2xl mx-auto bg-slate-800 rounded-xl shadow-2xl p-8 border border-slate-700">
17
+ <h1 class="text-3xl font-bold mb-6 text-blue-400 flex items-center">
18
+ <svg class="w-8 h-8 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
19
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"></path>
20
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
21
+ </svg>
22
+ Configuration MCP GitHub
23
+ </h1>
24
+
25
+ <form id="configForm" class="space-y-6">
26
+ <div class="space-y-4" id="inputs">
27
+ <!-- Inputs will be injected here -->
28
+ <div class="flex justify-center p-8">
29
+ <div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-400"></div>
30
+ </div>
31
+ </div>
32
+
33
+ <div class="pt-4">
34
+ <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-3 px-4 rounded-lg transition duration-200 shadow-lg flex justify-center items-center">
35
+ <span>Enregistrer la configuration</span>
36
+ </button>
37
+ </div>
38
+ </form>
39
+
40
+ <div id="status" class="mt-6 p-4 rounded-lg hidden"></div>
41
+
42
+ <div class="mt-8 text-sm text-slate-400 border-t border-slate-700 pt-4 italic">
43
+ Note: Le serveur MCP doit être redémarré pour appliquer les changements.
44
+ </div>
45
+ </div>
46
+
47
+ <script>
48
+ const form = document.getElementById('configForm');
49
+ const status = document.getElementById('status');
50
+ const inputsContainer = document.getElementById('inputs');
51
+
52
+ const fields = [
53
+ { id: 'GITHUB_TOKEN', label: 'GitHub Token', type: 'password', placeholder: 'ghp_...' },
54
+ { id: 'TARGET_REPO', label: 'Target Repository', type: 'text', placeholder: 'owner/repo' },
55
+ { id: 'TARGET_BRANCH', label: 'Target Branch', type: 'text', placeholder: 'feature-branch' },
56
+ { id: 'BASE_BRANCH', label: 'Base Branch', type: 'text', placeholder: 'main' },
57
+ { id: 'REPO_PATH', label: 'Local Repo Path', type: 'text', placeholder: 'C:\\path\\to\\repo' },
58
+ { id: 'READ_ONLY', label: 'Read Only Mode', type: 'checkbox' }
59
+ ];
60
+
61
+ // Fetch current config
62
+ async function fetchConfig() {
63
+ try {
64
+ const response = await fetch('/api/config');
65
+ const config = await response.json();
66
+
67
+ inputsContainer.innerHTML = fields.map(field => {
68
+ if (field.type === 'checkbox') {
69
+ return `
70
+ <div class="flex items-center space-x-3 p-3 bg-slate-700/50 rounded-lg">
71
+ <input type="checkbox" id="${field.id}" ${config[field.id] === 'true' || config[field.id] === true ? 'checked' : ''} class="w-5 h-5 text-blue-600 rounded focus:ring-blue-500 bg-slate-900 border-slate-600">
72
+ <label for="${field.id}" class="text-sm font-medium text-slate-200">${field.label}</label>
73
+ </div>
74
+ `;
75
+ }
76
+ return `
77
+ <div class="space-y-1">
78
+ <label for="${field.id}" class="block text-sm font-medium text-slate-300">${field.label}</label>
79
+ <input type="${field.type}" id="${field.id}" value="${config[field.id] || ''}" placeholder="${field.placeholder}" class="w-full px-4 py-2 bg-slate-900 border border-slate-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent outline-none transition duration-200 text-slate-100">
80
+ </div>
81
+ `;
82
+ }).join('');
83
+ } catch (error) {
84
+ showStatus('Erreur lors du chargement de la configuration', 'error');
85
+ }
86
+ }
87
+
88
+ function showStatus(message, type) {
89
+ status.textContent = message;
90
+ status.className = `mt-6 p-4 rounded-lg font-medium text-center ${type === 'success' ? 'bg-green-900/50 text-green-300 border border-green-700' : 'bg-red-900/50 text-red-300 border border-red-700'}`;
91
+ status.classList.remove('hidden');
92
+ setTimeout(() => status.classList.add('hidden'), 5000);
93
+ }
94
+
95
+ form.onsubmit = async (e) => {
96
+ e.preventDefault();
97
+ const config = {};
98
+ fields.forEach(field => {
99
+ const input = document.getElementById(field.id);
100
+ config[field.id] = field.type === 'checkbox' ? input.checked : input.value;
101
+ });
102
+
103
+ try {
104
+ const response = await fetch('/api/config', {
105
+ method: 'POST',
106
+ headers: { 'Content-Type': 'application/json' },
107
+ body: JSON.stringify(config)
108
+ });
109
+
110
+ if (response.ok) {
111
+ showStatus('Configuration enregistrée avec succès !', 'success');
112
+ } else {
113
+ throw new Error();
114
+ }
115
+ } catch (error) {
116
+ showStatus('Erreur lors de l\'enregistrement', 'error');
117
+ }
118
+ };
119
+
120
+ fetchConfig();
121
+ </script>
122
+ </body>
123
+ </html>