UNPKG

octocode-mcp

Version:

Model Context Protocol (MCP) server for advanced GitHub repository analysis and code discovery. Provides AI assistants with powerful tools to search, analyze, and understand codebases across GitHub.

87 lines (86 loc) 3.58 kB
import { CallToolResult } from '@modelcontextprotocol/sdk/types'; import { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types'; export declare function withSecurityValidation<T extends Record<string, unknown>>(toolName: string, toolHandler: (sanitizedArgs: T, authInfo?: AuthInfo, sessionId?: string) => Promise<CallToolResult>): (args: unknown, { authInfo, sessionId }: { authInfo?: AuthInfo; sessionId?: string; }) => Promise<CallToolResult>; export declare function withBasicSecurityValidation<T extends Record<string, unknown>>(toolHandler: (sanitizedArgs: T) => Promise<CallToolResult>): (args: unknown) => Promise<CallToolResult>; /** * Extracts research fields from a single query object. * Used for logging individual queries in bulk operations. */ export declare function extractResearchFieldsFromSingleQuery(query: Record<string, unknown>): { mainResearchGoal?: string; researchGoal?: string; reasoning?: string; }; export declare function extractResearchFields(params: Record<string, unknown>): { mainResearchGoal?: string; researchGoal?: string; reasoning?: string; }; /** * Extracts repository identifiers from a single query object. * Used for logging individual queries in bulk operations. * * Supports multiple parameter formats: * - Combined repository field: `repository: "owner/repo"` * - Separate owner/repo fields: `owner: "owner", repo: "repo"` * - Owner only: `owner: "owner"` (for tools like github_search_repos) * * @param query - A single query object containing repository information * @returns Array of repository identifiers (typically one, but can be multiple for some tools) * * @example * extractRepoOwnerFromSingleQuery({ repository: "facebook/react" }) * // Returns: ["facebook/react"] * * @example * extractRepoOwnerFromSingleQuery({ owner: "microsoft", repo: "vscode" }) * // Returns: ["microsoft/vscode"] * * @example * extractRepoOwnerFromSingleQuery({ owner: "vercel" }) * // Returns: ["vercel"] */ export declare function extractRepoOwnerFromSingleQuery(query: Record<string, unknown>): string[]; /** * Extracts repository identifiers from tool parameters for logging purposes. * * Supports multiple parameter formats: * - Combined repository field: `repository: "owner/repo"` * - Separate owner/repo fields: `owner: "owner", repo: "repo"` * - Owner only: `owner: "owner"` (for tools like github_search_repos) * * Works with both bulk operations (queries array) and single operations (direct params). * * @param params - The tool parameters containing repository information * @returns Array of unique repository identifiers (e.g., ["owner/repo", "owner2/repo2", "owner3"]) * * @example * // Combined repository format * extractRepoOwnerFromParams({ queries: [{ repository: "facebook/react" }] }) * // Returns: ["facebook/react"] * * @example * // Separate owner/repo format * extractRepoOwnerFromParams({ queries: [{ owner: "microsoft", repo: "vscode" }] }) * // Returns: ["microsoft/vscode"] * * @example * // Owner only format (for repository search) * extractRepoOwnerFromParams({ queries: [{ owner: "vercel" }] }) * // Returns: ["vercel"] * * @example * // Multiple queries with mixed formats * extractRepoOwnerFromParams({ * queries: [ * { repository: "facebook/react" }, * { owner: "microsoft", repo: "vscode" }, * { owner: "vercel" } * ] * }) * // Returns: ["facebook/react", "microsoft/vscode", "vercel"] */ export declare function extractRepoOwnerFromParams(params: Record<string, unknown>): string[];