6.9 KiB
Funplay Cocos MCP Release Workflow
This document records the release workflow for publishing Funplay MCP for Cocos to:
- Git tags
- GitHub Releases
- Downloadable Cocos Creator extension zip packages
- npm stdio wrapper package
- Official MCP Registry
Published Identity
- GitHub repository:
https://github.com/FunplayAI/funplay-cocos-mcp - Git tag format:
v<version> - GitHub Release tag:
v<version> - Extension package asset:
Funplay.CocosMcp.v<version>.zip - Cocos extension folder name inside the zip:
funplay-cocos-mcp - npm package id:
funplay-cocos-mcp - npm command:
funplay-cocos-mcp - MCP Registry server name:
io.github.FunplayAI/funplay-cocos-mcp - Default local MCP endpoint:
http://127.0.0.1:8765/
Version Alignment Rule
Keep these versions aligned:
package.jsonversionCHANGELOG.mdrelease section- Git tag
v<version> - GitHub Release
v<version> releases/<version>/release-manifest.jsonversion- Release zip filename
Funplay.CocosMcp.v<version>.zip server.jsontop-level versionserver.jsonnpm package version
Example:
package.json:0.3.1- Git tag:
v0.3.1 - GitHub Release:
v0.3.1 - Release asset:
Funplay.CocosMcp.v0.3.1.zip - npm package:
funplay-cocos-mcp@0.3.1 - MCP Registry:
0.3.1
Files To Update For A New Release
Update:
package.json"version": "<version>"
CHANGELOG.md- add a dated release notes block
server.json- top-level
"version" - npm package
"version"
- top-level
docs/TOOLS.md- regenerate with
npm run docs:generateafter tool registry changes
- regenerate with
Optional but recommended:
README.mdREADME_CN.md- GitHub Release notes text
Release Steps
1. Verify Working Tree
git status --short --branch
The tree should contain only intentional release changes.
2. Update Versions And Notes
Update package.json and CHANGELOG.md.
Use semantic versions such as 0.3.1, and keep release headings in this format:
## [0.3.1] - 2026-05-20
3. Run Release Verification
npm run release:verify
This runs:
- JavaScript syntax checks
- Node.js tests
- generated tool documentation validation
- release metadata validation
- npm package dry-run validation
- release package generation
The generated local artifacts are written to:
releases/<version>/
Expected contents:
Funplay.CocosMcp.v<version>.ziprelease-manifest.jsonSHA256SUMS.txtREADME.md
4. Inspect The Package
The release script validates that every archive path stays under:
funplay-cocos-mcp/
The package must not contain local/build content such as:
.git/.github/.DS_Storenode_modules/Library/Temp/dist/build/test/scripts/
Verify checksums:
cd releases/<version>
shasum -a 256 -c SHA256SUMS.txt
4.5 Validate npm And MCP Registry Metadata
npm run pack:dry-run
npm run registry:validate
The npm package must include the stdio wrapper command:
npx --yes ./funplay-cocos-mcp-<version>.tgz --version
5. Commit, Tag, And Push
git add .
git commit -m "Release v<version>"
git tag v<version>
git push origin main
git push origin v<version>
6. Create GitHub Release
Regenerate the final release artifacts from the tagged clean commit:
npm run release:package -- --strict-tag
If creating a new release:
gh release create v<version> \
-R FunplayAI/funplay-cocos-mcp \
--title "v<version>" \
--notes-file /path/to/release-notes.md \
releases/<version>/Funplay.CocosMcp.v<version>.zip \
releases/<version>/release-manifest.json \
releases/<version>/SHA256SUMS.txt \
releases/<version>/README.md
If the release already exists and only assets need to be replaced:
gh release upload v<version> \
-R FunplayAI/funplay-cocos-mcp \
--clobber \
releases/<version>/Funplay.CocosMcp.v<version>.zip \
releases/<version>/release-manifest.json \
releases/<version>/SHA256SUMS.txt \
releases/<version>/README.md
7. Verify GitHub Release
gh release view v<version> \
-R FunplayAI/funplay-cocos-mcp \
--json url,assets,isDraft,isPrerelease,publishedAt
Confirm the release has all four assets.
8. Publish To npm
npm publish
Verify the published package:
npm view funplay-cocos-mcp@<version> version bin mcpName
Notes:
package.jsonmcpNamemust matchserver.jsonname.- If
npm publishreturnsENEEDAUTH, runnpm adduserwith a publishing account and retry. - If the package name already exists under another owner, choose a scoped package name and update both
package.jsonandserver.json.
9. Publish To MCP Registry
Log in if needed:
mcp-publisher login github
Publish:
mcp-publisher publish server.json
Verify latest:
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.FunplayAI/funplay-cocos-mcp&version=latest"
Check a specific version:
curl "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.FunplayAI%2Ffunplay-cocos-mcp/versions/<version>"
10. Post-Release Smoke Test
Test the package from the public GitHub Release:
- Download
Funplay.CocosMcp.v<version>.zip. - Unzip it.
- Move
funplay-cocos-mcpinto a Cocos projectextensions/directory. - Restart Cocos Creator or reload extensions.
- Open
Funplay > MCP Server. - Start the MCP server.
- Connect an MCP client and call
get_project_info. - Install the npm wrapper with
npm install -g funplay-cocos-mcp. - Connect an MCP client through the
funplay-cocos-mcpcommand and calltools/list.
Current Verification Commands
npm run release:verify
npm run registry:validate
gh release view v<version> -R FunplayAI/funplay-cocos-mcp --json url,assets
npm view funplay-cocos-mcp@<version> version bin mcpName
Common Failure Cases
Release validation says the changelog section is missing
Cause:
CHANGELOG.mddoes not contain## [<version>] - YYYY-MM-DD.
Fix:
- Add a dated release section before packaging.
zip command is missing
Cause:
- The local environment does not have the
zipCLI installed.
Fix:
- Install
zip, then rerunnpm run release:package.
GitHub Release upload replaces the wrong assets
Cause:
- The version directory or release tag does not match
package.jsonversion.
Fix:
- Rerun
npm run release:check. - Confirm the command uses
releases/<version>/andv<version>.
npm ENEEDAUTH
Cause:
- The local machine is not logged in to npm.
Fix:
npm adduser
npm publish
MCP Registry Package validation failed
Cause:
- npm package has not been published yet.
package.jsonmcpNamedoes not matchserver.jsonname.server.jsonpackage version does not match the npm package version.
Fix:
- Publish the npm package first.
- Rerun
npm run release:check. - Rerun
npm run registry:validate.