Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add jenkinsm13/metashape-mcp --skill mcp-tool-scaffoldinggit clone --depth 1 https://github.com/jenkinsm13/metashape-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jenkinsm13/metashape-mcp/mcp-tool-scaffolding)<a href="https://agentmods.dev/skills/jenkinsm13/metashape-mcp/mcp-tool-scaffolding"><img src="https://agentmods.dev/badge/skills/jenkinsm13/metashape-mcp/mcp-tool-scaffolding/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/jenkinsm13/metashape-mcp/mcp-tool-scaffolding"><img src="https://agentmods.dev/badge/skills/jenkinsm13/metashape-mcp/mcp-tool-scaffolding.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00044 | $0.01128 |
| Opus 5 | $0.00022 | $0.00564 |
| Sonnet 5 | $0.00009 | $0.00226 |
| Haiku 4.5 | $0.00004 | $0.00113 |
Grade A, and why
mcp-tool-scaffolding scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 149 lines — stays where its author put it; the contents beside it link to each section on GitHub.
MCP Tool Scaffolding
Generate a new Metashape MCP tool module or add a tool to an existing module, following all project conventions.
Module Template
Every tool module follows this exact pattern:
"""[Module description] tools."""
import Metashape
from metashape_mcp.utils.bridge import auto_save, get_chunk, get_document
from metashape_mcp.utils.enums import resolve_enum
from metashape_mcp.utils.progress import make_tracking_callback
def register(mcp) -> None:
"""Register [module] tools."""
@mcp.tool()
def tool_name(
param1: str = "default",
param2: int = 1,
) -> dict:
"""One-line description of what this tool does.
Longer explanation if needed. Mention prerequisites
(e.g., "Run match_photos first.").
Args:
param1: Description of param1.
param2: Description of param2.
Returns:
Description of return dict fields.
"""
chunk = get_chunk()
# Or: doc = get_document()
# Prerequisite checks (import from bridge as needed):
# require_tie_points(chunk)
# require_model(chunk)
# require_depth_maps(chunk)
# require_point_cloud(chunk)
# Resolve enums for Metashape API parameters:
# resolved = resolve_enum("category", param1)
# Progress callback for long operations:
cb = make_tracking_callback("Operation name")
# Call Metashape API:
chunk.someMethod(
param1=param1,
param2=param2,
progress=cb,
)
# Always auto-save after state-mutating operations:
auto_save()
return {
"status": "operation_complete",
"key_metric": some_value,
}
Conventions Checklist
Before writing a tool, verify ALL of these:
- Synchronous only — NO
async def. All tools are plaindef. Metashape API is not thread-safe. - No
Contextparameter — Never import or usefrom mcp.server.fastmcp import Context. - Use
get_chunk()/get_document()— Never accessMetashape.app.documentdirectly. - Use
resolve_enum()— For all Metashape enum parameters. Checkutils/enums.pyfor existing mappings, add new ones there. - Use
make_tracking_callback()— For any operation that takes aprogressparameter. - Call
auto_save()— After every state-mutating operation. Import fromutils.bridge. - Use prerequisite helpers —
require_tie_points(),require_model(),require_depth_maps(),require_point_cloud()before operations that need them. - Return dicts — All tools return
dict(orlist[dict]). Include actionable metrics. - Hardcode sensible defaults — Match Metashape's best-practice defaults, not necessarily API defaults (e.g.,
keep_keypoints=Trueoverrides Metashape'sFalse). - Module size — Keep each module under 200 lines. Split into new module if needed.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 149 lines · 44 tokens per session scan A 5fa95bb91fc9
mcp-tool-scaffolding is a skill published in the GitHub repository jenkinsm13/metashape-mcp (34 stars, last pushed 4mo ago), licensed MIT. It adds 44 tokens to every session and 1,128 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
3dgs-mcp-renderer
MCP protocol integration with 3DGS rendering pipeline: Agent-controlled Three.js/WebGPU rendering, voice-driven scene reconstruction, real-time parameter manipulation, light tracing backend. Use when: MCP rendering, agent-controlled 3DGS, voice-driven reconstruction, real-time 3DGS editing, Three.js 3DGS, WebGPU…
3dgs-training-debugger
Diagnose and fix 3DGS training-time failures: NaN losses, OOM crashes, divergent optimization, floater artifacts, densification failures, hyperparameter sensitivity. Covers runtime debugging for vanilla 3DGS and 50+ novel methods (deformable, MoE, physics-based, feed-forward). Detects 60 runtime failure patterns. Use…
cad-mesh-3dgs
Bridge CAD, Mesh, and 3DGS representations via the SLAT unified encode-decode framework. Covers mesh↔3DGS conversion, surface extraction, CAD reverse engineering, B-rep/parametric reconstruction, NL-driven assembly, TetSphere physics bridge, PBR material generation. Analyzes 40+ methods. Use when: converting mesh…
3dgs-compression-deploy
3DGS compression-to-deployment pipeline: quantization (scalar/VQ/mixed-precision), pruning (coreset/adaptive/variational/merge/Bayesian), progressive streaming & LoD, Web/WebGPU/mobile deployment, hardware acceleration (Tensor Core/GEMM/FPGA/ASIC), training-free semantic compression. Covers 53+ methods across 6…
3dgs-experiment-planner
Design rigorous experiments for 3DGS research papers. Recommends datasets, baselines, metrics, ablation matrices. Targets CVPR/ICCV/ECCV/SIGGRAPH/TVCG. Use when: designing experiments for a 3DGS paper, selecting datasets/baselines/metrics, planning ablation studies, addressing reviewer concerns on experiments…
3dgs-spatial-agent
3DGS/CAD/Mesh domain-specific spatial intelligence agent: scene-level reasoning, CAD-in-the-loop parametric extraction, multi-modal 3D interaction, geometry-opacity decoupling, reflective material handling. Use when: 3D scene understanding, object part reasoning, CAD extraction from 3DGS, parametric model from…