manifest.json Reference
The manifest.json at the repo root describes MCP for Unity as a package — independent of Unity's UPM package.json (which lives at MCPForUnity/package.json). It's used by MCP marketplaces and aggregators to surface the project's metadata, server invocation, and tool catalog.
If you're adding a new MCP tool, update the tool registry and let CI's drift check fail any stale entry — the generator keeps the docs in sync. The tools block in manifest.json is edited by hand, but Server/tests/test_manifest_tools.py fails unless it lists exactly the registered tools (see tools below).
Top-level fields
| Field | Type | Description |
|---|---|---|
manifest_version | string | Schema version for this manifest (currently "0.3") |
name | string | Display name shown by aggregators |
version | string | Semver of the current release |
description | string | One-line product description |
author.name | string | Maintainer's display name |
author.url | string | Maintainer's website |
repository.type | string | "git" |
repository.url | string | Canonical repo URL |
homepage | string | Project homepage |
documentation | string | Docs landing URL |
support | string | Where to file issues |
icon | string | Path to a square icon, relative to the manifest |
server
Tells aggregators how to launch the Python server.
"server": {
"type": "python",
"entry_point": "Server/src/main.py",
"mcp_config": {
"command": "uvx",
"args": ["--from", "mcpforunityserver", "mcp-for-unity"],
"env": {}
}
}
type— runtime family. Currently always"python".entry_point— file an aggregator would point a Python interpreter at if it weren't usinguvx.mcp_config.command— recommended launch command.uvxkeeps the dependency tree managed without a global install.mcp_config.args— invocation arguments. Default transport ishttp; pass--transport stdioto switch.mcp_config.env— environment variables to set before launching (telemetry opt-outs, log levels, etc.).
tools
A flat array of { name, description } entries listing every MCP tool the server exposes. Aggregators use it for search and category surfaces without having to introspect the live registry.
The entries are written by hand, but Server/tests/test_manifest_tools.py keeps the list equal to the Python tool registry: it fails when a registered tool is missing, when an entry names a tool that is not registered, or when a name appears twice. It compares names only, not descriptions. See the Tool reference for the generated catalog with full parameter docs.
Notes
manifest.jsonis NOT the Unity UPM manifest. That'sMCPForUnity/package.json(name:com.coplaydev.unity-mcp).- The Python PyPI package metadata lives in
Server/pyproject.toml(name:mcpforunityserver). - All three —
manifest.json,package.json,pyproject.toml— are independent surfaces with overlapping but non-identical fields. A rename touches all three. - An MCPB bundle is produced from
manifest.jsonviatools/generate_mcpb.py.
Where it ships
The current manifest.json is at the repo root: manifest.json.