github_code_security_get_configurations_for_enterprise
Retrieve code security configurations for a GitHub enterprise to review and manage security settings across organizations.
Instructions
Get code security configurations for an enterprise
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| enterprise | Yes | enterprise | |
| per_page | No | The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." | |
| before | No | A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results before this cursor. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." | |
| after | No | A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results after this cursor. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)." |
Implementation Reference
- src/tools/code-security.ts:15-17 (handler)The handler function for the 'github_code_security_get_configurations_for_enterprise' tool. Makes a GET request to `/enterprises/${args.enterprise}/code-security/configurations` with optional pagination parameters (per_page, before, after).
handler: async (args: Record<string, any>) => { return githubRequest("GET", `/enterprises/${args.enterprise}/code-security/configurations`, undefined, { per_page: args.per_page, before: args.before, after: args.after }); }, - src/tools/code-security.ts:9-14 (schema)The input schema for the tool, validating parameters: enterprise (string), per_page (optional number), before (optional string), after (optional string).
inputSchema: z.object({ enterprise: z.string().describe("enterprise"), per_page: z.number().optional().describe("The number of results per page (max 100). For more information, see \"[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api).\""), before: z.string().optional().describe("A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results before this cursor. For more information, see \"[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api).\""), after: z.string().optional().describe("A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results after this cursor. For more information, see \"[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api).\"") }), - src/tools/code-security.ts:6-18 (registration)The tool is defined as an entry in the codeSecurityTools array (line 5-18), which is exported and imported by src/index.ts (line 14) into the allToolModules array (line 65), then registered with server.tool() in a loop (lines 110-129).
{ name: "github_code_security_get_configurations_for_enterprise", description: "Get code security configurations for an enterprise", inputSchema: z.object({ enterprise: z.string().describe("enterprise"), per_page: z.number().optional().describe("The number of results per page (max 100). For more information, see \"[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api).\""), before: z.string().optional().describe("A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results before this cursor. For more information, see \"[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api).\""), after: z.string().optional().describe("A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results after this cursor. For more information, see \"[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api).\"") }), handler: async (args: Record<string, any>) => { return githubRequest("GET", `/enterprises/${args.enterprise}/code-security/configurations`, undefined, { per_page: args.per_page, before: args.before, after: args.after }); }, }, - src/index.ts:55-65 (registration)The tool module is included in the allToolModules array under category 'code-security', enabling conditional loading via GITHUB_MCP_CATEGORIES env var.
const allToolModules = [ { category: "actions", tools: actionsTools }, { category: "activity", tools: activityTools }, { category: "agent-tasks", tools: agentTasksTools }, { category: "apps", tools: appsTools }, { category: "billing", tools: billingTools }, { category: "campaigns", tools: campaignsTools }, { category: "checks", tools: checksTools }, { category: "classroom", tools: classroomTools }, { category: "code-scanning", tools: codeScanningTools }, { category: "code-security", tools: codeSecurityTools }, - src/client.ts:9-59 (helper)The githubRequest helper function that handles HTTP requests to the GitHub REST API, used by the tool's handler to execute the GET request.
export async function githubRequest<T>( method: string, path: string, body?: Record<string, unknown>, params?: Record<string, string | number | boolean | string[] | undefined> ): Promise<T> { const url = new URL(`${BASE_URL}${path}`); if (params) { for (const [key, value] of Object.entries(params)) { if (value === undefined || value === null || value === "") continue; if (Array.isArray(value)) { url.searchParams.set(key, value.join(",")); } else { url.searchParams.set(key, String(value)); } } } const headers: Record<string, string> = { Authorization: `Bearer ${getToken()}`, Accept: "application/vnd.github+json", "X-GitHub-Api-Version": "2022-11-28", "User-Agent": "github-mcp/1.0.0", }; if (body) { headers["Content-Type"] = "application/json"; } const res = await fetch(url.toString(), { method, headers, body: body ? JSON.stringify(body) : undefined, }); if (!res.ok) { const text = await res.text().catch(() => ""); let detail = text; try { const json = JSON.parse(text); detail = json.message || text; if (json.errors) detail += ` -- ${JSON.stringify(json.errors)}`; } catch {} throw new Error(`GitHub API error ${res.status}: ${detail}`); } if (res.status === 204) return {} as T; return res.json() as Promise<T>; }