Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ To set up commit signing, see [GitHub's documentation on commit signature verifi
### Bug Reports

When filing a bug report, please include:

- Clear description of the issue
- Steps to reproduce
- Expected vs actual behavior
Expand All @@ -55,13 +56,15 @@ When filing a bug report, please include:
### Feature Requests

We welcome feature suggestions! Please:

- Clearly describe the feature and use case
- Explain why this would be valuable to users
- Consider if it aligns with the project's goals

### Code Contributions

We especially welcome:

- Bug fixes
- Documentation improvements
- Test coverage improvements
Expand Down
22 changes: 11 additions & 11 deletions MANIFEST.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ A basic `manifest.json` with just the required fields looks like this:
"description": "A simple MCP extension", // Brief description of what the extension does
"author": {
// Author information (required)
"name": "Extension Author" // Author's name (required field)
"name": "Extension Author", // Author's name (required field)
},
"server": {
// Server configuration (required)
Expand All @@ -28,10 +28,10 @@ A basic `manifest.json` with just the required fields looks like this:
"command": "node", // Command to run the server
"args": [
// Arguments passed to the command
"${__dirname}/server/index.js" // ${__dirname} is replaced with the extension's directory
]
}
}
"${__dirname}/server/index.js", // ${__dirname} is replaced with the extension's directory
],
},
},
}
```

Expand Down Expand Up @@ -212,12 +212,12 @@ A full `manifest.json` with most of the optional fields looks like this:
"type": "string"
}
}
},
}
}
}
]
}
},
}
}
}
}
Expand Down Expand Up @@ -254,7 +254,7 @@ A full `manifest.json` with most of the optional fields looks like this:
- **privacy_policies**: Array of URLs to privacy policies for external services that handle user data. Required when the extension connects to external services (first- or third-party) that process user data. Each URL should link to the respective service's privacy policy document.
- **compatibility**: Compatibility requirements (client app version, platforms, and runtime versions).
- **user_config**: User-configurable options for the extension (see User Configuration section).
- **_meta**: Platform-specific client integration metadata (e.g., Windows `package_family_name`, macOS bundle identifiers) enabling tighter OS/app store integration. The keys in the `_meta` object are reverse-DNS namespaced, and the values are a dictionary of platform-specific metadata.
- **\_meta**: Platform-specific client integration metadata (e.g., Windows `package_family_name`, macOS bundle identifiers) enabling tighter OS/app store integration. The keys in the `_meta` object are reverse-DNS namespaced, and the values are a dictionary of platform-specific metadata.
- **localization**: Location of translated strings for user-facing fields (`resources` path containing a `${locale}` placeholder and `default_locale`).

### Localization
Expand All @@ -268,15 +268,16 @@ Provide localized strings without bloating the manifest by pointing to external
}
```

- `resources` must include a `${locale}` placeholder. Clients resolve it relative to the server install directory.
- `resources` must include a `${locale}` placeholder. Clients resolve it relative to the server install directory.
- This property is optional, and its default value is **`mcpb-resources/${locale}.json`**.
- `default_locale` must be a valid [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) identifier such as `en-US` or `zh-Hans`.
- This property is optional, and its default value is `en-US`.
- Values for the default locale stay in the main manifest; localized files only need to contain overrides.

For tools and prompts, the descriptions are also localizable.
For tools and prompts, the descriptions are also localizable.

#### Client guidelines

- if a client wants to show tool or prompt descriptions in their UI, the client should look for the locale-specific description override in the corresponding per-locale file.
- clients should only look for tools/prompts present in the manifest.json, i.e. prompts and tools that only exist in the per-locale file should be ignored.
- Clients should apply locale fallbacks if the client/user locale is not represented by the server. For example, if the user is in the `es-UY` locale but the server does not include that per-locale file, the client should look for an approrpiate fallback, e.g. `es-MX` or `es-ES`, or fall back to the values in the manifest.
Expand Down Expand Up @@ -712,4 +713,3 @@ The `_generated` fields:
- **prompts_generated**: Server generates additional prompts beyond those listed (default: false)

This helps implementing apps understand that querying the server at runtime will reveal more capabilities than what's declared in the manifest.

24 changes: 21 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@anthropic-ai/mcpb",
"description": "Tools for building MCP Bundles",
"version": "1.1.2",
"version": "1.1.3",
"type": "module",
"main": "dist/index.js",
"module": "dist/index.js",
Expand All @@ -27,7 +27,25 @@
"import": "./dist/cli.js",
"require": "./dist/cli.js"
},
"./mcpb-manifest.schema.json": "./dist/mcpb-manifest.schema.json"
"./mcpb-manifest-v0.1.schema.json": "./dist/mcpb-manifest-v0.1.schema.json",
"./mcpb-manifest-v0.2.schema.json": "./dist/mcpb-manifest-v0.2.schema.json",
"./mcpb-manifest-v0.3.schema.json": "./dist/mcpb-manifest-v0.3.schema.json",
"./mcpb-manifest-latest.schema.json": "./dist/mcpb-manifest-latest.schema.json",
"./schemas": {
"types": "./dist/schemas/index.d.ts",
"import": "./dist/schemas/index.js",
"require": "./dist/schemas/index.js"
},
"./schemas/*": {
"types": "./dist/schemas/*.d.ts",
"import": "./dist/schemas/*.js",
"require": "./dist/schemas/*.js"
},
"./schemas-loose": {
"types": "./dist/schemas-loose.d.ts",
"import": "./dist/schemas-loose.js",
"require": "./dist/schemas-loose.js"
}
},
"bin": "dist/cli/cli.js",
"files": [
Expand Down Expand Up @@ -81,4 +99,4 @@
"@babel/parser": "7.27.3"
},
"packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f"
}
}
Loading