Commit graph

204 commits

Author SHA1 Message Date
joan-anthropic
70fe3b34cd
Merge pull request #234 from modelcontextprotocol/revert-233-docs/publishing-bundle-readme
Some checks failed
Test / Test (push) Has been cancelled
Test / Test-1 (push) Has been cancelled
Test / Test-2 (push) Has been cancelled
Test / Test-3 (push) Has been cancelled
Test / Test-4 (push) Has been cancelled
Test / Test-5 (push) Has been cancelled
Test / Validate JSON Schemas (push) Has been cancelled
Revert "docs: add "Publishing Your Bundle" section to README"
2026-04-22 12:16:05 -04:00
Tobin South
b4acc3f730
Revert "docs: add "Publishing Your Bundle" section to README" 2026-04-22 17:14:57 +01:00
Tobin South
0817c20eb3
Merge pull request #233 from bryan-anthropic/docs/publishing-bundle-readme
docs: add "Publishing Your Bundle" section to README
2026-04-22 09:14:13 -07:00
Bryan Thompson
5161613c79
docs: add "Publishing Your Bundle" section to README
Covers the recommended distribution pattern (GitHub Release assets),
tag convention for monorepos, per-platform asset naming, compatibility.
platforms correctness, a minimum CI shape, and ${__dirname} guidance
for relocatable entry points.
2026-04-22 10:51:05 -05:00
Tobin South
f9a551bf47
Merge pull request #231 from modelcontextprotocol/fix/chrome-applescript-json-stringify-interpolation
fix(examples/chrome-applescript): use JSON.stringify for AppleScript string interpolation
2026-04-17 13:04:22 -07:00
Bryan Thompson
73f8475a80
fix(examples/chrome-applescript): use JSON.stringify for AppleScript string interpolation 2026-04-17 14:22:56 -05:00
Tobin South
e2d6196a39
Merge pull request #230 from modelcontextprotocol/fix/chrome-applescript-tab-id-sanitize
fix(examples/chrome-applescript): sanitize tab_id to prevent AppleScript injection
2026-04-17 12:12:41 -07:00
Bryan Thompson
dace08d31f
fix(examples/chrome-applescript): sanitize tab_id to prevent AppleScript injection
The inputSchema `type: "number"` is advisory only — runtime may receive a
string payload that gets interpolated into the osascript template. Coerce
tab_id via Number.parseInt before interpolating at all four sites.

Affected sites:
- findTabById(tabId)
- executeTabOperation(tabId, ...) (close_tab, switch_to_tab, reload_tab,
  go_back, go_forward)
- execute_javascript handler
- get_page_content handler

The shared toSafeTabId() helper returns null for missing values (preserving
the active-tab fallthrough) and throws on non-numeric input (surfacing misuse
via the existing request-level try/catch, consistent with the missing-code
path in execute_javascript).
2026-04-17 13:49:30 -05:00
Bryan Thompson
a3a662451e
Merge pull request #186 from vcolin7/patch-1
[Documentation] Fix signature format documentation to match implementation
2026-04-16 07:42:25 -05:00
Bryan Thompson
e54083549b
Merge pull request #207 from modelcontextprotocol/examples/calculator-rust
feat: add Rust binary calculator example
2026-04-14 07:43:02 -05:00
Bryan Thompson
a2c331b513
Merge pull request #208 from modelcontextprotocol/feat/pack-manifest-flag
feat: add --manifest flag to pack command
2026-04-14 07:42:57 -05:00
Bryan Thompson
a3bd97131e
Merge pull request #209 from modelcontextprotocol/feat/enhanced-validate
feat: enhanced structural validation for validate command
2026-04-14 07:42:50 -05:00
Bryan Thompson
7f4596d8c8
Merge pull request #221 from modelcontextprotocol/fix/platform-overrides-env-merge
Fixes #217 — platform_overrides.*.env was replacing base mcp_config.env instead of merging. One-line fix: spread-merge instead of overwrite.
2026-04-13 12:59:06 -05:00
joan-anthropic
cf1f956935
Merge pull request #206 from modelcontextprotocol/worktree-fix-examples-uv-graduation
fix: repair broken examples and graduate UV runtime
2026-04-05 11:01:13 -07:00
Bryan Thompson
122ef0e9e9
fix: enforce executable permissions on binary entry points during pack
When server.type is "binary", mcpb pack now ensures the entry_point
file has execute bits (|0o111) in the ZIP external_attr, regardless
of the source filesystem permissions. This prevents EACCES failures
when Claude Desktop extracts Windows-built binary MCPBs (which store
644 because Windows has no Unix execute bit).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 09:18:30 -05:00
Bryan Thompson
cb052a20e5
fix: merge platform_overrides env with base env instead of replacing
platform_overrides.*.env was replacing the entire mcp_config.env object
instead of merging, causing base env vars (including ${user_config.*}
references) to be silently dropped when platform overrides defined any
env vars.

