Skip to main content
Glama

get_theme_summary

Retrieve detailed security theme guidance including indicators, impact analysis, NIST controls, and documentation links for FedRAMP compliance.

Instructions

Get comprehensive guidance for a KSI theme. Returns all indicators in the theme, impact breakdown, related NIST controls, and links to relevant documentation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
themeYesKSI theme code

Implementation Reference

  • The core handler for the 'get_theme_summary' tool. It defines the tool including name, description, schema, and the execute function which filters KSI items by theme, calculates impact breakdown, gathers related controls, and finds related documentation via search.
    export const getThemeSummaryTool: ToolDefinition<typeof schema, ThemeSummary> = { name: "get_theme_summary", description: "Get comprehensive guidance for a KSI theme. Returns all indicators in the theme, impact breakdown, related NIST controls, and links to relevant documentation.", schema, execute: async (input) => { const all = getKsiItems(); const indicators = all.filter( (item) => item.category?.toUpperCase() === input.theme, ); // Count impact levels const impactBreakdown = { low: 0, moderate: 0, high: 0 }; for (const item of indicators) { if (item.impact?.low) impactBreakdown.low++; if (item.impact?.moderate) impactBreakdown.moderate++; if (item.impact?.high) impactBreakdown.high++; } // Collect related controls const controlSet = new Set<string>(); for (const item of indicators) { if (item.controlMapping) { for (const control of item.controlMapping) { controlSet.add(control); } } } // Search markdown for related guidance const themeName = THEME_NAMES[input.theme] ?? input.theme; const searchTerms = [themeName, input.theme]; const relatedDocs: Array<{ path: string; snippet: string }> = []; for (const term of searchTerms) { try { const results = searchMarkdown(term, 5, 0); for (const hit of results.hits) { if (!relatedDocs.some((d) => d.path === hit.path)) { relatedDocs.push({ path: hit.path, snippet: hit.snippet }); } } } catch { // Search might fail for some terms, continue } } return { theme: input.theme, themeName, indicatorCount: indicators.length, indicators, impactBreakdown, relatedControls: [...controlSet].sort(), relatedDocs: relatedDocs.slice(0, 5), }; }, };
  • Input schema using Zod, validating the 'theme' parameter as one of the predefined KSI theme codes.
    const schema = z.object({ theme: z .enum(["AFR", "CED", "CMT", "CNA", "IAM", "INR", "MLA", "PIY", "RPL", "SVC", "TPR"]) .describe("KSI theme code"), });
  • Registration of all tools including getThemeSummaryTool in the registerToolDefs call within the registerTools function.
    export function registerTools(server: McpServer): void { registerToolDefs(server, [ // Document discovery listFrmrDocumentsTool, getFrmrDocumentTool, listVersionsTool, // KSI tools listKsiTool, getKsiTool, filterByImpactTool, getThemeSummaryTool, getEvidenceExamplesTool, // Control mapping tools listControlsTool, getControlRequirementsTool, analyzeControlCoverageTool, // Search & lookup tools searchMarkdownTool, readMarkdownTool, searchDefinitionsTool, getRequirementByIdTool, // Analysis tools diffFrmrTool, grepControlsTool, significantChangeTool, // System tools healthCheckTool, updateRepositoryTool, ]); }
  • Helper constant providing human-readable names for KSI theme codes, used in the handler for descriptions and search terms.
    const THEME_NAMES: Record<string, string> = { AFR: "Authorization & FedRAMP Requirements", CED: "Customer Environment & Data", CMT: "Change Management & Testing", CNA: "Cloud Native Architecture", IAM: "Identity & Access Management", INR: "Incident Response", MLA: "Monitoring, Logging & Alerting", PIY: "Privacy & PII", RPL: "Resiliency & Planning", SVC: "Service Configuration", TPR: "Third Party Risk", };

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/ethanolivertroy/fedramp-docs-mcp'

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