Skip to content

tulsA compact Rust MCP toolbox

Six focused MCP servers in one binary — filesystem access, bounded HTTP fetches, persistent memory, local process execution, reusable skills, and provider-backed local subagents. Designed around explicit capabilities, least privilege, and bounded I/O.

tuls

Core design rules

tuls is intentionally small and opinionated. These rules shape every server.

Tools are grouped by stable capabilities

A client can grant filesystem.read without granting writes, or network.fetch without shell execution.

A denied tool is not merely hidden

Disabled routes are removed from discovery and rejected again at call time.

Subagents are default-deny for child MCP tools

Declaring a child MCP server does not automatically grant its tools to the model.

Unknown public parameters fail closed

MCP tool inputs reject unknown JSON fields; canonical agent definitions reject unknown fields.

Secrets stay outside agent files

Provider credentials are read from environment variables; literal provider secret fields are rejected.

Network and file operations are bounded

Large bodies, media, tool results, process output, and provider responses all have explicit limits.

MCP annotations are descriptive, not authorization

Child tool annotations never determine whether a subagent may call a tool.

The shell server is not presented as a sandbox

OS-level containment is a separate deployment responsibility.

MIT licensed · built for MCP 2026-07-28