---
title: "Create a plugin from GitHub"
method: POST
path: "/v1/plugins/import-mcps-from-github-url"
tags: ["GitHub"]
---

# Create a plugin from GitHub

`POST /v1/plugins/import-mcps-from-github-url`

Creates one plugin from selected skills and remote MCP servers in a public GitHub plugin URL, applies the requested access grants, and optionally publishes it into an organization marketplace. Declared and known-server authentication requirements take precedence over the request-wide auth fallback.

## Request body

- object
  - `githubUrl` string, uri, required
  - `access` object
    - `orgWide` boolean
    - `memberIds` string[]
    - `teamIds` string[]
  - `authType` 'oauth' | 'none'
  - `credentialMode` 'shared' | 'per_member'
  - `description` string, nullable
  - `marketplaceId` string, typeid — Den TypeID with 'mkt_' prefix and a 26-character base32 suffix.
  - `name` string
  - `selectedSkillKeys` string[]
  - `selectedServerKeys` string[]
  - `selectedServerNames` string[]

## Response `200`

GitHub plugin MCPs imported successfully.

- GithubPluginMcpImportResponse
  - `ok` true, required
  - `item` object, required
    - `imported` object[], required
      - `connectionId` string, required
      - `name` string, required
      - `url` string, required
    - `importedSkills` object[], required
      - `configObjectId` string, typeid, required — Den TypeID with 'cob_' prefix and a 26-character base32 suffix.
      - `name` string, required
      - `sourcePath` string, required
    - `marketplaceId` string, typeid, nullable, required — Den TypeID with 'mkt_' prefix and a 26-character base32 suffix.
    - `plugin` PluginArchPlugin, required
      - `id` string, typeid, required — Den TypeID with 'plg_' prefix and a 26-character base32 suffix.
      - `organizationId` string, typeid, required — Den TypeID with 'org_' prefix and a 26-character base32 suffix.
      - `name` string, required
      - `description` string, nullable, required
      - `sourceRepositoryUrl` string, nullable, required
      - `status` 'active' | 'inactive' | 'deleted' | 'archived', required
      - `createdByOrgMembershipId` string, typeid, required — Den TypeID with 'om_' prefix and a 26-character base32 suffix.
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `deletedAt` string, date-time, nullable, required
      - `memberCount` integer
      - `marketplaces` object[]
        - `id` string, typeid, required — Den TypeID with 'mkt_' prefix and a 26-character base32 suffix.
        - `name` string, required
      - `extension` PluginArchExtensionProjection
        - `id` string, typeid, required — Den TypeID with 'plg_' prefix and a 26-character base32 suffix.
        - `name` string, required
        - `description` string, nullable, required
        - `sourceFormat` 'openwork-builtin' | 'openwork-extension-manifest' | 'claude-plugin' | 'opencode-plugin' | 'mcp-directory' | 'manual', required
        - `manifest` OpenWorkExtensionManifest, required
          - `schemaVersion` 1, required
          - `id` string, required
          - `name` string, required
          - `description` string, required
          - `source` object, required
            - `format` 'openwork-builtin' | 'openwork-extension-manifest' | 'claude-plugin' | 'opencode-plugin' | 'mcp-directory' | 'manual', required
            - `trusted` boolean, required
            - `origin` 'builtin' | 'den' | 'workspace' | 'local'
            - `reference` string
          - `resources` object[], required
          - `contributions` object[]
          - `setup` object
          - `lifecycle` object
    - `skipped` object[], required
      - `name` string, required
      - `reason` 'missing_url' | 'local_unsupported' | 'invalid_url' | 'unsupported_auth', required
    - `skippedSkills` object[], required
      - `name` string, required
      - `reason` 'invalid_skill', required
      - `sourcePath` string, required

## Other responses

- `400` — The GitHub plugin MCP import request was invalid.
- `401` — The caller must be signed in to import plugin MCPs.
- `403` — The caller lacks permission to import plugin MCPs.
- `404` — The GitHub plugin path or marketplace could not be found.

---

[API](https://skmtc.net/openworklabs/apis/den-api.md) · [All operations](https://skmtc.net/openworklabs/apis/den-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openworklabs/den-api/versions/805150503452/schema)
