|
| 1 | +--- |
| 2 | +title: FeatureSets — Permission Control |
| 3 | +description: FeatureSets control which MCP tools, resources, and prompts each AI client can access in McpMux. Create role-based permissions, domain bundles, or read-only views. |
| 4 | +--- |
| 5 | + |
| 6 | +FeatureSets are permission bundles that control what MCP capabilities (tools, resources, and prompts) each AI client can access. They let you grant fine-grained permissions per client, per Space. |
| 7 | + |
| 8 | +## Why FeatureSets |
| 9 | + |
| 10 | +Without permission control, every AI client connected through the gateway can access every tool from every server. This creates risks: |
| 11 | + |
| 12 | +- A junior developer's client could access destructive database tools |
| 13 | +- An experimental AI agent could call deployment tools |
| 14 | +- A read-only analysis tool could accidentally modify production data |
| 15 | + |
| 16 | +FeatureSets solve this by letting you define exactly what each client can do. |
| 17 | + |
| 18 | + |
| 19 | + |
| 20 | +## FeatureSet Types |
| 21 | + |
| 22 | +McpMux creates and manages four types of FeatureSets: |
| 23 | + |
| 24 | +### All |
| 25 | + |
| 26 | +Grants access to **every tool, resource, and prompt** from every connected server in the Space. Use this for fully trusted clients. |
| 27 | + |
| 28 | +### Default |
| 29 | + |
| 30 | +Automatically granted to **all clients** in the Space. Define a baseline set of capabilities that every client gets. You can still add more FeatureSets on top for specific clients. |
| 31 | + |
| 32 | +### ServerAll |
| 33 | + |
| 34 | +Automatically created when a server first connects. Grants access to **all features from that specific server**. For example, when you enable the GitHub server, McpMux creates a "GitHub — All" FeatureSet containing all of GitHub's tools and resources. |
| 35 | + |
| 36 | +### Custom |
| 37 | + |
| 38 | +User-defined FeatureSets with manually selected features. This is where you build your own permission bundles. |
| 39 | + |
| 40 | +## Include and Exclude |
| 41 | + |
| 42 | +Each FeatureSet member can be set to **include** or **exclude** mode: |
| 43 | + |
| 44 | +- **Include** — add this tool/resource/prompt to the set |
| 45 | +- **Exclude** — remove this tool/resource/prompt from the set |
| 46 | + |
| 47 | +Exclude rules always win over include rules. This means you can create a permissive base and then remove specific dangerous tools: |
| 48 | + |
| 49 | +**Example:** "All GitHub except delete operations" |
| 50 | +1. Include the **GitHub — All** ServerAll FeatureSet |
| 51 | +2. Exclude `delete_repository`, `delete_branch`, `delete_file` |
| 52 | + |
| 53 | +## Composition |
| 54 | + |
| 55 | +FeatureSets can **contain other FeatureSets**. This lets you build hierarchical permission structures: |
| 56 | + |
| 57 | +- **"Read Only"** = Include tools that only read data from multiple servers |
| 58 | +- **"Android Development"** = Include "GitHub — All" + "Firebase — All" + specific Gradle tools |
| 59 | +- **"Senior Developer"** = Include "All" but exclude deployment and infrastructure tools |
| 60 | +- **"Intern"** = Include "Read Only" + specific write tools for their assigned project |
| 61 | + |
| 62 | +## Common Use Cases |
| 63 | + |
| 64 | +### Role-Based Access |
| 65 | + |
| 66 | +| FeatureSet | Contains | |
| 67 | +|-----------|----------| |
| 68 | +| Read Only | Search, list, and read tools only | |
| 69 | +| Developer | Read Only + code editing + PR management | |
| 70 | +| DevOps | Developer + deployment + infrastructure | |
| 71 | +| Admin | All capabilities | |
| 72 | + |
| 73 | +### Domain Bundles |
| 74 | + |
| 75 | +| FeatureSet | Contains | |
| 76 | +|-----------|----------| |
| 77 | +| Frontend | Browser tools + CSS/JS linting + design system resources | |
| 78 | +| Backend | Database queries + API testing + log analysis | |
| 79 | +| Full Stack | Frontend + Backend | |
| 80 | + |
| 81 | +### Safety Limits |
| 82 | + |
| 83 | +| FeatureSet | Contains | |
| 84 | +|-----------|----------| |
| 85 | +| No Delete | All minus any delete/remove/drop operations | |
| 86 | +| No Deploy | All minus CI/CD and deployment tools | |
| 87 | +| Sandbox | Only filesystem (read) + search + documentation | |
| 88 | + |
| 89 | +## Managing FeatureSets |
| 90 | + |
| 91 | + |
| 92 | + |
| 93 | +### Creating a Custom FeatureSet |
| 94 | + |
| 95 | +1. Go to the **FeatureSets** page |
| 96 | +2. Click **Create FeatureSet** |
| 97 | +3. Give it a name and optional description |
| 98 | +4. Add members — select features or other FeatureSets |
| 99 | +5. Set each member to include or exclude mode |
| 100 | + |
| 101 | +### Assigning to Clients |
| 102 | + |
| 103 | +FeatureSets are assigned to clients per Space. Go to the **Clients** page, select a client, and manage its FeatureSet grants for each Space. |
| 104 | + |
| 105 | +A client's effective permissions are the combination of all its granted FeatureSets, with exclude rules taking priority. |
| 106 | + |
| 107 | +## Next Steps |
| 108 | + |
| 109 | +- [Set up Clients](/docs/clients/) and assign FeatureSets per Space |
| 110 | +- [Learn about Spaces](/docs/spaces/) for environment isolation |
| 111 | +- [Understand the Gateway](/docs/gateway/) to see how permissions are enforced at request time |
0 commit comments