diff --git a/mcp-servers-1.0.0.tar.gz b/mcp-servers-1.0.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..81ce27a4be1480ec6687851eaed179bb67f16fa9 Binary files /dev/null and b/mcp-servers-1.0.0.tar.gz differ diff --git a/mcp-servers.spec b/mcp-servers.spec new file mode 100644 index 0000000000000000000000000000000000000000..64ebf512d4785ae6f6d832ebfb123c6dd987acc0 --- /dev/null +++ b/mcp-servers.spec @@ -0,0 +1,361 @@ +Name: mcp-servers +Version: 1.0.0 +Release: 1 +Summary: openEuler MCP Servers collection +License: MIT +URL: https://gitee.com/openeuler/mcp-servers +Source0: mcp-servers-%{version}.tar.gz +BuildArch: noarch + +# 公共依赖 +BuildRequires: python3-devel +BuildRequires: python3-setuptools +Requires: python3 +Requires: uv +Requires: python3-mcp +Requires: jq + +%package git-mcp +Summary: MCP server for Git repository operations +Requires: %{name} = %{version}-%{release} +Requires: python3 +Requires: uv +Requires: python3-mcp +Requires: jq +Requires: git +Requires: oegitext +%package oeDeploy +Summary: MCP server for oeDeploy +Requires: %{name} = %{version}-%{release} +Requires: python3 +Requires: uv +Requires: python3-mcp +Requires: oedp +%package rpm-builder +Summary: MCP server for building rpm packages +Requires: %{name} = %{version}-%{release} +Requires: python3 +Requires: uv +Requires: python3-mcp +Requires: jq +Requires: rpm-build +%package ccb_mcp +Summary: EulerMaker ccb MCP Server +Requires: %{name} = %{version}-%{release} +Requires: python3 +Requires: uv +Requires: python3-mcp +Requires: ccb +%package oeGitExt +Summary: MCP server for oeGitExt +Requires: %{name} = %{version}-%{release} +Requires: python3 +Requires: uv +Requires: python3-mcp +Requires: oegitext + +%description +Collection of openEuler MCP Servers providing various capabilities. + +%description git-mcp +Provides MCP tools for interacting with Git repositories, +including clone, pull, push and branch management. + +%description oeDeploy +Provides MCP tools for oeDeploy. + +%description rpm-builder +Provides MCP tools for building and packaging rpm packages. + +%description ccb_mcp +MCP Server for interacting with EulerMaker using ccb commands. +Provides tools for project management, package building and deployment in EulerMaker. + +%description oeGitExt +Provides MCP tools for oeGitExt. + + +%prep +%autosetup -n %{name} + +%build +# 不需要构建步骤 + +%install +# 主包只负责创建基础目录结构 +mkdir -p %{buildroot}/opt/mcp-servers/servers + +for server in git_mcp oeDeploy_mcp rpm-builder_mcp ccb_mcp oeGitExt_mcp; do + mkdir -p %{buildroot}/opt/mcp-servers/servers/$server/src + cp -r servers/$server/src/* %{buildroot}/opt/mcp-servers/servers/$server/src/ || : + cp servers/$server/mcp_config.json %{buildroot}/opt/mcp-servers/servers/$server/ || : + cp servers/$server/src/requirements.txt %{buildroot}/opt/mcp-servers/servers/$server/src/ || : +done + +%post +# 主包%post只处理公共目录权限设置 +find /opt/mcp-servers -type d -exec chmod 755 {} \; + +# 子包特定的%post脚本由各自子包处理 +%post git-mcp +# 为git-mcp创建虚拟环境 +uv venv /opt/mcp-servers/servers/git_mcp/.venv --python /bin/python3 --system-site-packages +chmod -R 755 /opt/mcp-servers/servers/git_mcp/.venv + +if [ -f /opt/mcp-servers/servers/git_mcp/src/requirements.txt ]; then + /opt/mcp-servers/servers/git_mcp/.venv/bin/python -m pip install \ + -r /opt/mcp-servers/servers/git_mcp/src/requirements.txt \ + -i https://mirrors.huaweicloud.com/repository/pypi/simple + + chmod -R 755 /opt/mcp-servers/servers/git_mcp/.venv + find /opt/mcp-servers/servers/git_mcp/.venv -type d -exec chmod 755 {} \; + find /opt/mcp-servers/servers/git_mcp/.venv -type f -exec chmod 644 {} \; +fi + +# 合并MCP配置 +if [ -f /opt/mcp-servers/servers/git_mcp/mcp_config.json ]; then + MCP_CONFIG_PATH="/.config/VSCodium/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json" + + mkdir -p "/root$(dirname $MCP_CONFIG_PATH)" + if [ -f "/root$MCP_CONFIG_PATH" ]; then + jq -s '.[0] * .[1]' "/root$MCP_CONFIG_PATH" \ + /opt/mcp-servers/servers/git_mcp/mcp_config.json \ + > "/root$MCP_CONFIG_PATH.tmp" && \ + mv "/root$MCP_CONFIG_PATH.tmp" "/root$MCP_CONFIG_PATH" + else + cp /opt/mcp-servers/servers/git_mcp/mcp_config.json "/root$MCP_CONFIG_PATH" + fi + + for user_home in /home/*; do + if [ -d "$user_home" ]; then + username=$(basename "$user_home") + mkdir -p "$user_home$(dirname $MCP_CONFIG_PATH)" + if [ -f "$user_home$MCP_CONFIG_PATH" ]; then + jq -s '.[0] * .[1]' "$user_home$MCP_CONFIG_PATH" \ + /opt/mcp-servers/servers/git_mcp/mcp_config.json \ + > "$user_home$MCP_CONFIG_PATH.tmp" && \ + mv "$user_home$MCP_CONFIG_PATH.tmp" "$user_home$MCP_CONFIG_PATH" + else + cp /opt/mcp-servers/servers/git_mcp/mcp_config.json "$user_home$MCP_CONFIG_PATH" + fi + chown -R "$username:$username" "$user_home$(dirname $MCP_CONFIG_PATH)" + chmod 755 "$user_home$(dirname $MCP_CONFIG_PATH)" + chmod 644 "$user_home$MCP_CONFIG_PATH" + fi + done +fi +%post oeDeploy +# 为oeDeploy创建虚拟环境 +uv venv /opt/mcp-servers/servers/oeDeploy_mcp/.venv --python /bin/python3 --system-site-packages +chmod -R 755 /opt/mcp-servers/servers/oeDeploy_mcp/.venv + +if [ -f /opt/mcp-servers/servers/oeDeploy_mcp/src/requirements.txt ]; then + /opt/mcp-servers/servers/oeDeploy_mcp/.venv/bin/python -m pip install \ + -r /opt/mcp-servers/servers/oeDeploy_mcp/src/requirements.txt \ + -i https://mirrors.huaweicloud.com/repository/pypi/simple + + chmod -R 755 /opt/mcp-servers/servers/oeDeploy_mcp/.venv + find /opt/mcp-servers/servers/oeDeploy_mcp/.venv -type d -exec chmod 755 {} \; + find /opt/mcp-servers/servers/oeDeploy_mcp/.venv -type f -exec chmod 644 {} \; +fi + +# 合并MCP配置 +if [ -f /opt/mcp-servers/servers/oeDeploy_mcp/mcp_config.json ]; then + MCP_CONFIG_PATH="/.config/VSCodium/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json" + + mkdir -p "/root$(dirname $MCP_CONFIG_PATH)" + if [ -f "/root$MCP_CONFIG_PATH" ]; then + jq -s '.[0] * .[1]' "/root$MCP_CONFIG_PATH" \ + /opt/mcp-servers/servers/oeDeploy_mcp/mcp_config.json \ + > "/root$MCP_CONFIG_PATH.tmp" && \ + mv "/root$MCP_CONFIG_PATH.tmp" "/root$MCP_CONFIG_PATH" + else + cp /opt/mcp-servers/servers/oeDeploy_mcp/mcp_config.json "/root$MCP_CONFIG_PATH" + fi + + for user_home in /home/*; do + if [ -d "$user_home" ]; then + username=$(basename "$user_home") + mkdir -p "$user_home$(dirname $MCP_CONFIG_PATH)" + if [ -f "$user_home$MCP_CONFIG_PATH" ]; then + jq -s '.[0] * .[1]' "$user_home$MCP_CONFIG_PATH" \ + /opt/mcp-servers/servers/oeDeploy_mcp/mcp_config.json \ + > "$user_home$MCP_CONFIG_PATH.tmp" && \ + mv "$user_home$MCP_CONFIG_PATH.tmp" "$user_home$MCP_CONFIG_PATH" + else + cp /opt/mcp-servers/servers/oeDeploy_mcp/mcp_config.json "$user_home$MCP_CONFIG_PATH" + fi + chown -R "$username:$username" "$user_home$(dirname $MCP_CONFIG_PATH)" + chmod 755 "$user_home$(dirname $MCP_CONFIG_PATH)" + chmod 644 "$user_home$MCP_CONFIG_PATH" + fi + done +fi +%post rpm-builder +# 为rpm-builder创建虚拟环境 +uv venv /opt/mcp-servers/servers/rpm-builder_mcp/.venv --python /bin/python3 --system-site-packages +chmod -R 755 /opt/mcp-servers/servers/rpm-builder_mcp/.venv + +if [ -f /opt/mcp-servers/servers/rpm-builder_mcp/src/requirements.txt ]; then + /opt/mcp-servers/servers/rpm-builder_mcp/.venv/bin/python -m pip install \ + -r /opt/mcp-servers/servers/rpm-builder_mcp/src/requirements.txt \ + -i https://mirrors.huaweicloud.com/repository/pypi/simple + + chmod -R 755 /opt/mcp-servers/servers/rpm-builder_mcp/.venv + find /opt/mcp-servers/servers/rpm-builder_mcp/.venv -type d -exec chmod 755 {} \; + find /opt/mcp-servers/servers/rpm-builder_mcp/.venv -type f -exec chmod 644 {} \; +fi + +# 合并MCP配置 +if [ -f /opt/mcp-servers/servers/rpm-builder_mcp/mcp_config.json ]; then + MCP_CONFIG_PATH="/.config/VSCodium/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json" + + mkdir -p "/root$(dirname $MCP_CONFIG_PATH)" + if [ -f "/root$MCP_CONFIG_PATH" ]; then + jq -s '.[0] * .[1]' "/root$MCP_CONFIG_PATH" \ + /opt/mcp-servers/servers/rpm-builder_mcp/mcp_config.json \ + > "/root$MCP_CONFIG_PATH.tmp" && \ + mv "/root$MCP_CONFIG_PATH.tmp" "/root$MCP_CONFIG_PATH" + else + cp /opt/mcp-servers/servers/rpm-builder_mcp/mcp_config.json "/root$MCP_CONFIG_PATH" + fi + + for user_home in /home/*; do + if [ -d "$user_home" ]; then + username=$(basename "$user_home") + mkdir -p "$user_home$(dirname $MCP_CONFIG_PATH)" + if [ -f "$user_home$MCP_CONFIG_PATH" ]; then + jq -s '.[0] * .[1]' "$user_home$MCP_CONFIG_PATH" \ + /opt/mcp-servers/servers/rpm-builder_mcp/mcp_config.json \ + > "$user_home$MCP_CONFIG_PATH.tmp" && \ + mv "$user_home$MCP_CONFIG_PATH.tmp" "$user_home$MCP_CONFIG_PATH" + else + cp /opt/mcp-servers/servers/rpm-builder_mcp/mcp_config.json "$user_home$MCP_CONFIG_PATH" + fi + chown -R "$username:$username" "$user_home$(dirname $MCP_CONFIG_PATH)" + chmod 755 "$user_home$(dirname $MCP_CONFIG_PATH)" + chmod 644 "$user_home$MCP_CONFIG_PATH" + fi + done +fi +%post ccb_mcp +# 为ccb_mcp创建虚拟环境 +uv venv /opt/mcp-servers/servers/ccb_mcp/.venv --python /bin/python3 --system-site-packages +chmod -R 755 /opt/mcp-servers/servers/ccb_mcp/.venv + +if [ -f /opt/mcp-servers/servers/ccb_mcp/src/requirements.txt ]; then + /opt/mcp-servers/servers/ccb_mcp/.venv/bin/python -m pip install \ + -r /opt/mcp-servers/servers/ccb_mcp/src/requirements.txt \ + -i https://mirrors.huaweicloud.com/repository/pypi/simple + + chmod -R 755 /opt/mcp-servers/servers/ccb_mcp/.venv + find /opt/mcp-servers/servers/ccb_mcp/.venv -type d -exec chmod 755 {} \; + find /opt/mcp-servers/servers/ccb_mcp/.venv -type f -exec chmod 644 {} \; +fi + +# 合并MCP配置 +if [ -f /opt/mcp-servers/servers/ccb_mcp/mcp_config.json ]; then + MCP_CONFIG_PATH="/.config/VSCodium/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json" + + mkdir -p "/root$(dirname $MCP_CONFIG_PATH)" + if [ -f "/root$MCP_CONFIG_PATH" ]; then + jq -s '.[0] * .[1]' "/root$MCP_CONFIG_PATH" \ + /opt/mcp-servers/servers/ccb_mcp/mcp_config.json \ + > "/root$MCP_CONFIG_PATH.tmp" && \ + mv "/root$MCP_CONFIG_PATH.tmp" "/root$MCP_CONFIG_PATH" + else + cp /opt/mcp-servers/servers/ccb_mcp/mcp_config.json "/root$MCP_CONFIG_PATH" + fi + + for user_home in /home/*; do + if [ -d "$user_home" ]; then + username=$(basename "$user_home") + mkdir -p "$user_home$(dirname $MCP_CONFIG_PATH)" + if [ -f "$user_home$MCP_CONFIG_PATH" ]; then + jq -s '.[0] * .[1]' "$user_home$MCP_CONFIG_PATH" \ + /opt/mcp-servers/servers/ccb_mcp/mcp_config.json \ + > "$user_home$MCP_CONFIG_PATH.tmp" && \ + mv "$user_home$MCP_CONFIG_PATH.tmp" "$user_home$MCP_CONFIG_PATH" + else + cp /opt/mcp-servers/servers/ccb_mcp/mcp_config.json "$user_home$MCP_CONFIG_PATH" + fi + chown -R "$username:$username" "$user_home$(dirname $MCP_CONFIG_PATH)" + chmod 755 "$user_home$(dirname $MCP_CONFIG_PATH)" + chmod 644 "$user_home$MCP_CONFIG_PATH" + fi + done +fi +%post oeGitExt +# 为oeGitExt创建虚拟环境 +uv venv /opt/mcp-servers/servers/oeGitExt_mcp/.venv --python /bin/python3 --system-site-packages +chmod -R 755 /opt/mcp-servers/servers/oeGitExt_mcp/.venv + +if [ -f /opt/mcp-servers/servers/oeGitExt_mcp/src/requirements.txt ]; then + /opt/mcp-servers/servers/oeGitExt_mcp/.venv/bin/python -m pip install \ + -r /opt/mcp-servers/servers/oeGitExt_mcp/src/requirements.txt \ + -i https://mirrors.huaweicloud.com/repository/pypi/simple + + chmod -R 755 /opt/mcp-servers/servers/oeGitExt_mcp/.venv + find /opt/mcp-servers/servers/oeGitExt_mcp/.venv -type d -exec chmod 755 {} \; + find /opt/mcp-servers/servers/oeGitExt_mcp/.venv -type f -exec chmod 644 {} \; +fi + +# 合并MCP配置 +if [ -f /opt/mcp-servers/servers/oeGitExt_mcp/mcp_config.json ]; then + MCP_CONFIG_PATH="/.config/VSCodium/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json" + + mkdir -p "/root$(dirname $MCP_CONFIG_PATH)" + if [ -f "/root$MCP_CONFIG_PATH" ]; then + jq -s '.[0] * .[1]' "/root$MCP_CONFIG_PATH" \ + /opt/mcp-servers/servers/oeGitExt_mcp/mcp_config.json \ + > "/root$MCP_CONFIG_PATH.tmp" && \ + mv "/root$MCP_CONFIG_PATH.tmp" "/root$MCP_CONFIG_PATH" + else + cp /opt/mcp-servers/servers/oeGitExt_mcp/mcp_config.json "/root$MCP_CONFIG_PATH" + fi + + for user_home in /home/*; do + if [ -d "$user_home" ]; then + username=$(basename "$user_home") + mkdir -p "$user_home$(dirname $MCP_CONFIG_PATH)" + if [ -f "$user_home$MCP_CONFIG_PATH" ]; then + jq -s '.[0] * .[1]' "$user_home$MCP_CONFIG_PATH" \ + /opt/mcp-servers/servers/oeGitExt_mcp/mcp_config.json \ + > "$user_home$MCP_CONFIG_PATH.tmp" && \ + mv "$user_home$MCP_CONFIG_PATH.tmp" "$user_home$MCP_CONFIG_PATH" + else + cp /opt/mcp-servers/servers/oeGitExt_mcp/mcp_config.json "$user_home$MCP_CONFIG_PATH" + fi + chown -R "$username:$username" "$user_home$(dirname $MCP_CONFIG_PATH)" + chmod 755 "$user_home$(dirname $MCP_CONFIG_PATH)" + chmod 644 "$user_home$MCP_CONFIG_PATH" + fi + done +fi + +%files +# 主包不包含具体文件,只包含子包 +%files git-mcp +/opt/mcp-servers/servers/git_mcp/* +%defattr(-,root,root,-) + +%files oeDeploy +/opt/mcp-servers/servers/oeDeploy_mcp/* +%defattr(-,root,root,-) + +%files rpm-builder +/opt/mcp-servers/servers/rpm-builder_mcp/* +%defattr(-,root,root,-) + +%files ccb_mcp +/opt/mcp-servers/servers/ccb_mcp/* +%defattr(-,root,root,-) + +%files oeGitExt +/opt/mcp-servers/servers/oeGitExt_mcp/* +%defattr(-,root,root,-) + + +%changelog +* Fri May 16 2025 openEuler MCP Team <2271170409@qq.com> - 1.0.0-1 +- Initial package with all MCP servers