Add a script that will be used to fully set up the modelcontextprotocol/go-sdk repo. Change-Id: Icadcb3a6368bf8ee3691c63e2b60ac01f42186e4 Reviewed-on: https://go-review.googlesource.com/c/tools/+/682795 Auto-Submit: Robert Findley <rfindley@google.com> Reviewed-by: Alan Donovan <adonovan@google.com> TryBot-Bypass: Robert Findley <rfindley@google.com> Commit-Queue: Robert Findley <rfindley@google.com>
80 lines
3 KiB
Shell
Executable file
80 lines
3 KiB
Shell
Executable file
#!/bin/bash
|
|
|
|
# This script creates an MCP SDK repo from x/tools/internal/mcp (and friends).
|
|
# It will be used as a one-off to create github.com/modelcontextprotocol/go-sdk.
|
|
#
|
|
# Requires https://github.com/newren/git-filter-repo.
|
|
|
|
set -eu
|
|
|
|
# Check if exactly one argument is provided
|
|
if [ "$#" -ne 1 ]; then
|
|
echo "create-repo.sh: create a standalone mcp SDK repo from x/tools"
|
|
echo "Usage: $0 <mcp repo destination>"
|
|
exit 1
|
|
fi >&2
|
|
|
|
src=$(go list -m -f {{.Dir}} golang.org/x/tools)
|
|
dest="$1"
|
|
|
|
echo "Filtering MCP commits from ${src} to ${dest}..." >&2
|
|
|
|
startdir=$(pwd)
|
|
tempdir=$(mktemp -d)
|
|
function cleanup {
|
|
echo "cleaning up ${tempdir}"
|
|
rm -rf "$tempdir"
|
|
} >&2
|
|
trap cleanup EXIT SIGINT
|
|
|
|
echo "Checking out to ${tempdir}"
|
|
|
|
git clone --bare "${src}" "${tempdir}"
|
|
git -C "${tempdir}" --git-dir=. filter-repo \
|
|
--path internal/mcp/jsonschema --path-rename internal/mcp/jsonschema:jsonschema \
|
|
--path internal/mcp/design --path-rename internal/mcp/design:design \
|
|
--path internal/mcp/examples --path-rename internal/mcp/examples:examples \
|
|
--path internal/mcp/internal --path-rename internal/mcp/internal:internal \
|
|
--path internal/mcp/README.md --path-rename internal/mcp/README.md:README.md \
|
|
--path internal/mcp/CONTRIBUTING.md --path-rename internal/mcp/CONTRIBUTING.md:CONTRIBUTING.md \
|
|
--path internal/mcp --path-rename internal/mcp:mcp \
|
|
--path internal/jsonrpc2_v2 --path-rename internal/jsonrpc2_v2:internal/jsonrpc2 \
|
|
--path internal/xcontext \
|
|
--replace-text "${startdir}/mcp-repo-replace.txt" \
|
|
--force
|
|
mkdir ${dest}
|
|
cd "${dest}"
|
|
git init
|
|
|
|
cat << EOF > LICENSE
|
|
MIT License
|
|
|
|
Copyright (c) 2025 Go MCP SDK Authors
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
SOFTWARE.
|
|
EOF
|
|
|
|
git add LICENSE && git commit -m "Initial commit: add LICENSE"
|
|
git remote add filtered_source "${tempdir}"
|
|
git pull filtered_source master --allow-unrelated-histories
|
|
git remote remove filtered_source
|
|
go mod init github.com/modelcontextprotocol/go-sdk && go get go@1.23.0
|
|
go mod tidy
|
|
git add go.mod go.sum
|
|
git commit -m "all: add go.mod and go.sum file"
|