diff --git a/mcp-worker/src/projectSelectionTools.ts b/mcp-worker/src/projectSelectionTools.ts index 5c233ca5..cc512872 100644 --- a/mcp-worker/src/projectSelectionTools.ts +++ b/mcp-worker/src/projectSelectionTools.ts @@ -17,7 +17,10 @@ export const SelectProjectArgsSchema = z.object({ .string() .optional() .describe( - 'The project key to select. If not provided, will list all available projects to choose from.', + [ + 'The project key to select.', + 'If not provided, will list all available projects to choose from.', + ].join('\n'), ), }) @@ -111,6 +114,7 @@ export function registerProjectSelectionTools( 'Select a project to use for subsequent MCP operations.', 'Call without parameters to list available projects.', 'Do not automatically select a project, ask the user which project they want to select.', + 'Returns the current project, its environments, and SDK keys.', 'Include dashboard link in the response.', ].join('\n'), annotations: { diff --git a/src/mcp/tools/customPropertiesTools.ts b/src/mcp/tools/customPropertiesTools.ts index 0eadaa1e..c49fe094 100644 --- a/src/mcp/tools/customPropertiesTools.ts +++ b/src/mcp/tools/customPropertiesTools.ts @@ -147,6 +147,7 @@ export function registerCustomPropertiesTools( { description: [ 'Create a new custom property.', + 'Custom properties are used in feature targeting audiences as custom user-data definitions.', 'Include dashboard link in the response.', ].join('\n'), annotations: { diff --git a/src/mcp/tools/featureTools.ts b/src/mcp/tools/featureTools.ts index 49f9602b..81a55e17 100644 --- a/src/mcp/tools/featureTools.ts +++ b/src/mcp/tools/featureTools.ts @@ -457,7 +457,9 @@ export function registerFeatureTools( 'create_feature', { description: [ - 'Create a new feature flag. Include dashboard link in the response.', + 'Create a new DevCycle feature. Include dashboard link in the response.', + 'Features are the main logical container for variables and targeting rules, defining what values variables will be served to users across environments.', + 'Features can contin multiple variables, and many variations, defined by the targeting rules to determine how variable values are distributed to users.', 'If a user is creating a feature, you should follow these steps and ask users for input on these steps:', '1. create a variable and associate it with this feature. (default to creating a "boolean" variable with the same key as the feature)', '2. create variations for the feature. (default to creating an "on" and "off" variation)', @@ -499,7 +501,7 @@ export function registerFeatureTools( 'update_feature_status', { description: [ - 'Update the status of an existing feature flag.', + 'Update the status of an existing feature.', '⚠️ IMPORTANT: Changes to feature status may affect production environments.', 'Always confirm with the user before making changes to features that are active in production.', 'Include dashboard link in the response.', @@ -520,13 +522,13 @@ export function registerFeatureTools( 'delete_feature', { description: [ - 'Delete an existing feature flag.', - '⚠️ CRITICAL: Deleting a feature flag will remove it from ALL environments including production.', - 'ALWAYS confirm with the user before deleting any feature flag.', + 'Delete an existing feature.', + '⚠️ CRITICAL: Deleting a feature will remove it from ALL environments including production.', + 'ALWAYS confirm with the user before deleting any feature.', 'Include dashboard link in the response.', ].join('\n'), annotations: { - title: 'Delete Feature Flag', + title: 'Delete Feature', destructiveHint: true, }, inputSchema: DeleteFeatureArgsSchema.shape, @@ -657,7 +659,8 @@ export function registerFeatureTools( 'get_feature_audit_log_history', { description: [ - 'Get feature flag audit log history from DevCycle.', + 'Get feature audit log history from DevCycle.', + 'Returns audit log data for all changes made to a feature / variation / targeting rule ordered by date.', 'Include dashboard link in the response.', ].join('\n'), annotations: { diff --git a/src/mcp/tools/installTools.ts b/src/mcp/tools/installTools.ts index 5bb0b403..e0bf47cb 100644 --- a/src/mcp/tools/installTools.ts +++ b/src/mcp/tools/installTools.ts @@ -46,6 +46,7 @@ export function registerInstallTools( { description: [ 'Fetch DevCycle SDK installation instructions, and follow the instructions to install the DevCycle SDK.', + 'Also includes documentation and examples for using DevCycle SDK in your application.', "Choose the guide that matches the application's language/framework.", ].join('\n'), annotations: { diff --git a/src/mcp/tools/localProjectTools.ts b/src/mcp/tools/localProjectTools.ts index 7cf947ad..789d6e49 100644 --- a/src/mcp/tools/localProjectTools.ts +++ b/src/mcp/tools/localProjectTools.ts @@ -18,7 +18,10 @@ export const SelectProjectArgsSchema = z.object({ .string() .optional() .describe( - 'The project key to select. If not provided, will list all available projects to choose from.', + [ + 'The project key to select.', + 'If not provided, will list all available projects to choose from.', + ].join('\n'), ), }) @@ -113,7 +116,8 @@ export function registerLocalProjectTools( 'Select a project to use for subsequent MCP operations.', 'Call without parameters to list available projects.', 'Do not automatically select a project, ask the user which project they want to select.', - 'This will update your local DevCycle configuration (~/.config/devcycle/user.yml).', + 'This will update your local DevCycle configuration for the MCP and CLI (~/.config/devcycle/user.yml).', + 'Returns the current project, its environments, and SDK keys.', 'Include dashboard link in the response.', ].join('\n'), annotations: { diff --git a/src/mcp/tools/projectTools.ts b/src/mcp/tools/projectTools.ts index 37eabcea..aaa7ed0e 100644 --- a/src/mcp/tools/projectTools.ts +++ b/src/mcp/tools/projectTools.ts @@ -118,7 +118,7 @@ export function registerProjectTools( { description: [ 'List all projects in the current organization.', - 'Include dashboard link in the response.', + 'Can be called before "select_project"', ].join('\n'), annotations: { title: 'List Projects', @@ -139,6 +139,7 @@ export function registerProjectTools( description: [ 'Get the currently selected project.', 'Include dashboard link in the response.', + 'Returns the current project, its environments, and SDK keys.', ].join('\n'), annotations: { title: 'Get Current Project', diff --git a/src/mcp/tools/resultsTools.ts b/src/mcp/tools/resultsTools.ts index e41c40e1..d4606709 100644 --- a/src/mcp/tools/resultsTools.ts +++ b/src/mcp/tools/resultsTools.ts @@ -81,7 +81,8 @@ export function registerResultsTools( 'get_feature_total_evaluations', { description: [ - 'Get total variable evaluations per time period for a specific feature.', + 'Get total variable evaluations per time period for a feature.', + 'Useful for understanding if a feature is being used or not.', 'Include dashboard link in the response.', ].join('\n'), annotations: { @@ -105,6 +106,7 @@ export function registerResultsTools( { description: [ 'Get total variable evaluations per time period for the entire project.', + 'Useful for understanding the overall usage of variables in a project by environment or SDK type.', 'Include dashboard link in the response.', ].join('\n'), annotations: { diff --git a/src/mcp/tools/selfTargetingTools.ts b/src/mcp/tools/selfTargetingTools.ts index 6e21c56e..cf69ed08 100644 --- a/src/mcp/tools/selfTargetingTools.ts +++ b/src/mcp/tools/selfTargetingTools.ts @@ -179,7 +179,8 @@ export function registerSelfTargetingTools( 'get_self_targeting_identity', { description: [ - 'Get current DevCycle identity for self-targeting.', + 'Get current DevCycle identity for self-targeting yourself into a feature.', + 'Your applications user_id used to identify yourself with the DevCycle SDK needs to match for self-targeting to work.', 'Include dashboard link in the response.', ].join('\n'), annotations: { @@ -197,7 +198,8 @@ export function registerSelfTargetingTools( 'update_self_targeting_identity', { description: [ - 'Update DevCycle identity for self-targeting and overrides.', + 'Update DevCycle identity for self-targeting yourself into a feature.', + 'Your applications user_id used to identify yourself with the DevCycle SDK needs to match for self-targeting to work.', 'Include dashboard link in the response.', ].join('\n'), annotations: { diff --git a/src/mcp/tools/variableTools.ts b/src/mcp/tools/variableTools.ts index 4d41d316..0cb6f47d 100644 --- a/src/mcp/tools/variableTools.ts +++ b/src/mcp/tools/variableTools.ts @@ -141,6 +141,7 @@ export function registerVariableTools( { description: [ 'Create a new variable.', + 'DevCycle variables can also be referred to as "feature flags" or "flags".', 'Include dashboard link in the response.', ].join('\n'), annotations: { @@ -159,7 +160,7 @@ export function registerVariableTools( { description: [ 'Update an existing variable.', - '⚠️ IMPORTANT: Variable changes can affect feature flags in production environments.', + '⚠️ IMPORTANT: Variable changes can affect features in production environments.', 'Always confirm with the user before updating variables for features that are active in production.', 'Include dashboard link in the response.', ].join('\n'),