Skip to main content
Glama
purpleax

Fastly NGWAF MCP Server

by purpleax

create_site_rule

Add a site-level rule to Fastly's Next-Gen WAF for request filtering, signal handling, or rate limiting based on configurable conditions and actions.

Instructions

Create a site-level rule

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
corpNameNoCorporation name (uses context default if not provided)
siteNameNoSite name (uses context default if not provided)
typeYesRule type
enabledNoWhether rule is enabled
groupOperatorYesCondition group operator
conditionsYesRule conditions
actionsYesRule actions
reasonNoDescription of the rule
signalNoSignal ID for exclusion/rate limit rules
thresholdCountNoThreshold count for rate limit rules
thresholdIntervalNoThreshold interval for rate limit rules
blockDurationSecondsNoBlock duration for rate limit rules

Implementation Reference

  • Primary handler for the 'create_site_rule' tool. Resolves corp/site context, validates siteName, constructs ruleData from input arguments, and delegates to the FastlyNGWAFClient's createSiteRule method.
    case 'create_site_rule': const { corpName: corpForSiteRule, siteName: siteForRule } = resolveContext(typedArgs); if (!siteForRule) { throw new Error('Site name is required. Please set context or provide siteName parameter.'); } const siteRuleData = { type: typedArgs.type, enabled: typedArgs.enabled, groupOperator: typedArgs.groupOperator, conditions: typedArgs.conditions, actions: typedArgs.actions, reason: typedArgs.reason, signal: typedArgs.signal, thresholdCount: typedArgs.thresholdCount, thresholdInterval: typedArgs.thresholdInterval, blockDurationSeconds: typedArgs.blockDurationSeconds, }; result = await client.createSiteRule(corpForSiteRule, siteForRule, siteRuleData); break;
  • Input schema defining parameters and validation for the create_site_rule tool.
    inputSchema: { type: 'object', properties: { corpName: { type: 'string', description: 'Corporation name (uses context default if not provided)' }, siteName: { type: 'string', description: 'Site name (uses context default if not provided)' }, type: { type: 'string', enum: ['request', 'signal', 'rateLimit'], description: 'Rule type' }, enabled: { type: 'boolean', description: 'Whether rule is enabled' }, groupOperator: { type: 'string', enum: ['all', 'any'], description: 'Condition group operator' }, conditions: { type: 'array', description: 'Rule conditions' }, actions: { type: 'array', description: 'Rule actions' }, reason: { type: 'string', description: 'Description of the rule' }, signal: { type: 'string', description: 'Signal ID for exclusion/rate limit rules' }, thresholdCount: { type: 'number', description: 'Threshold count for rate limit rules' }, thresholdInterval: { type: 'number', description: 'Threshold interval for rate limit rules' }, blockDurationSeconds: { type: 'number', description: 'Block duration for rate limit rules' }, }, required: ['type', 'groupOperator', 'conditions', 'actions'], },
  • Helper method in FastlyNGWAFClient class that performs the actual API call to create a site rule via POST to /corps/{corp}/sites/{site}/rules.
    async createSiteRule(corpName, siteName, ruleData) { const response = await this.api.post(`/corps/${corpName}/sites/${siteName}/rules`, ruleData); return response.data;
  • server.js:814-816 (registration)
    Registration of all tools, including create_site_rule, via the ListToolsRequestSchema handler that returns the complete tools array.
    server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools }; });
  • Helper function used by create_site_rule handler (and others) to resolve corpName and siteName from arguments or context.
    function resolveContext(args) { const corpName = args.corpName || context.defaultCorpName; const siteName = args.siteName || context.defaultSiteName; if (!corpName) { throw new Error('Corporation name is required. Please set context or provide corpName parameter.'); } return { corpName, siteName }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/purpleax/FastlyMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server