Skip to content

Commit 2c9a4d8

Browse files
authored
Merge pull request #212 from deploystackio/main
udpated-docs
2 parents 553f8c3 + 8834fe2 commit 2c9a4d8

File tree

9 files changed

+366
-355
lines changed

9 files changed

+366
-355
lines changed

docs/mcp-configuration.mdx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ This architecture enables teams to share common settings like API keys while all
6161

6262
The heart of the system is sophisticated lock/unlock controls with precise categorization:
6363

64+
**Secret Type Support:** Configuration values marked as `type: "secret"` in schemas are automatically encrypted for security. For complete details on secret encryption, masking, and security, see [Security and Privacy](/security).
65+
6466
**Global Administrator Controls:**
6567
- **Sophisticated Categorization** - Categorize every configuration element into Template/Team/User tiers
6668
- **Granular Lock/Unlock Controls** - Set default lock states and visibility controls for each element
@@ -116,7 +118,7 @@ Here's how the three tiers combine into a final runtime configuration:
116118
```json
117119
{
118120
"args": [],
119-
"env": {"SHARED_API_KEY": "team-secret-12345"}
121+
"env": {"SHARED_API_KEY": "••••• (encrypted secret)"}
120122
}
121123
```
122124

@@ -140,12 +142,14 @@ Here's how the three tiers combine into a final runtime configuration:
140142
],
141143
"env": {
142144
"PROTOCOL_VERSION": "1.0",
143-
"SHARED_API_KEY": "team-secret-12345",
145+
"SHARED_API_KEY": "decrypted-secret-for-runtime",
144146
"DEBUG": "true"
145147
}
146148
}
147149
```
148150

151+
*Note: Secret values are automatically decrypted only for runtime execution. In all other contexts (API responses, user interfaces), secrets appear masked as `*****`.*
152+
149153
## Key Benefits
150154

151155
**Security:** Sensitive credentials managed at appropriate tiers with encryption and access controls

docs/mcp-team-installation.mdx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ Template Configuration (Set by Global Admin, Cannot Change):
7070
├─ System Flag: "-y" (🔒 Locked Forever)
7171
7272
Team Configuration (You Control):
73-
├─ GIT_ACCESS_TOKEN: "team-git-token-xyz" (🔒 Locked, Hidden)
73+
├─ GIT_ACCESS_TOKEN: "••••• (encrypted secret)" (🔒 Locked)
7474
├─ SHARED_PROJECT_ROOT: "/company/projects" (🔒 Locked)
7575
7676
User Controls (You Decide Lock/Unlock):
@@ -88,8 +88,10 @@ User Controls (You Decide Lock/Unlock):
8888
- Team members can use credentials but may not see actual values
8989

9090
**Credential Visibility:**
91-
- **Hidden Credentials** - Users use them automatically but can't see values (for API keys)
92-
- **Visible Credentials** - Users can see values (for service URLs)
91+
- **Secret Fields** - Users see `*****` and use them automatically (for API keys, tokens)
92+
- **Visible Fields** - Users can see actual values (for service URLs, non-sensitive settings)
93+
94+
For complete details on how secret fields are encrypted and protected, see [Security and Privacy](/security).
9395

9496
**Updates:**
9597
- Update credentials without affecting user configurations

docs/mcp-user-configuration.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ Debug Settings:
6363
6464
TEAM-MANAGED SETTINGS (You inherit these automatically)
6565
66-
✓ Team credentials configured
66+
✓ Team API credentials: ••••• (encrypted, see Security)
6767
✓ Shared project access: /company/projects
6868
✓ Team backup settings: Enabled
6969
@@ -157,7 +157,7 @@ Template (System):
157157
└─ System flags: "-y"
158158
159159
+ Team (Shared):
160-
├─ Team API Key: "team-secret-12345" (hidden from you)
160+
├─ Team API Key: "••••• (encrypted secret, hidden from you)"
161161
├─ Shared directory: "/company/projects"
162162
└─ Backup enabled: true
163163
@@ -170,7 +170,7 @@ Template (System):
170170
Command: npx -y @modelcontextprotocol/server-filesystem
171171
/Users/alice/Development /Users/alice/Projects
172172
Environment: {
173-
"TEAM_API_KEY": "team-secret-12345",
173+
"TEAM_API_KEY": "decrypted-for-runtime-only",
174174
"SHARED_DIR": "/company/projects",
175175
"BACKUP_ENABLED": "true",
176176
"DEBUG": "true",

docs/meta.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,16 @@
1313
"onboard-new-team-members",
1414
"global-settings",
1515
"security",
16+
"device-management",
1617
"---MCP Server---",
1718
"mcp-catalog",
1819
"mcp-installation",
1920
"mcp-categories",
21+
"mcp-admin-schema-workflow",
22+
"---MCP Server Configuration---",
23+
"mcp-configuration",
24+
"mcp-team-installation",
25+
"mcp-user-configuration",
2026
"---Administration---",
2127
"auth",
2228
"github-application",

docs/security.mdx

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,46 @@ To ensure account security:
4141

4242
## Data Protection
4343

44-
### Sensitive Settings
45-
Your configuration data is protected with encryption:
44+
### MCP Configuration Security
45+
46+
DeployStack automatically protects sensitive MCP configuration values through a selective encryption system:
47+
48+
**Secret Type Implementation:**
49+
- **Schema-Based Detection**: Fields marked as `type: "secret"` in MCP schemas are automatically identified for encryption
50+
- **AES-256-GCM Encryption**: Secret values are encrypted using the same industry-standard encryption as global settings
51+
- **Selective Processing**: Only secret-type fields are encrypted; regular configuration values remain as plaintext for performance
52+
- **Encrypted Storage**: Secret values are stored encrypted in the database and never saved as plaintext
53+
54+
**API Response Protection:**
55+
- **Automatic Masking**: All API responses automatically mask secret values as `*****`
56+
- **No Secret Exposure**: Secret values never appear in API responses, logs, or user interfaces
57+
- **Runtime Decryption**: Only authorized operations (like gateway configuration generation) can decrypt secrets for actual use
58+
59+
**Three-Tier Secret Management:**
60+
- **Template Level**: Global administrators define which fields are secret types in schemas
61+
- **Team Level**: Team administrators configure secret values (API keys, tokens) that all team members inherit
62+
- **User Level**: Users see masked values (`*****`) and cannot access actual secret content
63+
64+
**What Gets Encrypted:**
65+
- API keys and authentication tokens
66+
- Database passwords and connection strings
67+
- Service credentials and access keys
68+
- Any configuration field marked as `type: "secret"` in the schema
69+
70+
**What Doesn't Get Encrypted:**
71+
- Debug flags and boolean settings
72+
- File paths and directory names
73+
- Public configuration values
74+
- Regular string, number, and boolean fields
75+
76+
**Security Benefits:**
77+
- **Zero Secret Exposure**: Impossible for secrets to leak through API responses
78+
- **Database Protection**: Even database access doesn't reveal plaintext secrets
79+
- **Audit Safe**: Logs and interfaces never contain actual secret values
80+
- **Team Security**: Team members use secrets without seeing actual values
81+
82+
### Global Settings Encryption
83+
Your global configuration data is protected with encryption:
4684

4785
- **Encrypted storage**: Sensitive settings like passwords and API keys are encrypted
4886
- **Secure keys**: Encryption uses industry-standard methods

lib/source.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
// The .source alias will be generated by 'fumadocs-mdx' postinstall script
2-
// or when you run `next dev`.
3-
// If TypeScript complains about '@/.source', you might need to run `npm run postinstall`
4-
// or `npm run dev` once to generate it.
5-
import { docs } from '../.source/index';
1+
import { docs } from '../.source';
62
import { loader } from 'fumadocs-core/source';
73
import { icons } from 'lucide-react';
84
import { createElement } from 'react';
@@ -28,7 +24,11 @@ function createIconHandler() {
2824
}
2925

3026
// Filter docs into separate sections
31-
const allDocs = docs.docs;
27+
type Doc = (typeof docs.docs)[number];
28+
const allDocs = docs.docs.map((doc: Doc) => ({
29+
...doc,
30+
title: doc.sidebar ?? doc.title,
31+
}));
3232
const allMeta = docs.meta;
3333

3434
// Main docs (include all files for complete control via meta.json)

next-env.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/// <reference types="next" />
22
/// <reference types="next/image-types/global" />
3+
/// <reference path="./.next/types/routes.d.ts" />
34

45
// NOTE: This file should not be edited
56
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.

0 commit comments

Comments
 (0)