Fixes #217

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 08:23:18 -05:00
Tobin South
8f5f2104df
Merge pull request #204 from modelcontextprotocol/fix/eocd-comment-length
fix: update ZIP EOCD comment_length when signing
2026-03-18 18:08:17 +00:00
Bryan Thompson
f14863bcdc
feat: enhanced structural validation for mcpb validate (#57)
Add three pre-pack validators to catch common runtime failures early:

- validateEntryPoint: checks file exists, extension matches server type,
  binary has executable bit (Unix)
- validateCommandVariables: scans mcp_config for unrecognized ${...}
  variables against the runtime allowlist
- validateSensitiveFiles: warns about credentials.json, *.pem, *.key,
  .ssh/, etc. that would be bundled

validateManifest() now accepts optional { projectDir } to separate the
manifest directory from the source file directory.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 06:56:55 -05:00
Bryan Thompson
f4671638a2
feat: add --manifest flag to pack command (#87)
Allow specifying an external manifest file path with `mcpb pack --manifest <path>`.
The manifest resolves relative to CWD, is validated, injected into the bundle,
and errors immediately if the specified file is not found.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 06:54:22 -05:00
Bryan Thompson
a907aead99
chore: remove Dockerfile and .gitignore from calculator-rust example
Align with other examples — no example ships a Dockerfile or its own
.gitignore. Rust build artifacts are now covered by the repo-level
.gitignore instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 16:41:30 -05:00
Bryan Thompson
cc4aa751b6
feat: add Rust binary calculator example
First example of the binary server type — a compiled Rust MCP server
packaged as an MCPB. Based on the official Rust SDK calculator example
(rmcp 1.2.0, 2 tools: sum/sub, ~80 LOC).

Includes Cargo.toml, Dockerfile for Docker-based builds, .mcpbignore
to exclude source from the bundle, and README with build/pack/test
instructions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 16:36:47 -05:00
Bryan Thompson
a5d9ae8ed2
fix: repair broken examples and graduate UV runtime from experimental
- hello-world-node: wrap server startup in async main() with proper
  await on server.connect(transport) — fixes crash on initialize in
  Claude Desktop UtilityProcess runtime (closes #200)
- hello-world-uv: add required mcp_config block — v0.4 schema requires
  it but the example omitted it, causing mcpb pack to fail
- file-manager-python: convert from broken v0.1/python to v0.4/uv —
  the old manifest had privacy_policies on v0.1 (schema violation),
  used command "python" (ENOENT on macOS), and had no bundled deps.
  Now uses UV runtime with proper mcp_config (closes #47, closes #72)
- Graduate UV runtime from experimental across docs and schema comments
- Bump DEFAULT_MANIFEST_VERSION from 0.2 to 0.3

All three examples verified: pack succeeds, server responds to MCP
initialize over stdio, tools/list returns expected tools.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-12 11:16:30 -05:00
Bryan Thompson
bb676eb17d
fix: update ZIP EOCD comment_length when signing MCPB files (#194)
The signMcpbFile function appended a signature block to the ZIP file but
did not update the EOCD comment_length field. Strict ZIP parsers (like
Claude Desktop's) rejected these files because the declared comment
length didn't account for the appended signature data.

Now scans backwards for the EOCD magic bytes, reads the current
comment_length, and adds the signature block length before concatenating.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-12 08:59:13 -05:00
Tobin South
1dca91e2be
Merge pull request #178 from modelcontextprotocol/chore/apache-2.0-license
chore: update licensing to Apache 2.0 for new contributions
2026-02-12 10:24:17 -08:00
vcolin7
19afbcdc18
Update MCPB signature format description
Clarify the MCPB signature format in documentation.
2026-02-06 16:13:29 -08:00
Adam Jones
24aa4efc88
chore: update licensing to Apache 2.0 for new contributions 2026-01-12 22:50:15 +00:00
joan-anthropic
27083dcf93
Merge pull request #172 from modelcontextprotocol/feat/init-manifest-version-option
feat: add --manifest-version option to init command
2025-12-03 21:32:27 -08:00
Joan Xie
163fa29a1c
style: fix Prettier formatting in cli.ts
Break function parameters onto separate lines with trailing comma.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 21:03:04 -08:00
joan-anthropic
2a788100a6
Merge pull request #173 from modelcontextprotocol/fix/mcp-config-required v2.1.2
fix: make mcp_config required for all server types in v0.4 schema
2025-12-03 20:49:16 -08:00
Joan Xie
1dbbffc972
fix: make mcp_config required for all server types in v0.4 schema
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 20:48:31 -08:00
Joan Xie
761e834ba8
feat: add --manifest-version option to init command
Allow developers to specify which manifest version to use when
initializing a new manifest.json file.

Usage: mcpb init --manifest-version 0.3

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 20:18:45 -08:00
Alexander Sklar
3635e20ca8
Merge pull request #169 from asklar/asklar-patch-1
Fix file-system-node example
2025-12-03 18:53:50 -08:00
joan-anthropic
7c7f4b6af0
Merge pull request #168 from modelcontextprotocol/fix/node-forge-vulnerabilities v.2.1.1 v2.1.0
fix: upgrade node-forge to 1.3.2 to address security vulnerabilities
2025-12-03 17:08:35 -08:00
Alexander Sklar
2ed5481016
Bump version and update dependencies in package.json
update filesystem server version
2025-12-03 17:07:25 -08:00
Joan Xie
be3b8f2561
fix: upgrade node-forge to 1.3.2 to address security vulnerabilities
Fixes three known vulnerabilities:
- GHSA-554w-wpv2-vw27: ASN.1 Unbounded Recursion (High)
- GHSA-5gfm-wpxj-wjgq: ASN.1 Validator Desynchronization (High)
- GHSA-65ch-62r8-g69g: ASN.1 OID Integer Truncation (Medium)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 17:06:23 -08:00
joan-anthropic
9c22416146
Merge pull request #167 from modelcontextprotocol/bump-minor-version-2.1.0
chore: bump minor version to 2.1.0
2025-12-03 16:56:10 -08:00
Joan Xie
2ab44ffa5b
chore: bump minor version to 2.1.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 16:51:56 -08:00
joan-anthropic
970f2d5e5d
Merge pull request #158 from modelcontextprotocol/joan/uv-runtime-support
feat: add experimental UV runtime support in manifest v0.4
2025-12-03 16:50:01 -08:00
Joan Xie
ca4a8819a0
chore: mark v0.4 schema as experimental
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 11:48:15 -08:00
Joan Xie
d90365e626
feat: add UV runtime support in manifest v0.4
Add UV as a new server type for Python extensions that use UV runtime
for dependency management instead of bundling dependencies.

Schema changes (v0.4):
- Add "uv" to server.type enum
- Make mcp_config optional (not needed for UV type)
- UV extensions rely on pyproject.toml for dependencies

Documentation:
- Add UV runtime section to MANIFEST.md explaining benefits and usage
- Update README.md to recommend UV runtime for Python
- Add complete hello-world-uv example

Benefits of UV runtime:
- Cross-platform support (Windows/macOS/Linux, Intel/ARM)
- Small bundle size (~100 KB vs 5-10 MB)
- Handles compiled dependencies portably
- No user Python installation required

Example manifest:
{
  "manifest_version": "0.4",
  "server": {
    "type": "uv",
    "entry_point": "src/server.py"
  }
}

Co-authored-by: Joan <joan@anthropic.com>
2025-12-02 21:22:19 -08:00
joan-anthropic
dd9502e8ec
Merge pull request #151 from anthropics/fix/backport-privacy-policices-0_1
fix: remove _meta from 0.1
2025-11-06 13:09:39 -08:00
Joan Xie
349b0ceb47
chore: update patch version 2025-11-06 11:10:53 -08:00
Joan Xie
00e4bb9d10
chore: update version 2025-11-06 11:02:42 -08:00
Joan Xie
671d3d6f2d
rm privacy_policies 2025-11-06 11:01:20 -08:00
Joan Xie
29d23abfe6
fix: backport privacy_policies to 0.1, remove _meta 2025-11-06 09:29:33 -08:00
joan-anthropic
dc7e1514ce
Merge pull request #150 from anthropics/feat/restore-type-exports 2.0.1
Fix: Restore type exports
2025-11-04 13:11:11 -08:00
Joan Xie
d2826644b6
Restore missing type exports for mcpb package
- Export McpbManifestAny and Logger types from types.js
- Export McpbSignatureInfo and McpbUserConfigValues from shared/common.ts
- Add exports to both main and browser entry points
- Bump version to 2.0.1

This eliminates the need for manual type inference in consuming code.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 13:09:14 -08:00
joan-anthropic
5079fcfe30
Merge pull request #148 from anthropics/feat/browser-export-versioned-schemas 2.0.0
feat: export versioned zod schemas in mcpb/browser, remove vLatest artifacts
2025-11-04 10:39:43 -08:00
Samuel Attard
5f6b15bc81
remove da bad tings 2025-11-04 10:33:16 -08:00
Joan Xie
5f87ea58d6
Comment out localization parameter in tests
The localization parameter is commented out in the buildManifest function
signature, so it should also be commented out in the test calls.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 16:37:27 -08:00