fork_repository
Create a copy of a GitHub repository under your account or a specified organization to enable independent development.
Instructions
Fork a GitHub repository to your account or specified organization
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| organization | No | Organization to fork to |
Implementation Reference
- src/tools/repositories.ts:71-71 (registration)Registration function `registerRepositoryTools` that registers all repository tools including 'fork_repository' on the MCP server.
export function registerRepositoryTools(server: McpServer, octokit: Octokit) { - src/index.ts:14-18 (registration)`registerAllToolsAndResources` calls `registerRepositoryTools(server, octokit)` to register the fork_repository tool.
export function registerAllToolsAndResources(server: McpServer, octokit: Octokit): void { registerSearchTools(server, octokit) registerIssueTools(server, octokit) registerRepositoryTools(server, octokit) registerPullRequestTools(server, octokit) - src/tools/repositories.ts:633-659 (handler)The 'fork_repository' tool handler: defines the schema (owner, repo, optional organization) and implements the logic to fork a GitHub repository via octokit.rest.repos.createFork.
// Tool: Fork Repository server.tool( "fork_repository", "Fork a GitHub repository to your account or specified organization", { owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), organization: z.string().optional().describe("Organization to fork to"), }, async ({ owner, repo, organization }) => { try { const response = await octokit.rest.repos.createFork({ owner, repo, organization, }) const r = response.data return { content: [{ type: "text", text: `Repository forked: **${r.full_name}**\nURL: ${r.html_url}\nParent: ${r.parent?.full_name || `${owner}/${repo}`}` }], } } catch (e: any) { return { content: [{ type: "text", text: `Error: ${e.message}` }], } } }, ) - src/tools/repositories.ts:637-641 (schema)Zod schema for 'fork_repository' tool input: owner (string), repo (string), organization (optional string).
{ owner: z.string().describe("Repository owner"), repo: z.string().describe("Repository name"), organization: z.string().optional().describe("Organization to fork to"), },