Skip to content

Naming Conventions

Every package on mpak has a scoped name in the format @scope/name. The scope is derived from your GitHub identity, and the registry enforces ownership cryptographically.

@scope/name
PartSourceExample
@scopeYour GitHub org or username (lowercased)@nimblebraininc
nameThe package identifier you choosepostgres-mcp
Full nameCombined@nimblebraininc/postgres-mcp

Your scope is automatically derived from the GitHub OIDC token at publish time. You cannot choose a different scope.

GitHub OwnerPackage Scope
NimbleBrainInc (org)@nimblebraininc/...
johndoe (user)@johndoe/...
My-Org (org)@my-org/...

Scopes are always lowercase. GitHub owner names are lowercased automatically.

This means:

  • You can only publish packages under your own scope
  • No one else can publish to your scope
  • Scope ownership is verified cryptographically via OIDC (no API keys, no manual approval)

Package names (the part after the scope) must follow these rules:

RuleExample
Lowercase letters, numbers, hyphenspostgres-mcp
Must start with a lettermy-server (not 1-server)
No consecutive hyphensmy-server (not my--server)
No leading or trailing hyphensserver (not -server-)

Be descriptive. The name should tell users what the server connects to or does.

GoodBadWhy
postgres-mcpmy-serverTells users what it connects to
github-issuestoolSpecific about what it does
slack-notificationsnotificationsNames the integration
code-reviewhelperDescribes the capability

Include the service or protocol name when wrapping an API: stripe-mcp, jira-mcp, openai-mcp.

Avoid generic names like utils, tools, helper, core. These don’t help users discover your package.

Don’t include your org name in the package name. The scope already identifies you: @yourorg/postgres-mcp, not @yourorg/yourorg-postgres-mcp.

The mpak Trust Framework includes RG-02 namespace governance controls to prevent squatting and name confusion:

  • Slopsquatting prevention: Names that are confusingly similar to popular packages may be flagged
  • Trademark enforcement: Package names impersonating well-known brands may be removed

Package names are immutable once published. To “rename” a package:

  1. Publish a new package under the desired name
  2. Deprecate the old package (point users to the new one)
  3. The old name remains reserved to prevent confusion