Skip to main content
Glama

create_repo

Create a new GitHub repository by specifying a name, description, and privacy setting to organize and share code projects.

Instructions

Create a new GitHub repository

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
repo_nameYesThe name of the repository to create
descriptionNoA description of the repository
privateNoWhether the repository should be private

Implementation Reference

  • Handler for the 'create_repo' tool. Validates the repository name, then sends a POST request to GitHub's /user/repos endpoint to create a new repository with the provided name, description, and privacy setting. Returns the API response or an error.
    } else if (request.params.name === 'create_repo') {
      const repo_name = args.repo_name;
      if (!repo_name) {
        throw new McpError(ErrorCode.InvalidParams, 'Repository name is required');
      }
    
      try {
        const response = await this.axiosInstance.post('/user/repos', {
          name: repo_name,
          description: args.description,
          private: args.private ?? false,
        });
    
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify(response.data, null, 2),
            },
          ],
        };
      } catch (error) {
        if (axios.isAxiosError(error)) {
          return {
            content: [
              {
                type: 'text',
                text: `GitHub API error: ${
                  error.response?.data.message ?? error.message
                }`,
              },
            ],
            isError: true,
          };
        }
        throw error;
      }
  • Schema definition for the 'create_repo' tool, including name, description, and input schema specifying required 'repo_name' and optional 'description' and 'private' fields.
    name: 'create_repo',
    description: 'Create a new GitHub repository',
    inputSchema: {
      type: 'object',
      properties: {
        repo_name: {
          type: 'string',
          description: 'The name of the repository to create',
        },
        description: {
          type: 'string',
          description: 'A description of the repository',
        },
        private: {
          type: 'boolean',
          description: 'Whether the repository should be private',
          default: false,
        },
      },
      required: ['repo_name'],
    },
  • src/index.ts:94-161 (registration)
    Registration of available tools in the ListToolsRequestSchema handler, including the 'create_repo' tool in the tools array.
    this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
      tools: [
        {
          name: 'get_user',
          description: 'Get GitHub user information',
          inputSchema: {
            type: 'object',
            properties: {
              username: {
                type: 'string',
                description: 'GitHub username',
              },
            },
            required: ['username'],
          },
        },
        {
          name: 'create_repo',
          description: 'Create a new GitHub repository',
          inputSchema: {
            type: 'object',
            properties: {
              repo_name: {
                type: 'string',
                description: 'The name of the repository to create',
              },
              description: {
                type: 'string',
                description: 'A description of the repository',
              },
              private: {
                type: 'boolean',
                description: 'Whether the repository should be private',
                default: false,
              },
            },
            required: ['repo_name'],
          },
        },
        {
          name: 'push_to_repo',
          description: 'Push content to a GitHub repository',
          inputSchema: {
            type: 'object',
            properties: {
              repo_name: {
                type: 'string',
                description: 'The name of the repository to push to',
              },
              file_path: {
                type: 'string',
                description: 'The path where the file should be created in the repository',
              },
              content: {
                type: 'string',
                description: 'The content to push to the repository',
              },
              message: {
                type: 'string',
                description: 'The commit message',
                default: 'Update via GitHub MCP',
              },
            },
            required: ['repo_name', 'file_path', 'content'],
          },
        },
      ],
    }));
Install Server

Other Tools

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/oghenetejiriorukpegmail/github-mcp'

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