Summary
A controlled opening, rather than a shell.
Handing an assistant a general shell is one decision; handing it five named commands, each restricted to a directory with a timeout and a rate limit, is a very different one. This is the second, which makes tools.json a permission list and not a convenience file.
What it is
A TypeScript MCP server that turns entries in a tools.json file into MCP tools — you declare the command, its parameters and its limits, without writing code.
What you get
- Tools defined in JSON: the command, its parameters, their types and patterns, required or optional
- Execution restricted to directories you name, so a tool cannot wander outside its scope
- Command allowlisting and parameter sanitization before anything runs
- Rate limiting per tool, and a configurable timeout on each
- Output size limits and structured results, rather than an unbounded dump
- A starting tools.json with working examples: list_files, grep_search, word_count, git_status and find_files
Requirements
Npm install and npm run build, then start it with an environment variable pointing at your tools.json. No account or key — commands run as you, inside the directories you allow.
