From 98deb8adcbb100ab0ea485ebf1577588f325a9aa Mon Sep 17 00:00:00 2001 From: Lasim Date: Thu, 25 Dec 2025 09:58:20 +0100 Subject: [PATCH 1/5] docs(README): improve formatting and clarity in documentation guidelines --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 246b1e3..1f12868 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ mintlify dev ``` The local server provides: + - Hot reloading for instant content updates - Navigation preview - Component rendering @@ -96,6 +97,7 @@ More content here... Mintlify provides built-in components for enhanced documentation: **Callouts:** + ```mdx General information Important information @@ -106,6 +108,7 @@ Mintlify provides built-in components for enhanced documentation: ``` **Code Groups:** + ```mdx `\`\`bash macOS/Linux @@ -118,8 +121,8 @@ npm install ``` - **Cards:** + ```mdx @@ -132,6 +135,7 @@ npm install ``` **Steps:** + ```mdx @@ -155,6 +159,7 @@ Navigation is controlled via `docs.json`: - **Pages**: Individual documentation pages To add a new page: + 1. Create the `.mdx` file in the appropriate directory 2. Add the page path to `docs.json` under the relevant group 3. Test locally with `mintlify dev` @@ -162,19 +167,23 @@ To add a new page: ### Content Guidelines **File Naming:** + - Use kebab-case: `my-new-page.mdx` - Index files represent the directory: `index.mdx` **Links:** + - Use absolute paths from documentation root: `/development/backend/api/index` - Mintlify automatically handles `.mdx` extensions **Images:** + - Store in `assets/images/` with logical subdirectories - Reference with absolute paths: `/assets/images/logo/dark.webp` - Optimize images before committing (compress file sizes) **Frontmatter:** + ```yaml --- title: Page Title (required) @@ -214,6 +223,7 @@ description: Page description for SEO (required) ### Documentation Standards **Writing Style:** + - Write in clear, concise language - Use active voice - Address the reader directly ("you") @@ -221,12 +231,14 @@ description: Page description for SEO (required) - Include code examples where helpful **Code Examples:** + - Include complete, working examples - Add comments for clarity - Show expected output when relevant - Test all code before committing **Structure:** + - Start with overview/introduction - Progress from basic to advanced - Use descriptive section headers From 675f69a50a2b88d908c95c168f327ce408f7b8c7 Mon Sep 17 00:00:00 2001 From: Lasim Date: Thu, 25 Dec 2025 10:04:57 +0100 Subject: [PATCH 2/5] docs(context7): add initial context7 configuration file --- context7.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 context7.json diff --git a/context7.json b/context7.json new file mode 100644 index 0000000..c05573f --- /dev/null +++ b/context7.json @@ -0,0 +1,4 @@ +{ + "url": "https://context7.com/deploystackio/documentation", + "public_key": "pk_ElwBaquFd3aorFHMpJAin" +} \ No newline at end of file From 52f792c0b4d238dfa4c3b9ddb9657a60850a4bbe Mon Sep 17 00:00:00 2001 From: Lasim Date: Thu, 25 Dec 2025 10:52:50 +0100 Subject: [PATCH 3/5] fix: update documentation links to use the new general path structure --- check-links.js | 55 +++++++++-- development/backend/auth.mdx | 2 +- .../mcp-configuration-architecture.mdx | 8 +- development/backend/oauth-providers.mdx | 2 +- development/frontend/architecture.mdx | 2 +- development/frontend/index.mdx | 6 +- development/frontend/ui/index.mdx | 4 +- .../satellite/backend-communication.mdx | 2 +- .../satellite/mcp-server-token-injection.mdx | 4 +- development/satellite/registration.mdx | 2 +- general/architecture.mdx | 10 +- general/auth.mdx | 2 +- general/github-oauth-setup.mdx | 4 +- general/mcp-admin-schema-workflow.mdx | 16 +-- general/mcp-catalog.mdx | 10 +- general/mcp-configuration.mdx | 18 ++-- general/mcp-installation.mdx | 8 +- general/mcp-oauth.mdx | 12 +-- general/mcp-team-installation.mdx | 18 ++-- general/mcp-user-configuration.mdx | 14 +-- general/onboard-new-team-members.mdx | 2 +- general/teams.mdx | 12 +-- package-lock.json | 98 +++++++++++++++++++ package.json | 1 + self-hosted/docker-compose.mdx | 2 +- 25 files changed, 225 insertions(+), 89 deletions(-) diff --git a/check-links.js b/check-links.js index 793c1bb..caf284c 100644 --- a/check-links.js +++ b/check-links.js @@ -10,7 +10,12 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url)); const IGNORED_URLS = [ 'https://deploystack.io', 'https://deploystack.io/*', - 'https://cloud.deploystack.io' + 'https://cloud.deploystack.io', + 'https://docs.deploystack.io', + 'https://mintlify.com', + 'https://mintlify.com/*', + 'https://discord.gg/', + 'https://discord.gg/*' ]; // Check if a URL should be ignored @@ -55,11 +60,11 @@ const checkLocalFile = (linkPath, filePath) => { if (linkPath.startsWith('/') && !linkPath.startsWith('//') && !linkPath.startsWith('http')) { // Remove hash fragment before checking file existence const [baseUrl] = linkPath.split('#'); - + // Map the URL to the actual file location - // Since our URLs are now root-level but files are in docs/ - const actualFilePath = path.join(process.cwd(), 'docs', baseUrl.substring(1)); - + // Files are in the root directory structure + const actualFilePath = path.join(process.cwd(), baseUrl.substring(1)); + // Try both .mdx and .md extensions const possiblePaths = [ actualFilePath + '.mdx', @@ -67,7 +72,7 @@ const checkLocalFile = (linkPath, filePath) => { path.join(actualFilePath, 'index.mdx'), path.join(actualFilePath, 'index.md') ]; - + for (const possiblePath of possiblePaths) { try { fs.accessSync(possiblePath, fs.constants.F_OK); @@ -77,7 +82,7 @@ const checkLocalFile = (linkPath, filePath) => { // Continue to next possible path } } - + console.log(` ❌ ${linkPath} → File not found (checked: ${possiblePaths.map(p => path.relative(process.cwd(), p)).join(', ')})`); return false; } @@ -189,9 +194,41 @@ const processDirectory = async (dir) => { return allValid; }; -// Start processing +// Directories to skip during scanning +const SKIP_DIRS = ['node_modules', '.git', '.next', 'out', '.github', '.source']; + +// Modified processDirectory to skip certain directories +const shouldSkipDirectory = (dirName) => { + return SKIP_DIRS.includes(dirName); +}; + +// Start processing from current directory console.log('📝 Checking markdown links...\n'); -processDirectory('docs').then(allValid => { + +const scanDirectory = async (dir) => { + let allValid = true; + const files = fs.readdirSync(dir); + + for (const file of files) { + const filePath = path.join(dir, file); + const stat = fs.statSync(filePath); + + if (stat.isDirectory()) { + // Skip certain directories + if (!shouldSkipDirectory(file)) { + const isValid = await processDirectory(filePath); + if (!isValid) allValid = false; + } + } else if (file.endsWith('.md') || file.endsWith('.mdx')) { + const isValid = await processFile(filePath); + if (!isValid) allValid = false; + } + } + + return allValid; +}; + +scanDirectory(process.cwd()).then(allValid => { if (!allValid) { console.log('❌ Some links are invalid!'); process.exit(1); diff --git a/development/backend/auth.mdx b/development/backend/auth.mdx index 3a6fbc9..143c46e 100644 --- a/development/backend/auth.mdx +++ b/development/backend/auth.mdx @@ -4,7 +4,7 @@ description: Technical documentation for the DeployStack backend authentication --- -This document provides technical details about the DeployStack backend authentication system implementation. For user-facing authentication configuration, see [Authentication Methods](/auth). For OAuth provider implementation details, see [OAuth Provider Implementation](/development/backend/oauth-providers) and [OAuth2 Server Implementation](/development/backend/oauth2-server). +This document provides technical details about the DeployStack backend authentication system implementation. For user-facing authentication configuration, see [Authentication Methods](/general/auth). For OAuth provider implementation details, see [OAuth Provider Implementation](/development/backend/oauth-providers) and [OAuth2 Server Implementation](/development/backend/oauth2-server). ## Architecture Overview diff --git a/development/backend/mcp-configuration-architecture.mdx b/development/backend/mcp-configuration-architecture.mdx index d5f038a..d9f68a8 100644 --- a/development/backend/mcp-configuration-architecture.mdx +++ b/development/backend/mcp-configuration-architecture.mdx @@ -416,9 +416,9 @@ For specific implementation details: - [Backend API](/development/backend/api/) - Complete API endpoint documentation - [Database Schema](/development/backend/database/) - Database structure and relationships - [Job Queue System](/development/backend/job-queue) - Background job processing for registry sync -- [Teams](/teams) - Team management and structure -- [MCP Configuration System](/mcp-configuration) - User-facing configuration guide -- [MCP Installation](/mcp-installation) - Installation and team setup -- [MCP Catalog](/mcp-catalog) - Official registry integration details +- [Teams](/general/teams) - Team management and structure +- [MCP Configuration System](/general/mcp-configuration) - User-facing configuration guide +- [MCP Installation](/general/mcp-installation) - Installation and team setup +- [MCP Catalog](/general/mcp-catalog) - Official registry integration details The three-tier configuration architecture provides a robust foundation for managing complex MCP server configurations in multi-user team environments while maintaining security, flexibility, and ease of use. The system seamlessly handles both manually created custom servers and automatically synced official registry servers. diff --git a/development/backend/oauth-providers.mdx b/development/backend/oauth-providers.mdx index d536eb9..f670082 100644 --- a/development/backend/oauth-providers.mdx +++ b/development/backend/oauth-providers.mdx @@ -282,4 +282,4 @@ Frontend checks provider status to show login buttons: - [OAuth2 Server Implementation](/development/backend/oauth2-server) - OAuth2 server for API access - [Security Policy](/development/backend/security) - Security implementation details - [Global Settings](/development/backend/global-settings) - Configuration management -- [GitHub OAuth Setup](/github-oauth-setup) - User-facing GitHub OAuth setup guide +- [GitHub OAuth Setup](/general/github-oauth-setup) - User-facing GitHub OAuth setup guide diff --git a/development/frontend/architecture.mdx b/development/frontend/architecture.mdx index 6c7d7e6..f0a5781 100644 --- a/development/frontend/architecture.mdx +++ b/development/frontend/architecture.mdx @@ -580,7 +580,7 @@ export function createColumns(): ColumnDef[] { ### Table Components -For table implementations, use the shadcn-vue Table components as documented in the [Table Design System](/development/frontend/ui/-table). Never use raw HTML table elements. +For table implementations, use the shadcn-vue Table components as documented in the [Table Design System](/development/frontend/ui/design-system-table). Never use raw HTML table elements. ## Component Communication Patterns diff --git a/development/frontend/index.mdx b/development/frontend/index.mdx index b1b78a7..75f5e31 100644 --- a/development/frontend/index.mdx +++ b/development/frontend/index.mdx @@ -67,7 +67,7 @@ The frontend follows a feature-based modular architecture with clear separation For comprehensive component development guidelines, including Vue SFC best practices, component structure patterns, and implementation standards, see the [Frontend Architecture - Component Implementation Standards](/development/frontend/architecture#component-implementation-standards) section. -For table-specific implementations, refer to the [Table Design System](/development/frontend/ui/-table) guide. +For table-specific implementations, refer to the [Table Design System](/development/frontend/ui/design-system-table) guide. ## UI Components and Styling @@ -75,7 +75,7 @@ The frontend uses **TailwindCSS** for styling with **shadcn-vue** component libr ### ⚠️ **Mandatory Design Patterns** -All structured information displays must follow the **[Structured Data Display Pattern](/development/frontend/ui/-structured-data)**. This includes: +All structured information displays must follow the **[Structured Data Display Pattern](/development/frontend/ui/design-system-structured-data)**. This includes: - User profiles and settings - Form layouts - Configuration displays @@ -125,7 +125,7 @@ Continue reading the detailed guides: - [Frontend Architecture](/development/frontend/architecture) - Application architecture, patterns, and development principles - [UI Design System](/development/frontend/ui/) - Component patterns, styling guidelines, and design standards -- **[Structured Data Display Pattern](/development/frontend/ui/-structured-data)** - **Mandatory pattern** for consistent information display +- **[Structured Data Display Pattern](/development/frontend/ui/design-system-structured-data)** - **Mandatory pattern** for consistent information display - [Environment Variables](/development/frontend/environment-variables) - Complete environment configuration guide - [Global Event Bus](/development/frontend/event-bus) - Cross-component communication system - [Internationalization (i18n)](/development/frontend/internationalization) - Multi-language support diff --git a/development/frontend/ui/index.mdx b/development/frontend/ui/index.mdx index f735c3e..1be53bd 100644 --- a/development/frontend/ui/index.mdx +++ b/development/frontend/ui/index.mdx @@ -167,9 +167,9 @@ This hierarchy is a **design system requirement** and must be followed consisten ## Data Tables -For data table implementation, see the dedicated [Table Design System](/development/frontend/ui/-table) guide. +For data table implementation, see the dedicated [Table Design System](/development/frontend/ui/design-system-table) guide. -For pagination implementation, see the [Pagination Implementation Guide](/development/frontend/ui/-pagination). +For pagination implementation, see the [Pagination Implementation Guide](/development/frontend/ui/design-system-pagination). ## Badge Design Patterns diff --git a/development/satellite/backend-communication.mdx b/development/satellite/backend-communication.mdx index f2d9018..35079a5 100644 --- a/development/satellite/backend-communication.mdx +++ b/development/satellite/backend-communication.mdx @@ -293,7 +293,7 @@ See `services/backend/src/db/schema.ts` for complete schema definitions. 4. Backend consumes single-use token and issues permanent API key 5. Satellite stores API key securely for ongoing communication -For detailed token validation process, see [Registration Security](/development/backend/satellite-communication#satellite-pairing-process). +For detailed token validation process, see [Registration Security](/development/backend/satellite/communication#satellite-pairing-process). **Ongoing Operations:** 1. All requests include `Authorization: Bearer {api_key}` diff --git a/development/satellite/mcp-server-token-injection.mdx b/development/satellite/mcp-server-token-injection.mdx index 75cfd8a..d704d25 100644 --- a/development/satellite/mcp-server-token-injection.mdx +++ b/development/satellite/mcp-server-token-injection.mdx @@ -227,7 +227,7 @@ private isCacheValid(cachedAt: number, expiresAt: string | null): boolean { ### Tool Execution Injection -**File**: [services/satellite/src/core/mcp-server-wrapper.ts](https://github.com/deploystackio/deploystack/blob/main/services/satellite/src/core/mcp-server-wrapper.ts:711-760) +**File**: [services/satellite/src/core/mcp-server-wrapper.ts](https://github.com/deploystackio/deploystack/blob/main/services/satellite/src/core/mcp-server-wrapper.ts) **Purpose**: Injects OAuth tokens when executing tools on HTTP/SSE MCP servers. @@ -438,7 +438,7 @@ async handleHttpToolCall(serverName: string, originalToolName: string, args: unk ### Tool Discovery Injection -**File**: [services/satellite/src/services/remote-tool-discovery-manager.ts](https://github.com/deploystackio/deploystack/blob/main/services/satellite/src/services/remote-tool-discovery-manager.ts:376-440) +**File**: [services/satellite/src/services/remote-tool-discovery-manager.ts](https://github.com/deploystackio/deploystack/blob/main/services/satellite/src/services/remote-tool-discovery-manager.ts) **Purpose**: Injects OAuth tokens when discovering available tools from HTTP/SSE MCP servers. diff --git a/development/satellite/registration.mdx b/development/satellite/registration.mdx index 68b5022..4090943 100644 --- a/development/satellite/registration.mdx +++ b/development/satellite/registration.mdx @@ -187,7 +187,7 @@ Satellites require registration tokens generated by administrators: - Scope: Can register team satellites for specific team only - Expiration: 24 hours (configurable) -For token generation APIs, see [Satellite Communication - Registration Tokens](/development/backend/satellite-communication#satellite-pairing-process). +For token generation APIs, see [Satellite Communication - Registration Tokens](/development/backend/satellite/communication#satellite-pairing-process). ### Security Model diff --git a/general/architecture.mdx b/general/architecture.mdx index 1f20ef6..3d5cddb 100644 --- a/general/architecture.mdx +++ b/general/architecture.mdx @@ -77,16 +77,16 @@ DeployStack introduces a **Control Plane / Satellite architecture** that brings The cloud-based control plane provides centralized management for all MCP infrastructure: #### Team & Access Management -- **Role-Based Access Control**: [Define teams](/teams), [roles, and permissions](/roles) for MCP server access +- **Role-Based Access Control**: [Define teams](/general/teams), [roles, and permissions](/general/roles) for MCP server access - **Centralized User Management**: Single source of truth for team membership and access rights - **Policy Enforcement**: Granular control over which teams can access which MCP servers #### Secure Credential Vault -- **Encrypted Storage**: All API keys and tokens stored with [enterprise-grade encryption](/security) +- **Encrypted Storage**: All API keys and tokens stored with [enterprise-grade encryption](/general/security) - **Zero-Exposure Model**: Developers never directly handle credentials #### MCP Server Catalog -- **Configuration Management**: [Store and manage all MCP server configurations](/mcp-catalog) including commands, arguments, and environment variables +- **Configuration Management**: [Store and manage all MCP server configurations](/general/mcp-catalog) including commands, arguments, and environment variables - **Version Control**: Track changes to MCP server configurations over time (coming soon) #### Analytics & Governance (Coming soon) @@ -153,7 +153,7 @@ Client Request → OAuth Validation → Team Authorization → Satellite MCP Pro ## Security Architecture -DeployStack implements enterprise-grade security across all components of the platform. For comprehensive security details including credential management, access control, and compliance features, see our [Security Documentation](/security). +DeployStack implements enterprise-grade security across all components of the platform. For comprehensive security details including credential management, access control, and compliance features, see our [Security Documentation](/general/security). Key security principles: - **OAuth Bearer Token Authentication**: Standard OAuth flow with secure credential management @@ -289,4 +289,4 @@ DeployStack supports multiple team memberships with instant context switching: --- -**Next Steps**: Explore our [Quick Start Guide](/quick-start) to experience the architecture in action, or dive into the [Development Documentation](/development) to understand implementation details. +**Next Steps**: Explore our [Quick Start Guide](/general/quick-start) to experience the architecture in action, or dive into the [Development Documentation](/development) to understand implementation details. diff --git a/general/auth.mdx b/general/auth.mdx index 4cee812..ea2534c 100644 --- a/general/auth.mdx +++ b/general/auth.mdx @@ -228,4 +228,4 @@ For developers and integrations, DeployStack provides REST API endpoints for aut --- -For technical implementation details, see the [Backend Authentication Documentation](/development/backend/api/) and [Global Settings Management](/global-settings). +For technical implementation details, see the [Backend Authentication Documentation](/development/backend/api/) and [Global Settings Management](/general/global-settings). diff --git a/general/github-oauth-setup.mdx b/general/github-oauth-setup.mdx index a4bec37..80e39c7 100644 --- a/general/github-oauth-setup.mdx +++ b/general/github-oauth-setup.mdx @@ -155,7 +155,7 @@ When a user logs in via GitHub, DeployStack stores: ## Related Documentation -- [GitHub Application](/github-application) - For repository data access and MCP server creation -- [Global Settings](/global-settings) - Complete global settings reference +- [GitHub Application](/general/github-application) - For repository data access and MCP server creation +- [Global Settings](/general/global-settings) - Complete global settings reference GitHub OAuth provides a seamless authentication experience for your users while maintaining security and proper access control within DeployStack. diff --git a/general/mcp-admin-schema-workflow.mdx b/general/mcp-admin-schema-workflow.mdx index a5e3168..0f46d64 100644 --- a/general/mcp-admin-schema-workflow.mdx +++ b/general/mcp-admin-schema-workflow.mdx @@ -28,7 +28,7 @@ DeployStack supports adding MCP servers to the catalog through two methods: 4. Enriches with GitHub metadata (README, stars, topics) 5. Stores in catalog ready for team installation -For details on the sync process, see [MCP Catalog - Official Registry Integration](/mcp-catalog#official-mcp-registry-integration). +For details on the sync process, see [MCP Catalog - Official Registry Integration](/general/mcp-catalog#official-mcp-registry-integration). ### Path 2: Manual Creation (Custom) @@ -54,7 +54,7 @@ When you manually add custom MCP servers to the catalog, you design the entire c - **What users can always customize** (user-level settings like local paths, personal preferences) - **Lock/unlock defaults and visibility controls** for each configurable element -For an overview of how the three-tier system works, see [MCP Configuration System](/mcp-configuration). To understand how official registry servers are automatically transformed, see [MCP Catalog - Official Registry Integration](/mcp-catalog#official-mcp-registry-integration). +For an overview of how the three-tier system works, see [MCP Configuration System](/general/mcp-configuration). To understand how official registry servers are automatically transformed, see [MCP Catalog - Official Registry Integration](/general/mcp-catalog#official-mcp-registry-integration). ## The Four-Step Manual Creation Workflow @@ -191,7 +191,7 @@ When servers are synced from the official MCP Registry, the transformation happe - URL → Template level (locked) - Headers → Team/user level based on authentication requirements -For complete details on automatic transformation, see the [Official Registry Integration documentation](/mcp-catalog#official-mcp-registry-integration). +For complete details on automatic transformation, see the [Official Registry Integration documentation](/general/mcp-catalog#official-mcp-registry-integration). ## Step 3: Configuration Schema Definition for Manual Servers (Detailed) @@ -428,10 +428,10 @@ The schema system (whether manual or automatic) provides: For understanding how schemas work across the system: -- [MCP Configuration System](/mcp-configuration) - Overview of the three-tier system schemas enable -- [MCP Catalog - Official Registry Integration](/mcp-catalog#official-mcp-registry-integration) - How automatic schema transformation works -- [Team Installation](/mcp-team-installation) - How teams use schemas to configure installations -- [User Configuration](/mcp-user-configuration) - How users interact with schema boundaries -- [MCP Catalog](/mcp-catalog) - Where schemas are stored and managed +- [MCP Configuration System](/general/mcp-configuration) - Overview of the three-tier system schemas enable +- [MCP Catalog - Official Registry Integration](/general/mcp-catalog#official-mcp-registry-integration) - How automatic schema transformation works +- [Team Installation](/general/mcp-team-installation) - How teams use schemas to configure installations +- [User Configuration](/general/mcp-user-configuration) - How users interact with schema boundaries +- [MCP Catalog](/general/mcp-catalog) - Where schemas are stored and managed The schema creation system—whether through sophisticated manual categorization or automatic registry transformation—is the foundation that enables secure, flexible MCP server configuration with precise control over configuration inheritance across all teams and users. diff --git a/general/mcp-catalog.mdx b/general/mcp-catalog.mdx index f94402f..ffdbec4 100644 --- a/general/mcp-catalog.mdx +++ b/general/mcp-catalog.mdx @@ -56,7 +56,7 @@ The catalog contains servers from two sources: Servers are organized into categories for easy discovery and filtering. Categories are simple organizational labels that group servers by their purpose or functionality. -For a complete explanation of how MCP categories work, see the [MCP Categories Guide](/mcp-categories). +For a complete explanation of how MCP categories work, see the [MCP Categories Guide](/general/mcp-categories). **Note**: Only Global Administrators can create and manage categories. @@ -142,7 +142,7 @@ Each server in the catalog includes comprehensive metadata: - **Tags**: Searchable keywords and labels - **Status**: Active, deprecated, or maintenance mode - **Sync Status**: Whether server is synced from official registry -- **OAuth Requirement**: Whether server requires OAuth authorization (see [OAuth-Enabled MCP Servers](/mcp-oauth)) +- **OAuth Requirement**: Whether server requires OAuth authorization (see [OAuth-Enabled MCP Servers](/general/mcp-oauth)) #### Technical Specifications - **Language**: Programming language (TypeScript, Python, etc.) @@ -159,7 +159,7 @@ Each server in the catalog includes comprehensive metadata: - **Prompts**: Pre-configured prompts and templates - **Configuration Schema**: Template definitions for team and user configuration options -For details on how configuration schemas work in DeployStack's three-tier system, see [MCP Configuration System](/mcp-configuration). +For details on how configuration schemas work in DeployStack's three-tier system, see [MCP Configuration System](/general/mcp-configuration). #### Repository Integration - **Repository URL**: Source code repository (GitHub, GitLab, etc.) @@ -212,7 +212,7 @@ DeployStack automatically syncs with the official MCP Registry at registry.model ### GitHub Integration -Integration with GitHub repositories for automatic synchronization and metadata extraction. For complete details on setting up and using GitHub integration, see the [GitHub App Integration Guide](/github-application). +Integration with GitHub repositories for automatic synchronization and metadata extraction. For complete details on setting up and using GitHub integration, see the [GitHub App Integration Guide](/general/github-application). **Key Features:** - **Automatic Repository Sync**: Pull server metadata from GitHub repositories @@ -402,7 +402,7 @@ The catalog integrates seamlessly with DeployStack's deployment system: - **Repository Access**: Secure GitHub integration - **Privacy Controls**: Respect team privacy and data boundaries -For detailed security information about configuration handling, see [MCP Configuration System](/mcp-configuration). +For detailed security information about configuration handling, see [MCP Configuration System](/general/mcp-configuration). ## Future Enhancements diff --git a/general/mcp-configuration.mdx b/general/mcp-configuration.mdx index 78703fa..9ba8672 100644 --- a/general/mcp-configuration.mdx +++ b/general/mcp-configuration.mdx @@ -16,7 +16,7 @@ The system separates configuration into three distinct layers: This architecture enables teams to share common settings like API keys while allowing individual members to use their own private credentials or customize personal settings like local file paths - all within the same team installation, maintaining both team collaboration and individual privacy. -**Note on OAuth-Enabled MCP Servers:** Some MCP servers require OAuth authorization, which happens at the user level—separate from this three-tier configuration system. Each user must authorize individually with their own account. For details, see [OAuth-Enabled MCP Servers](/mcp-oauth). +**Note on OAuth-Enabled MCP Servers:** Some MCP servers require OAuth authorization, which happens at the user level—separate from this three-tier configuration system. Each user must authorize individually with their own account. For details, see [OAuth-Enabled MCP Servers](/general/mcp-oauth). ## How It Works @@ -60,7 +60,7 @@ This architecture enables teams to share common settings like API keys while all The heart of the system is sophisticated lock/unlock controls with precise categorization: -**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). +**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](/general/security). **Global Administrator Controls:** - **Sophisticated Categorization** - Categorize every configuration element into Template/Team/User tiers @@ -89,19 +89,19 @@ The heart of the system is sophisticated lock/unlock controls with precise categ Each tier has its own focused workflow: ### For Global Administrators -**[Admin Schema Workflow](/mcp-admin-schema-workflow)** - Learn how to transform raw MCP configurations into secure three-tier schemas with sophisticated lock/unlock controls through the Configuration Schema Step. +**[Admin Schema Workflow](/general/mcp-admin-schema-workflow)** - Learn how to transform raw MCP configurations into secure three-tier schemas with sophisticated lock/unlock controls through the Configuration Schema Step. Key workflow: Repository → Claude Desktop Config → **Configuration Schema Categorization** → Basic Info → Catalog Entry ### For Team Administrators (`team_admin` role) -**[Team Installation](/mcp-team-installation)** - Learn how to install MCP servers from the catalog, configure shared team settings, and control user access. +**[Team Installation](/general/mcp-team-installation)** - Learn how to install MCP servers from the catalog, configure shared team settings, and control user access. Key workflow: Browse Catalog → Configure Team Settings → Set Lock Controls → Deploy Installation **Note:** Only users with `team_admin` role can perform team installations. Users with `team_user` role skip this step and go directly to user configuration. ### For Individual Users (both `team_admin` and `team_user` roles) -**[User Configuration](/mcp-user-configuration)** - Learn how to configure personal MCP settings and customize your workflow. +**[User Configuration](/general/mcp-user-configuration)** - Learn how to configure personal MCP settings and customize your workflow. Key workflow: Access Team Installation → Configure Personal Settings → Save Configuration @@ -244,9 +244,9 @@ The three-tier system adapts automatically based on the transport type detected For complete system understanding: -- [MCP Catalog](/mcp-catalog) - Browse and discover available MCP servers -- [Teams](/teams) - Team structure and membership management -- [MCP Installation](/mcp-installation) - Basic MCP server installation concepts -- [Security and Privacy](/security) - Platform security and data protection +- [MCP Catalog](/general/mcp-catalog) - Browse and discover available MCP servers +- [Teams](/general/teams) - Team structure and membership management +- [MCP Installation](/general/mcp-installation) - Basic MCP server installation concepts +- [Security and Privacy](/general/security) - Platform security and data protection The three-tier configuration system provides secure, scalable MCP server management that grows from individual developers to enterprise teams while maintaining simplicity and security at every level. Global administrators have sophisticated control over configuration boundaries through schema categorization, ensuring appropriate access and customization at each tier. The OAuth-based team authentication ensures enterprise-grade security and governance. diff --git a/general/mcp-installation.mdx b/general/mcp-installation.mdx index 395f2f1..e19d4c9 100644 --- a/general/mcp-installation.mdx +++ b/general/mcp-installation.mdx @@ -6,7 +6,7 @@ description: Learn how to install and manage MCP servers within your team worksp MCP server installations are how your team actually uses MCP servers from the catalog. Think of the MCP catalog as a "store" where you browse available servers, and installations as the "purchased items" that your team can actually use with your own configurations. -Installations represent the team layer in DeployStack's three-tier configuration system, where teams configure shared settings that all team members use. For complete details about how arguments, environment variables, and credentials work, see the [MCP Configuration System](/mcp-configuration) documentation. +Installations represent the team layer in DeployStack's three-tier configuration system, where teams configure shared settings that all team members use. For complete details about how arguments, environment variables, and credentials work, see the [MCP Configuration System](/general/mcp-configuration) documentation. ## Understanding the Connection @@ -41,7 +41,7 @@ graph TD - **Team Configuration**: Teams manage the shared configuration layer that all team members inherit - **Team Privacy**: Other teams cannot see or access your installations -For detailed information about how team configurations work within the three-tier system, see [MCP Configuration System](/mcp-configuration). +For detailed information about how team configurations work within the three-tier system, see [MCP Configuration System](/general/mcp-configuration). ### Why Team-Scoped? @@ -135,8 +135,8 @@ The team-scoped installation system provides strong security boundaries: - **Independent Setup**: No shared configuration between teams - **Secure Defaults**: Installations use secure default settings -For comprehensive details about DeployStack's security model for configurations, see [MCP Configuration System](/mcp-configuration). +For comprehensive details about DeployStack's security model for configurations, see [MCP Configuration System](/general/mcp-configuration). MCP server installations provide the bridge between the global catalog of available servers and your team's actual working environment. They represent the team layer in DeployStack's three-tier configuration system, managing shared settings that all team members inherit while allowing individual customization. -For complete understanding of how installations fit into the broader configuration architecture, see the [MCP Configuration System](/mcp-configuration) documentation. +For complete understanding of how installations fit into the broader configuration architecture, see the [MCP Configuration System](/general/mcp-configuration) documentation. \ No newline at end of file diff --git a/general/mcp-oauth.mdx b/general/mcp-oauth.mdx index 3c2ee9e..4cc6647 100644 --- a/general/mcp-oauth.mdx +++ b/general/mcp-oauth.mdx @@ -145,7 +145,7 @@ Your OAuth tokens are encrypted in the database using AES-256-GCM encryption: - Refresh tokens encrypted before storage - Only decrypted when Satellite needs them at runtime -For complete security details, see [Security and Privacy](/security). +For complete security details, see [Security and Privacy](/general/security). ### Privacy Guarantees @@ -243,10 +243,10 @@ The Satellite will detect expired tokens and return an error. You'll see "Auth R For complete understanding of OAuth MCP servers in context: -- [MCP Configuration System](/mcp-configuration) - Three-tier architecture (OAuth is separate) -- [MCP Team Installation](/mcp-team-installation) - How team admins install OAuth servers -- [MCP User Configuration](/mcp-user-configuration) - User settings and authorization -- [MCP Catalog](/mcp-catalog) - Discovering OAuth-enabled servers -- [Security and Privacy](/security) - Token encryption and storage security +- [MCP Configuration System](/general/mcp-configuration) - Three-tier architecture (OAuth is separate) +- [MCP Team Installation](/general/mcp-team-installation) - How team admins install OAuth servers +- [MCP User Configuration](/general/mcp-user-configuration) - User settings and authorization +- [MCP Catalog](/general/mcp-catalog) - Discovering OAuth-enabled servers +- [Security and Privacy](/general/security) - Token encryption and storage security OAuth-enabled MCP servers provide secure, per-user access to external services while maintaining privacy and security through encrypted token storage and automatic token management. diff --git a/general/mcp-team-installation.mdx b/general/mcp-team-installation.mdx index e5df1ba..88e22fe 100644 --- a/general/mcp-team-installation.mdx +++ b/general/mcp-team-installation.mdx @@ -25,7 +25,7 @@ As a team administrator (`team_admin`), you: - Cannot change lock/unlock settings - Can only configure their own personal user-level settings (if unlocked) -For an overview of the three-tier system, see [MCP Configuration System](/mcp-configuration). For details on how global administrators create the schemas that define your configuration options, see [Admin Schema Workflow](/mcp-admin-schema-workflow). +For an overview of the three-tier system, see [MCP Configuration System](/general/mcp-configuration). For details on how global administrators create the schemas that define your configuration options, see [Admin Schema Workflow](/general/mcp-admin-schema-workflow). ## Installation Process @@ -41,7 +41,7 @@ Each installation gets a meaningful name like "DevOps Team Filesystem" or "Custo **Server Sources**: When browsing the catalog, you'll see servers from multiple sources - official registry servers (automatically synced and marked with badges) and manually created custom integrations. Both types work identically with DeployStack's three-tier configuration system. -**OAuth-Enabled MCP Servers:** Some MCP servers require OAuth authorization (Box, Google Drive, Slack, etc.). When you install an OAuth server, you'll authorize with your own account first, but each team member must then authorize individually with their own account. For complete details, see [OAuth-Enabled MCP Servers](/mcp-oauth). +**OAuth-Enabled MCP Servers:** Some MCP servers require OAuth authorization (Box, Google Drive, Slack, etc.). When you install an OAuth server, you'll authorize with your own account first, but each team member must then authorize individually with their own account. For complete details, see [OAuth-Enabled MCP Servers](/general/mcp-oauth). The configuration options available to you are determined by how the global administrator categorized elements during schema creation. You can only configure elements that were designated as "Team Configurable" in the original schema definition. @@ -148,7 +148,7 @@ User Controls: - **User Isolation** - Each user's private credentials are encrypted separately - **Role-Based Access** - Only `team_admin` can manage team-level credentials; `team_user` cannot access them -For complete details on how secret fields are encrypted and protected, see [Security and Privacy](/security). +For complete details on how secret fields are encrypted and protected, see [Security and Privacy](/general/security). **Updates:** - Update shared team credentials without affecting user configurations @@ -183,16 +183,16 @@ Based on your lock/unlock decisions and the schema boundaries set by global admi - **Get consistent baseline** - Inherit locked team settings while customizing unlocked ones - **Benefit from satellite execution** - Remote MCP server execution with proper credential isolation -For details on the user experience, see [MCP User Configuration](/mcp-user-configuration). +For details on the user experience, see [MCP User Configuration](/general/mcp-user-configuration). ## Related Documentation For complete understanding of team installations in context: -- [MCP Configuration System](/mcp-configuration) - Overview of the three-tier system -- [Admin Schema Workflow](/mcp-admin-schema-workflow) - How global administrators create the schemas that define your configuration options -- [MCP User Configuration](/mcp-user-configuration) - How users interact with team installations -- [Teams](/teams) - Team structure and management -- [MCP Catalog](/mcp-catalog) - Browsing and selecting MCP servers +- [MCP Configuration System](/general/mcp-configuration) - Overview of the three-tier system +- [Admin Schema Workflow](/general/mcp-admin-schema-workflow) - How global administrators create the schemas that define your configuration options +- [MCP User Configuration](/general/mcp-user-configuration) - How users interact with team installations +- [Teams](/general/teams) - Team structure and management +- [MCP Catalog](/general/mcp-catalog) - Browsing and selecting MCP servers Team installation is the critical bridge in DeployStack's three-tier configuration system, enabling secure shared resources while supporting individual team member productivity. diff --git a/general/mcp-user-configuration.mdx b/general/mcp-user-configuration.mdx index 9865da1..e0fdab7 100644 --- a/general/mcp-user-configuration.mdx +++ b/general/mcp-user-configuration.mdx @@ -17,7 +17,7 @@ As a user, you personalize your MCP server experience within team-defined bounda - **Simplified Interface** showing only settings you can modify - **Credential Privacy** - Your personal credentials are never visible to other team members -The user tier builds on team configurations, which build on global schemas. For an overview of the complete system, see [MCP Configuration System](/mcp-configuration). +The user tier builds on team configurations, which build on global schemas. For an overview of the complete system, see [MCP Configuration System](/general/mcp-configuration). ## Configuration Boundaries @@ -38,9 +38,9 @@ Your configuration options are precisely determined by how global administrators - **Use Private Credentials** - Configure your own personal credentials that override team settings - **Mix Both** - Use team credentials for some services and personal credentials for others -**Note on OAuth-Enabled MCP Servers:** If your team uses OAuth servers (Box, Google Drive, etc.), you must authorize individually with your own account even after your team admin installs the server. For complete details, see [OAuth-Enabled MCP Servers](/mcp-oauth). +**Note on OAuth-Enabled MCP Servers:** If your team uses OAuth servers (Box, Google Drive, etc.), you must authorize individually with your own account even after your team admin installs the server. For complete details, see [OAuth-Enabled MCP Servers](/general/mcp-oauth). -For details on how global administrators define these boundaries and team administrators control access, see [Admin Schema Workflow](/mcp-admin-schema-workflow) and [Team Installation](/mcp-team-installation). +For details on how global administrators define these boundaries and team administrators control access, see [Admin Schema Workflow](/general/mcp-admin-schema-workflow) and [Team Installation](/general/mcp-team-installation). ## User Interface Experience @@ -175,9 +175,9 @@ Environment: { For complete understanding of user configuration in context: -- [MCP Configuration System](/mcp-configuration) - Overview of the three-tier system -- [Team Installation](/mcp-team-installation) - How team settings affect your options -- [Admin Schema Workflow](/mcp-admin-schema-workflow) - How configuration boundaries are precisely defined through schema categorization -- [Teams](/teams) - Team membership and structure +- [MCP Configuration System](/general/mcp-configuration) - Overview of the three-tier system +- [Team Installation](/general/mcp-team-installation) - How team settings affect your options +- [Admin Schema Workflow](/general/mcp-admin-schema-workflow) - How configuration boundaries are precisely defined through schema categorization +- [Teams](/general/teams) - Team membership and structure User configuration represents the final personalization layer in DeployStack's three-tier system, enabling individual productivity while maintaining team security and organizational standards. diff --git a/general/onboard-new-team-members.mdx b/general/onboard-new-team-members.mdx index cb93290..7eccf8c 100644 --- a/general/onboard-new-team-members.mdx +++ b/general/onboard-new-team-members.mdx @@ -40,7 +40,7 @@ The new team member needs to complete these steps first: 2. **Select Your Team**: Find the team you want to add members to and click "Manage" 3. **Add New Member**: Click "Add Member" and enter the new member's email address -Read more about Roles: [Team Roles](/roles) +Read more about Roles: [Team Roles](/general/roles) ## Step 3: Complete Team Setup diff --git a/general/teams.mdx b/general/teams.mdx index dbb2524..08bbc1a 100644 --- a/general/teams.mdx +++ b/general/teams.mdx @@ -46,7 +46,7 @@ Teams serve as comprehensive containers for all your team resources: - **Global MCP Server Access**: Browse and use community-wide MCP servers - **Server Management**: Team administrators can create, edit, and delete team servers - **Version Control**: Track different versions of your team's MCP servers -- **GitHub Integration**: Automatic synchronization with GitHub repositories (see [GitHub App Integration Guide](/github-application)) +- **GitHub Integration**: Automatic synchronization with GitHub repositories (see [GitHub App Integration Guide](/general/github-application)) - **Custom Configurations**: Team-specific server settings and parameters - **Process History**: Complete logs and monitoring data for team MCP servers @@ -55,7 +55,7 @@ Teams serve as comprehensive containers for all your team resources: - **Credentials Management**: Secure storage and sharing of API keys and authentication tokens - **Team-Scoped Settings**: Configuration that applies to all team members -For complete details on how DeployStack handles arguments, environment variables, and credentials, see the [MCP Configuration System](/mcp-configuration) documentation. +For complete details on how DeployStack handles arguments, environment variables, and credentials, see the [MCP Configuration System](/general/mcp-configuration) documentation. ## Team Management @@ -231,7 +231,7 @@ Each team maintains complete isolation: - **Independent Servers**: MCP servers in one team don't affect others - **Secure Boundaries**: No cross-team access to resources or credentials -For detailed information about configuration isolation, see [MCP Configuration System](/mcp-configuration). +For detailed information about configuration isolation, see [MCP Configuration System](/general/mcp-configuration). ## Working with Teams @@ -280,7 +280,7 @@ For each team, you can: - **Update Team Name**: Modify the display name - **Edit Description**: Change or add team descriptions -- **Manage Configurations**: Configure team-level settings, credentials, and environment variables (see [MCP Configuration System](/mcp-configuration)) +- **Manage Configurations**: Configure team-level settings, credentials, and environment variables (see [MCP Configuration System](/general/mcp-configuration)) - **Monitor MCP Servers**: View all MCP servers and their status ### Understanding Team Slugs @@ -363,7 +363,7 @@ Your team role affects your ability to: - Configure new MCP servers - Modify server configurations -- Manage team-level MCP server settings (see [MCP Configuration System](/mcp-configuration)) +- Manage team-level MCP server settings (see [MCP Configuration System](/general/mcp-configuration)) - Monitor MCP server status - Access process logs @@ -380,7 +380,7 @@ Consider creating separate teams for: Within each team: - **Group Related Servers**: Configure related MCP servers in the same team -- **Shared Configuration**: Use team-level credentials and settings across servers (see [MCP Configuration System](/mcp-configuration)) +- **Shared Configuration**: Use team-level credentials and settings across servers (see [MCP Configuration System](/general/mcp-configuration)) - **Logical Organization**: Use descriptive names and descriptions Teams provide the foundation for organized, secure, and efficient MCP server management in DeployStack. By understanding how teams work, you can effectively manage your team resources and maintain clean separation between different projects and environments. diff --git a/package-lock.json b/package-lock.json index d835e84..0448bbe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@types/node": "25.0.3", "markdownlint-cli": "^0.47.0", "markdownlint-cli2": "^0.20.0", + "node-fetch": "^3.3.2", "typescript": "5.9.3" } }, @@ -1384,6 +1385,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", @@ -1773,6 +1784,30 @@ "reusify": "^1.0.4" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/figures": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", @@ -1845,6 +1880,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -3428,6 +3476,27 @@ "dev": true, "license": "MIT" }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-emoji": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", @@ -3444,6 +3513,25 @@ "node": ">=18" } }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "node_modules/normalize-package-data": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-8.0.0.tgz", @@ -7026,6 +7114,16 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 20a247e..71f8a5b 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@types/node": "25.0.3", "markdownlint-cli": "^0.47.0", "markdownlint-cli2": "^0.20.0", + "node-fetch": "^3.3.2", "typescript": "5.9.3" } } diff --git a/self-hosted/docker-compose.mdx b/self-hosted/docker-compose.mdx index a6d6ead..732b06e 100644 --- a/self-hosted/docker-compose.mdx +++ b/self-hosted/docker-compose.mdx @@ -7,7 +7,7 @@ description: Deploy DeployStack using Docker Compose for a quick and reliable se Deploy DeployStack using Docker Compose for a quick and reliable self-hosted installation. This method is recommended for most users as it provides a reliable setup with minimal configuration. -Docker containers are for production hosting or self-hosting. For development contributions, check the [Local Setup](/local-setup) guide. +Docker containers are for production hosting or self-hosting. For development contributions, check the [Local Setup](/general/local-setup) guide. From b4aca2635b311a8db958b29cea39f5c77fd295cd Mon Sep 17 00:00:00 2001 From: Lasim Date: Thu, 25 Dec 2025 10:55:17 +0100 Subject: [PATCH 4/5] docs(quick-start): fix MCP Server link to remove trailing slash --- general/quick-start.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/general/quick-start.mdx b/general/quick-start.mdx index 7ece5bd..a703399 100644 --- a/general/quick-start.mdx +++ b/general/quick-start.mdx @@ -147,7 +147,7 @@ Let's make sure your MCP connection is working by testing your pre-installed ser Your account comes with one pre-installed server, but DeployStack offers access to hundreds of MCP servers from the official registry: -1. **Browse the Catalog**: Visit the [MCP Server](https://cloud.deploystack.io/) in your dashboard +1. **Browse the Catalog**: Visit the [MCP Server](https://cloud.deploystack.io) in your dashboard 2. **Choose Servers**: Browse by category or search for specific tools 3. **Add to Team**: Click "Add to Team" on any server 4. **Configure Credentials**: Add required credentials (API keys, tokens, etc.) From fe2cc4dd533036e3e23e3abdff51628ac964a148 Mon Sep 17 00:00:00 2001 From: Lasim Date: Thu, 25 Dec 2025 11:00:52 +0100 Subject: [PATCH 5/5] ci: update permissions and streamline linting jobs for documentation --- .github/workflows/ci.yml | 34 ++++++---------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65cefce..e7608de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,13 +9,11 @@ on: - main permissions: - contents: write - issues: write - pull-requests: write + contents: read jobs: - lint_build: - name: Run ESLint + lint_and_validate: + name: Lint and Validate Documentation runs-on: ubuntu-latest steps: @@ -30,28 +28,8 @@ jobs: - name: Install Dependencies run: npm ci - - name: Run Markdown ESLint + - name: Run Markdown Linting run: npm run lint:md - - name: Run Lint Links - run: npm run lint:links - - release: - name: Run Release - runs-on: ubuntu-latest - needs: lint_build - - steps: - - name: Checkout Code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - run: npm ci - - run: npm audit signatures - - name: Release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: npm run semantic-release + - name: Validate Links + run: npm run lint:links