@@ -30,7 +30,7 @@ <h1 class="text-3xl font-bold text-gray-800">
30
30
MCP Context Forge - Gateway Administration
31
31
</ h1 >
32
32
< p class ="text-gray-600 ">
33
- Manage tools, resources, prompts, servers, and federated gateways
33
+ Manage tools, resources, prompts, servers, and federated gateways (remote MCP servers).
34
34
</ p >
35
35
</ header >
36
36
@@ -43,35 +43,35 @@ <h1 class="text-3xl font-bold text-gray-800">
43
43
id ="tab-catalog "
44
44
class ="tab-link border-indigo-500 text-indigo-600 whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm "
45
45
>
46
- Servers Catalog
46
+ Virtual Servers Catalog
47
47
</ a >
48
48
< a
49
49
href ="#tools "
50
50
id ="tab-tools "
51
51
class ="tab-link border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm "
52
52
>
53
- Tools
53
+ Global Tools
54
54
</ a >
55
55
< a
56
56
href ="#resources "
57
57
id ="tab-resources "
58
58
class ="tab-link border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm "
59
59
>
60
- Resources
60
+ Global Resources
61
61
</ a >
62
62
< a
63
63
href ="#prompts "
64
64
id ="tab-prompts "
65
65
class ="tab-link border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm "
66
66
>
67
- Prompts
67
+ Global Prompts
68
68
</ a >
69
69
< a
70
70
href ="#gateways "
71
71
id ="tab-gateways "
72
72
class ="tab-link border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm "
73
73
>
74
- Gateways
74
+ Gateways/MCP Servers
75
75
</ a >
76
76
< a
77
77
href ="#roots "
@@ -87,6 +87,14 @@ <h1 class="text-3xl font-bold text-gray-800">
87
87
>
88
88
Metrics
89
89
</ a >
90
+ <!-- New Version tab (opens separate /version page) -->
91
+ < a
92
+ href ="{{ root_path }}/version "
93
+ target ="_blank "
94
+ class ="border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm "
95
+ >
96
+ Version
97
+ </ a >
90
98
</ nav >
91
99
</ div >
92
100
</ div >
@@ -95,6 +103,8 @@ <h1 class="text-3xl font-bold text-gray-800">
95
103
< div id ="catalog-panel " class ="tab-panel ">
96
104
< div class ="flex justify-between items-center mb-4 ">
97
105
< h2 class ="text-2xl font-bold "> MCP Servers Catalog</ h2 >
106
+ < p class ="text-sm text-gray-600 mt-1 "> Virtual Servers let you combine Tools, Resources, and Prompts from the global Tools catalog into a reusable configuration.</ p >
107
+
98
108
< div class ="flex items-center ">
99
109
< input
100
110
type ="checkbox "
@@ -356,6 +366,7 @@ <h3 class="text-lg font-bold mb-4">Add New Server</h3>
356
366
< div id ="tools-panel " class ="tab-panel hidden ">
357
367
< div class ="flex justify-between items-center mb-4 ">
358
368
< h2 class ="text-2xl font-bold "> Registered Tools</ h2 >
369
+ < p class ="text-sm text-gray-600 mt-1 "> This is the global catalog of Tools available. Create a Virtual Server using one of these tools.</ p >
359
370
< div class ="flex items-center ">
360
371
< input
361
372
type ="checkbox "
@@ -737,6 +748,7 @@ <h3 class="text-lg font-bold mb-4">Add New Tool</h3>
737
748
< div id ="resources-panel " class ="tab-panel hidden ">
738
749
< div class ="flex justify-between items-center mb-4 ">
739
750
< h2 class ="text-2xl font-bold "> Available Resources</ h2 >
751
+ < p class ="text-sm text-gray-600 mt-1 "> Resources are reusable data assets—like text, code, or media—that Tools and Prompts can reference by URI.</ p >
740
752
< div class ="flex items-center ">
741
753
< input
742
754
type ="checkbox "
@@ -967,6 +979,7 @@ <h3 class="text-lg font-bold mb-4">Add New Resource</h3>
967
979
< div id ="prompts-panel " class ="tab-panel hidden ">
968
980
< div class ="flex justify-between items-center mb-4 ">
969
981
< h2 class ="text-2xl font-bold "> Available Prompts</ h2 >
982
+ < p class ="text-sm text-gray-600 mt-1 "> Prompts define reusable message templates with parameters, useful for driving LLM interactions or Tool input.</ p >
970
983
< div class ="flex items-center ">
971
984
< input
972
985
type ="checkbox "
@@ -1173,7 +1186,8 @@ <h3 class="text-lg font-bold mb-4">Add New Prompt</h3>
1173
1186
<!-- Gateways Panel -->
1174
1187
< div id ="gateways-panel " class ="tab-panel hidden ">
1175
1188
< div class ="flex justify-between items-center mb-4 ">
1176
- < h2 class ="text-2xl font-bold "> Federated Gateways</ h2 >
1189
+ < h2 class ="text-2xl font-bold "> Federated Gateways (MCP)</ h2 >
1190
+ < p class ="text-sm text-gray-600 mt-1 "> Gateways are where you register external MCP servers to federate their tools/resources/prompts into your environment.</ p >
1177
1191
< div class ="flex items-center ">
1178
1192
< input
1179
1193
type ="checkbox "
@@ -1440,45 +1454,59 @@ <h3 class="text-lg font-bold mb-4">Add New Gateway</h3>
1440
1454
1441
1455
<!-- Roots Panel -->
1442
1456
< div id ="roots-panel " class ="tab-panel hidden ">
1457
+ <!-- List of roots ------------------------------------------------------->
1443
1458
< div class ="bg-white shadow rounded-lg p-6 mb-8 ">
1444
- < h2 class ="text-2xl font-bold mb-4 "> Root Directories</ h2 >
1459
+ <!-- Consistent header -->
1460
+ < div class ="flex justify-between items-center mb-4 ">
1461
+ < h2 class ="text-2xl font-bold "> Root Directories</ h2 >
1462
+ < div class ="flex items-center ">
1463
+ < input
1464
+ type ="checkbox "
1465
+ id ="show-inactive-roots "
1466
+ class ="mr-2 "
1467
+ onchange ="toggleInactiveItems('roots') "
1468
+ />
1469
+ < label
1470
+ for ="show-inactive-roots "
1471
+ class ="text-sm font-medium text-gray-700 "
1472
+ >
1473
+ Show Inactive
1474
+ </ label >
1475
+ </ div >
1476
+ </ div >
1477
+
1478
+ <!-- Description -->
1479
+ < p class ="text-sm text-gray-600 mb-4 ">
1480
+ Roots define the base folders accessible for file-based Resources.
1481
+ They enable MCP servers to browse local content.
1482
+ </ p >
1483
+
1484
+ <!-- Roots table -->
1445
1485
< div class ="overflow-x-auto ">
1446
1486
< table class ="min-w-full divide-y divide-gray-200 ">
1447
1487
< thead class ="bg-gray-50 ">
1448
1488
< tr >
1449
- < th
1450
- class ="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider "
1451
- >
1489
+ < th class ="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider ">
1452
1490
ID
1453
1491
</ th >
1454
- < th
1455
- class ="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider "
1456
- >
1492
+ < th class ="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider ">
1457
1493
URI
1458
1494
</ th >
1459
- < th
1460
- class ="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider "
1461
- >
1495
+ < th class ="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider ">
1462
1496
Name
1463
1497
</ th >
1464
- < th
1465
- class ="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider "
1466
- >
1498
+ < th class ="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider ">
1467
1499
Actions
1468
1500
</ th >
1469
1501
</ tr >
1470
1502
</ thead >
1471
1503
< tbody class ="bg-white divide-y divide-gray-200 ">
1472
1504
{% for root in roots %}
1473
1505
< tr >
1474
- < td
1475
- class ="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900 "
1476
- >
1506
+ < td class ="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900 ">
1477
1507
{{ root.id }}
1478
1508
</ td >
1479
- < td
1480
- class ="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900 "
1481
- >
1509
+ < td class ="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900 ">
1482
1510
{{ root.uri }}
1483
1511
</ td >
1484
1512
< td class ="px-6 py-4 whitespace-nowrap text-sm text-gray-500 ">
@@ -1491,10 +1519,7 @@ <h2 class="text-2xl font-bold mb-4">Root Directories</h2>
1491
1519
class ="inline "
1492
1520
onsubmit ="return confirm('Are you sure you want to delete this root?'); "
1493
1521
>
1494
- < button
1495
- type ="submit "
1496
- class ="text-red-600 hover:text-red-900 "
1497
- >
1522
+ < button type ="submit " class ="text-red-600 hover:text-red-900 ">
1498
1523
Delete
1499
1524
</ button >
1500
1525
</ form >
@@ -1506,14 +1531,13 @@ <h2 class="text-2xl font-bold mb-4">Root Directories</h2>
1506
1531
</ div >
1507
1532
</ div >
1508
1533
1534
+ <!-- Add new root -------------------------------------------------------->
1509
1535
< div class ="bg-white shadow rounded-lg p-6 ">
1510
1536
< h3 class ="text-lg font-bold mb-4 "> Add New Root</ h3 >
1511
1537
< form method ="POST " action ="{{ root_path }}/admin/roots " id ="add-root-form ">
1512
1538
< div class ="grid grid-cols-1 gap-6 ">
1513
1539
< div >
1514
- < label class ="block text-sm font-medium text-gray-700 "
1515
- > URI</ label
1516
- >
1540
+ < label class ="block text-sm font-medium text-gray-700 "> URI</ label >
1517
1541
< input
1518
1542
type ="text "
1519
1543
name ="uri "
@@ -1523,9 +1547,7 @@ <h3 class="text-lg font-bold mb-4">Add New Root</h3>
1523
1547
/>
1524
1548
</ div >
1525
1549
< div >
1526
- < label class ="block text-sm font-medium text-gray-700 "
1527
- > Name</ label
1528
- >
1550
+ < label class ="block text-sm font-medium text-gray-700 "> Name</ label >
1529
1551
< input
1530
1552
type ="text "
1531
1553
name ="name "
@@ -1545,12 +1567,14 @@ <h3 class="text-lg font-bold mb-4">Add New Root</h3>
1545
1567
</ form >
1546
1568
</ div >
1547
1569
</ div >
1548
- </ div >
1570
+
1571
+
1549
1572
1550
1573
<!-- Metrics Panel -->
1551
1574
< div id ="metrics-panel " class ="tab-panel hidden ">
1552
1575
< div class ="bg-white shadow rounded-lg p-6 ">
1553
1576
< h2 class ="text-2xl font-bold mb-4 "> Aggregated Metrics</ h2 >
1577
+ < p class ="text-sm text-gray-600 mt-1 "> Metrics provide visibility into Tool, Resource, Prompt, and Server usage across your Gateway—helpful for debugging and optimization.</ p >
1554
1578
1555
1579
<!-- Refresh button (also auto-refreshes when the tab is selected) -->
1556
1580
< button
@@ -1599,6 +1623,7 @@ <h2 class="text-2xl font-bold mb-4">Aggregated Metrics</h2>
1599
1623
</ div >
1600
1624
</ div >
1601
1625
1626
+
1602
1627
<!-- Modals -->
1603
1628
<!-- Tool Detail Modal -->
1604
1629
< div id ="tool-modal " class ="fixed z-10 inset-0 overflow-y-auto hidden ">
0 commit comments