Beat Saber Modding Tools MCP
Retrieves repository commit information (replacing the GetCommitInfo build task) for use in manifests and release metadata.
Writes values to GitHub Actions outputs (replacing SetActionOutput) so builds, packaging, and version info can be consumed by CI workflows.
Provides documented configuration for using the server from VS Code Copilot Chat and the GitHub Copilot CLI, including stdio server setup and extended timeouts for build/package operations.
Builds SDK-style Beat Saber mod projects using the .NET SDK/dotnet CLI (falling back to MSBuild for legacy projects), without requiring Visual Studio.
Detects Oculus-installed copies of Beat Saber (alongside Steam and BS Manager installs) to resolve the game directory used for references and plugin deployment.
Detects Steam installations of Beat Saber so projects can be pointed at the correct game directory for references, builds, and deployment.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Beat Saber Modding Tools MCP build my mod, package the release zip, and deploy it to Beat Saber"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Beat Saber Modding Tools MCP
An MCP server and CLI that replace the BeatSaberModdingTools Visual Studio extension and BeatSaberModdingTools.Tasks MSBuild tasks when you build Beat Saber PC mods with an AI agent instead of Visual Studio.
The server detects the game, fixes BeatSaberDir, manages game references, validates and embeds
manifest.json, runs MSBuild/dotnet, creates BeatMods-style release zips, and deploys the plugin to
Plugins (or IPA/Pending while the game is running).
Python 3.10+
Windows (game detection, BSIPA deployment)
No Visual Studio required: use Visual Studio Build Tools or the .NET SDK (
dotnet)Works with existing BSIPA projects that use
BeatSaberModdingTools.Tasks
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt-mcpこれは何か(日本語)
このリポジトリは、Beat Saber の PC Mod(BSIPA)を Visual Studio なしで開発・ビルドするための
MCP サーバーです。BeatSaberModdingTools(Visual Studio 拡張機能)と
BeatSaberModdingTools.Tasks(MSBuild タスク)の主要機能を Python で再実装し、
GitHub Copilot / Claude / Codex などの MCP クライアントや CLI から利用できます。
できること
Steam / Oculus / BS Manager のゲーム検出、
BeatSaberDir/GameDirectoryの設定ゲーム DLL 参照の追加・削除、オフラインビルド用の
Refsコピーmanifest.jsonの生成・検証・アセンブリへの埋め込み、AssemblyInfoとのバージョン同期dotnet/ MSBuild でのビルド、BeatMods 形式 zip の作成、Plugins/IPA/Pendingへの配置公式プロジェクトテンプレート(
bare/core/disableable)公式アイテムテンプレート(Harmony / BSML / BSML ViewController / MonoBehaviour)
24 個の MCP ツールと
bsmtCLI
すぐ使う
# セットアップ確認(ゲーム・MSBuild・dotnet・git)
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt doctor
# MCP サーバーを単体で起動する場合
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt-mcpMCP クライアント設定(汎用):
{
"mcpServers": {
"beatSaberModdingTools": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/denpadokei/BeatSaberModdingToolsMCP",
"bsmt-mcp"
]
}
}
}GitHub Copilot の設定は GitHub Copilot での使い方 を参照してください。
基本的な流れ
detect_game— ゲームのインストールを検出inspect_project— 参照・BeatSaberDir・manifest の状態を確認set_game_directory—BeatSaberDir/GameDirectoryを設定add_game_references— 不足しているゲーム DLL を追加generate_manifest/set_version— manifest とバージョンを整備build_mod(package=true, deploy=true)— ビルド、zip 作成、ゲームへ配置
テンプレート
# プロジェクト作成(SDK スタイル / 公式テンプレート)
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt create .\MyMod --name "My Mod"
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt create .\MyMod --template core --game "D:\...\Beat Saber"
# アイテム追加
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt item add .\MyMod --template harmony-patch --name MyPatch --directory Patches
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt item add .\MyMod --template bsml-viewcontroller --name SettingsView --directory UI詳細なツール一覧・CLI・トラブルシューティングは以下の英語セクションに記載しています。
Related MCP server: mcp-server-unity
Quick start (MCP client)
Add the server to your MCP client configuration. The exact wrapper key depends on the client
(mcpServers for Claude Desktop/Codex-style clients, context_servers, etc.); the command is
always the same.
{
"mcpServers": {
"beat-saber-modding-tools": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/denpadokei/BeatSaberModdingToolsMCP",
"bsmt-mcp"
]
}
}
}The first launch clones the repository, builds the wheel, and caches it. Later launches are fast.
GitHub Copilot での使い方
VS Code(Copilot Chat)と GitHub Copilot CLI の両方に対応しています。
VS Code — %APPDATA%\Code\User\mcp.json(Windows)の servers に追加:
{
"servers": {
"beatSaberModdingTools": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/denpadokei/BeatSaberModdingToolsMCP",
"bsmt-mcp"
]
}
}
}追加後、VS Code で Developer: Reload Window を実行し、コマンドパレットの
MCP: List Servers から beatSaberModdingTools を開始・承認してください。
GitHub Copilot CLI — ~/.copilot/mcp-config.json の mcpServers に追加:
{
"mcpServers": {
"beatSaberModdingTools": {
"type": "local",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/denpadokei/BeatSaberModdingToolsMCP",
"bsmt-mcp"
],
"tools": ["*"],
"timeout": 900000
}
}
}CLI では次のコマンドでも追加できます:
copilot mcp add beatSaberModdingTools --timeout 900000 -- uvx --from "git+https://github.com/denpadokei/BeatSaberModdingToolsMCP" bsmt-mcp
copilot mcp listtimeout はビルドやパッケージ作成に余裕を持たせるため 15 分にしています。
Copilot からは「この Mod を Release でビルドして zip を作って」のように依頼すると、
inspect_project → build_mod などのツールが使われます。
uvx run git+<url>
uvx takes the package with --from and the command as the following argument, so the literal
form uvx run git+<url> would ask uvx for a PyPI package named run. To keep the command shape
short, this package installs a run alias equivalent to bsmt-mcp:
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP run
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt-mcp # same serverFor a local checkout:
uvx --from "git+file:///C:/path/to/BeatSaberModdingToolsMCP" bsmt-mcpCLI quick start
The same code is available as the bsmt command, which is handy from a terminal or from an agent
that can run commands but not MCP.
# 1. Find the game
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt detect
# 2. Inspect a project
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt inspect .\MyMod
# 3. Point the project at a game install
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt setup .\MyMod --target user
# 4. Add references (presets: core, bsipa, bsml, sira, harmony, newtonsoft, zenject)
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt refs add .\MyMod --preset core --preset bsipa
# 5. Build, zip and deploy
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt build .\MyMod -c Release --package --deploy
# 6. Scaffold a new project
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt create .\NewMod --name "New Mod"After the first uvx run you can also install it once:
uv tool install git+https://github.com/denpadokei/BeatSaberModdingToolsMCP
bsmt doctorWhat it replaces
BeatSaberModdingTools feature | MCP tool / CLI |
Beat Saber install detection (Steam, Oculus, BS Manager) |
|
Set |
|
Beat Saber Reference Manager (add/remove DLLs) |
|
Add Reference Paths ( |
|
Reference copies for offline/CI builds |
|
Project and item templates (official Visual Studio templates) |
|
|
|
Version bumps (manifest + assembly together) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Build without Visual Studio |
|
The behavior is modeled on:
denpadokei/BeatSaberModdingTools (fork with fixes; the detection code follows the fixed behavior)
Build behavior
SDK-style projects build with
dotnet buildwhen available, otherwise MSBuild.Legacy (non-SDK) projects build with
MSBuild.exefrom Visual Studio or Build Tools.When
BeatSaberModdingTools.Tasksis present, the build passesDisableCopyToGame=true,DisableCopyToPlugins=trueandDisableZipRelease=trueso the package does not duplicate the server's packaging/deploy. Manifest generation by the package still works.package_modhonorsOutputCopyitems and otherwise copiesPlugins/<AssemblyName>.dll(+ PDB). The zip containsPlugins/...at its root, exactly likeBSMT_ZipRelease. Passinclude_manifest=trueif your distribution needs a rootmanifest.jsontoo.deploy_modwrites toPluginsnormally and toIPA/PendingwhileBeat Saber.exeis running, matching BSIPA's pending-file mechanism.
MCP tools
Read-only tools: detect_game, build_environment, game_process_status,
inspect_project, list_game_references, read_manifest, validate_manifest,
get_assembly_info, compare_versions, get_git_info, list_templates.
Mutating tools: add_game_references, remove_game_references, set_game_directory,
copy_game_references, create_project, add_item_template, generate_manifest, set_version,
build_mod, package_mod, deploy_mod, replace_in_file, set_github_output.
Recommended workflow
detect_game— choose the install (the newest or the BS Manager last-launched instance).inspect_project— see whether references,BeatSaberDir, and the manifest are sane.set_game_directory— writeBeatSaberDir/GameDirectoryif the project does not resolve them.add_game_references— add missing DLLs; start withpresets=["core","bsipa"].generate_manifest— merge fields, validate, and embed the manifest. Useset_versionwhen bumping the version so the manifest andAssemblyInfo.csstay in sync.build_modwithpackage=trueanddeploy=true.
Agents should check ok in the returned JSON. build_mod returns ok=false with parsed
diagnostics instead of hiding compiler errors.
Templates
create_project supports two kinds of templates:
template="sdk"(default) — the SDK-style project generated by this package. It targetsnet472, has no VS-specific imports, and is the best choice for AI/CI builds.template="bare","core","disableable"— the official Visual Studio templates from denpadokei/UnityModdingTools.Templates.BeatSaber (branchdenpadokei-dev). The template files are vendored into the wheel (MIT; seesrc/bsmt_mcp/template_data/official/SOURCE.json), expanded without Visual Studio, and post-processed for the project name, version, manifest andBeatSaberDir.
# official templates
bsmt templates list
bsmt create .\MyMod --template core --name "My Mod" --game "D:\...\Beat Saber"
bsmt create .\MyMod --template disableable --id MyMod --author me
# use a newer checkout of the template repository instead of the bundled copy
bsmt templates list --templates-dir C:\source\UnityModdingTools.Templates.BeatSaber
bsmt create .\MyMod --template bare --templates-dir C:\source\UnityModdingTools.Templates.BeatSaberBSMT_TEMPLATES_DIR is also honored. The template engine supports $safeprojectname$,
$projectname$, $rootnamespace$, $guid1$/$guid2$, $targetframeworkversion$,
$registeredorganization$, $year$, simple $if$/$endif$ conditions, and
ProjectItem target mappings.
Item templates
add_item_template adds the official item templates to an existing project:
key | Adds | Required references |
| Harmony patch class |
|
|
| — |
|
|
|
| MonoBehaviour class | — |
bsmt item add .\MyMod --template harmony-patch --name MyPatch --directory Patches
bsmt item add .\MyMod --template bsml-viewcontroller --name SettingsView --directory UI
bsmt item add .\MyMod --template monobehaviour --name Runner --directory BehavioursRequired references are resolved from the project's BeatSaberDir (or --game) and added
automatically; pass --no-references to skip that. For SDK-style projects the .cs files are
included implicitly, while .bsml files are added as <EmbeddedResource> with
<DependentUpon>. For legacy projects both <Compile> and <EmbeddedResource> items are added.
Requirements and setup
Windows 10/11 for game detection and deployment.
MSBuild from Visual Studio Build Tools/VS (legacy projects), or the .NET SDK (SDK-style projects).
bsmt doctorreports what was found.For
net472projects, install the .NET Framework 4.7.2 targeting pack (included in the .NET desktop development workload).NuGet restore needs network access on the first build, unless the packages are already in the global NuGet cache.
No Visual Studio IDE is required. Build Tools are enough for legacy projects.
How the tricky parts are handled
BeatSaberDir and .csproj.user
MSBuild imports <project>.csproj.user through Microsoft.Common.props, so the extension's
BeatSaberDir convention keeps working from the command line. set_game_directory updates any
existing definition first (project, .csproj.user, nearest Directory.Build.props) and creates a
.csproj.user only when nothing defines it.
Manifest embedding
BSIPA reads <AssemblyName>.manifest.json from the assembly's embedded resources. Projects using
BeatSaberModdingTools.Tasks either embed the source manifest.json (RootNamespace must equal
AssemblyName, the usual case) or let the package generate it. When the package is absent,
generate_manifest(embed=true) adds:
<ItemGroup>
<EmbeddedResource Include="manifest.json">
<LogicalName>$(AssemblyName).manifest.json</LogicalName>
</EmbeddedResource>
</ItemGroup>It deliberately skips this when ImportBSMTTargets is enabled, avoiding duplicate resource names
(CS1508).
Offline references
copy_game_references mirrors Beat Saber_Data/Managed, Libs, and Plugins into a local
Refs folder (default: the parent of the project folder) and can point BeatSaberDir there. The
usual $(BeatSaberDir)\Beat Saber_Data\Managed\Main.dll HintPaths then resolve without the game
installed, which is useful for CI.
CLI reference
bsmt detect [--game PATH] [PATH ...]
bsmt doctor
bsmt inspect PROJECT [-c Debug]
bsmt refs list [PROJECT] [--game PATH] [--filter NAME] [--missing]
bsmt refs add PROJECT [--name DLL] [--preset core] [--game PATH] [--dry-run]
bsmt refs remove PROJECT --name DLL [--keep-non-game] [--dry-run]
bsmt refs copy PROJECT [--destination DIR] [--game PATH] [--no-set-dir]
bsmt setup PROJECT [--game PATH] [--target auto|user|project|props] [--reference-path]
bsmt manifest show PROJECT
bsmt manifest validate PROJECT
bsmt manifest generate PROJECT [--id ID] [--version 1.2.3] [--game-version 1.44.1] [--depends-on BSIPA=^4.3.0]
bsmt set-version PROJECT VERSION [--no-manifest] [--no-assembly] [--dry-run]
bsmt assembly PROJECT
bsmt compare MANIFEST_VERSION ASSEMBLY_VERSION
bsmt git PROJECT
bsmt build PROJECT [-c Release] [--package] [--deploy] [--property K=V]
bsmt package PROJECT [-c Release] [--extra SOURCE=DEST] [--include-manifest]
bsmt deploy PROJECT [-c Release] [--game PATH]
bsmt create PATH [--name NAME] [--id ID] [--author AUTHOR] [--template sdk|bare|core|disableable] [--templates-dir DIR]
bsmt templates list [--templates-dir DIR]
bsmt item add PROJECT --template harmony-patch|bsml-file|bsml-viewcontroller|monobehaviour --name NAME [--directory DIR] [--namespace NS] [--game DIR] [--no-references] [--no-project] [--force]
bsmt replace FILE PATTERN SUBSTITUTE [--regex]
bsmt github-output NAME VALUE [--path FILE]
bsmt mcpAll commands print JSON and exit non-zero when the operation reports ok: false.
Troubleshooting
uvx cannot acquire a lock / access denied (sandboxed environments).
Set UV_CACHE_DIR to a writable directory:
$env:UV_CACHE_DIR = "$PWD\.uv-cache"
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP bsmt doctorMSBuild.exe not found.
Install Visual Studio Build Tools with the .NET desktop development workload, or use an
SDK-style project and the .NET SDK (--prefer dotnet).
Game not detected.
Pass --game "D:\...\Beat Saber" or set BEATSABER_DIR. BS Manager installs are auto-detected
from %APPDATA%\bs-manager\config.json.
CS0006 / missing $(BeatSaberDir) DLLs.
Run bsmt setup . --target user, then bsmt refs add . --preset core --preset bsipa.
Manifest version mismatch on Release.
bsmt compare <manifest version> <assembly version> shows the BSMT rules (prerelease labels are
ignored; 1.2.3 matches 1.2.3.0).
NU1301 / NuGet TLS errors. Restore needs access to nuget.org (or a local cache/mirror). The build itself works offline once the packages are cached.
日本語
Beat Saber の PC Mod(BSIPA)を Visual Studio を使わずに AI エージェントでビルドするための
MCP サーバー兼 CLI です。BeatSaberModdingTools 拡張機能と BeatSaberModdingTools.Tasks の
主要機能を Python で再実装しています。
ゲームの検出(Steam / Oculus / BS Manager)、
BeatSaberDirの自動設定参照 DLL の追加・削除、ローカル
Refsへのコピー(オフラインビルド用)manifest.jsonの生成・検証・アセンブリへの埋め込みMSBuild / dotnet でのビルド、BeatMods 形式 zip の作成、
Plugins/IPA/Pendingへの配置AssemblyInfoのバージョン比較、git 情報、ReplaceInFile相当公式プロジェクトテンプレート(
bare/core/disableable)と アイテムテンプレート(Harmony / BSML / BSML ViewController / MonoBehaviour)24 個の MCP ツールと
bsmtCLI
{
"mcpServers": {
"beatSaberModdingTools": {
"command": "uvx",
"args": ["--from", "git+https://github.com/denpadokei/BeatSaberModdingToolsMCP", "bsmt-mcp"]
}
}
}GitHub Copilot(VS Code / Copilot CLI)の設定は GitHub Copilot での使い方 に記載しています。
uvx はパッケージ指定に --from が必要なので、run エイリアスも同梱しています。
uvx --from git+https://github.com/denpadokei/BeatSaberModdingToolsMCP run最初に detect_game → inspect_project → set_game_directory → add_game_references →
generate_manifest → build_mod(package=true, deploy=true) の順に呼ぶのがおすすめです。
build_mod は失敗時も ok=false とコンパイラ診断を返します。
Visual Studio 本体は不要ですが、レガシー csproj のビルドには Build Tools の MSBuild、
SDK スタイルなら .NET SDK が必要です。bsmt doctor で検出状況を確認できます。
Development
git clone https://github.com/denpadokei/BeatSaberModdingToolsMCP
cd BeatSaberModdingToolsMCP
uv venv
# Non-editable install: editable .pth files break on Windows paths containing
# non-ASCII characters (Python reads .pth with the ANSI code page).
uv pip install --group dev .
uv run pytest
uv run ruff checkLayout:
src/bsmt_mcp/
beatsaber.py game detection, version parsing, reference inventory
project.py csproj inspection/editing, BeatSaberDir, reference copies
manifest.py manifest merge and schema validation
assembly.py AssemblyInfo/version comparison
buildtools.py MSBuild/dotnet, artifact, zip, deploy
gitinfo.py GetCommitInfo equivalent
templates.py project/item scaffolding
vstemplate.py Visual Studio .vstemplate expansion
template_data/ vendored UnityModdingTools.Templates.BeatSaber (projects + items)
ops.py shared operations for MCP + CLI
server.py MCP tool definitions
cli.py bsmt CLILicense
MIT. See LICENSE. BeatSaberModdingTools and BeatSaberModdingTools.Tasks are MIT/ Unlicense projects by Zingabopp; this is an independent reimplementation and is not affiliated with Beat Games, BSMG, or the original authors.
Available Tools
24 toolsadd_game_referencesB
Add game DLL references to a project with HintPath rooted at $(BeatSaberDir). Use names=['Main','IPA.Loader'] or presets=['core','bsipa','bsml','sira','harmony','newtonsoft','zenject','all-managed','all-libs','all-plugins','all'].
Inputs: project (required), force, names, dry_run, +3 more. Returns: object
add_item_templateB
Add an official item template to an existing project: harmony-patch, bsml-file, bsml-viewcontroller or monobehaviour. Creates the files and updates the .csproj (Compile/EmbeddedResource with DependentUpon).
Inputs: name (required), project (required), template (required), force, +6 more. Returns: object
build_environmentARead-only
Report the detected MSBuild, dotnet, git and Beat Saber installations plus setup recommendations.
Inputs: no named parameters. Returns: object
build_modB
Build a mod with dotnet (SDK-style) or MSBuild.exe (legacy). Returns diagnostics, target path and timings. Set package=true to also create the BeatMods zip and deploy=true to copy into the game.
Inputs: project (required), deploy, prefer, target, +7 more. Returns: object
compare_versionsARead-only
Compare a manifest SemVer version with an assembly version using BSMT rules (1.2.3 == 1.2.3.0, prerelease labels ignored).
Inputs: assembly_version (required), manifest_version (required). Returns: object
copy_game_referencesB
Copy game Managed/Libs/Plugins DLLs into a local Refs folder (default: the parent of the project folder) and point BeatSaberDir at it. Enables offline/CI builds without the game installed.
Inputs: project (required), force, game_dir, destination, +1 more. Returns: object
create_projectB
Scaffold a BSIPA plugin project. template='sdk' (default) is an SDK-style project that builds without Visual Studio; template='bare'/'core'/'disableable' instantiates the official Visual Studio templates from UnityModdingTools.Templates.BeatSaber (vendored, or a clone via templates_dir).
Inputs: path (required), name, force, author, +8 more. Returns: object
deploy_modADestructive
Copy the built mod into the game: Plugins normally, or IPA/Pending/Plugins while Beat Saber is running (BSIPA moves pending files on next launch).
Inputs: project (required), copy_pdb, game_dir, configuration. Returns: object
detect_gameARead-only
Detect Beat Saber installations (Steam, Oculus, BS Manager, BEATSABER_DIR) and their game versions. Pass game_dir to validate one specific install.
Inputs: game_dir, include_paths. Returns: object
game_process_statusARead-only
Check whether Beat Saber.exe is currently running (deploy writes to IPA/Pending when it is).
Inputs: no named parameters. Returns: object
generate_manifestA
Merge fields into manifest.json, validate against the BSIPA schema, write it, and (by default) make sure it is embedded as .manifest.json. Existing fields are preserved.
Inputs: project (required), icon, misc, name, +17 more. Returns: object
get_assembly_infoARead-only
Read the assembly version from Properties/AssemblyInfo.cs or SDK project properties and compare it with the manifest.
Inputs: project (required), configuration. Returns: object
get_git_infoBRead-only
Return commit hash, branch, modified state, origin URL and GitHub owner for the project repository.
Inputs: project (required), hash_length. Returns: object
inspect_projectARead-only
Inspect a .csproj: SDK style, target frameworks, references, BeatSaberDir resolution, manifest, assembly version, BSMT.Tasks presence and git state. Use this before changing anything.
Inputs: project (required), configuration. Returns: object
list_game_referencesBRead-only
List DLLs in the game's Managed/Libs/Plugins folders with versions and whether the project already references them. filter: all, managed, libs, plugins, unity, system, ipa, or a name substring.
Inputs: limit, filter, project, game_dir, +1 more. Returns: object
list_templatesBRead-only
List project and item templates: the built-in SDK style, the official BSIPA project templates (bare, core, disableable) and the official item templates (Harmony patch, BSML file/view, MonoBehaviour).
Inputs: templates_dir. Returns: object
package_modB
Create a BeatMods-compatible release zip from an existing build (Plugins/... at the archive root). Honors OutputCopy items; otherwise copies Plugins/.dll and .pdb.
Inputs: project (required), zip_dir, copy_pdb, extra_files, +3 more. Returns: object
read_manifestBRead-only
Read and validate a BSIPA manifest.json (project manifest by default).
Inputs: path, project. Returns: object
remove_game_referencesCDestructive
Remove game DLL references from a project (only_game_references avoids removing framework/NuGet references).
Inputs: names (required), project (required), dry_run, only_game_references. Returns: object
replace_in_fileC
Replace text in a file (literal or regular expression), mirroring BSMT's ReplaceInFile task.
Inputs: file (required), pattern (required), substitute (required), dry_run, +4 more. Returns: object
set_game_directoryB
Write BeatSaberDir and GameDirectory into the project, its .csproj.user, or Directory.Build.props. target=auto updates files that already define the property and otherwise creates a .csproj.user.
Inputs: project (required), target, game_dir, set_reference_path. Returns: object
set_github_outputA
Append NAME=VALUE to a GitHub Actions output file (GITHUB_OUTPUT or output_path).
Inputs: name (required), value (required), output_path. Returns: object
set_versionA
Set the manifest version and the AssemblyInfo/csproj version together. Use this for version bumps: BeatSaberModdingTools.Tasks fails Release builds when the manifest and assembly versions differ.
Inputs: project (required), version (required), dry_run, update_assembly, +1 more. Returns: object
validate_manifestBRead-only
Validate a manifest.json against the BSIPA metadata schema and BSIPA dependency rules.
Inputs: path, project, requires_bsipa. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 24 tools
The tools are mostly easy to distinguish by resource and action, but there is meaningful overlap in the environment/detection cluster (detect_game vs build_environment), the manifest cluster (read_manifest, validate_manifest, generate_manifest), and the version cluster (get_assembly_info, compare_versions, set_version). Descriptions do clarify the differences, so an agent can usually choose correctly, but the boundaries are not perfectly crisp.
The set is overwhelmingly consistent snake_case with an action-oriented verb_noun pattern such as list_game_references, add_game_references, set_version, and build_mod. game_process_status is the main exception, being noun-first rather than verb-first, but it remains clear and readable.
Twenty-four tools is on the high side, but the domain is broad: environment detection, project scaffolding, references, templates, manifests, versioning, build, packaging, deployment, and CI utilities. Most tools map to a distinct modding workflow task, so the count is slightly over typical but reasonable for this server’s scope.
The surface covers the full Beat Saber mod lifecycle: detection and environment setup, project creation and inspection, reference management, item templates, manifest validation and generation, version synchronization, build, package, deploy, and supporting CI/file utilities. There are no obvious lifecycle dead ends for the stated modding purpose.
Maintenance
Related MCP Connectors
Build and change Discord bots by describing them: slash commands, events, embeds, modals and data.
Deploy and manage Jade Hosting projects from AI clients. Jade account and OAuth required.
Build, test, publish, and run Kovca workflows from AI agents over remote MCP.
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI-powered tools for MonoGame development, including API documentation lookup, project management, and code scaffolding. It enables users to create, build, and diagnose projects through integrated dotnet and content pipeline automation.3MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude to interact with Unity projects programmatically, supporting project management, asset creation, and build automation.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search, browse, and manage mods across Nexus Mods, mod.io, Thunderstore, and Modrinth, as well as perform local diagnostics like detecting games and parsing crash logs.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to build Arma Reforger mods from natural language, including API research, code generation, project scaffolding, Workbench control, and in-editor testing.MIT