neuralmind.uk / NeuralMind v4.6.1 — the MCP server applies your security settings Edit this page on GitHub ↗

NeuralMind v4.6.1 — the MCP server applies your security settings

Type: Patch release Theme: MCP access control

security.roles and security.rate_limit in neuralmind-backend.yaml now apply to the MCP server. Through v4.6.0 the server built its security manager without reading that file, so every call got the default role policy and a limit of 60 calls a minute, whatever the YAML said. A caller could declare admin and reach every tool, even in a project whose policy left admin out, as the Security Guide recommends.

If your project has no security: block in neuralmind-backend.yaml, nothing changes: no NeuralMind command writes one, and the defaults are the same as in v4.6.0.

What changed

Example, from the Security Guide:

# neuralmind-backend.yaml, in the project root
security:
  roles:
    builder: [neuralmind_wakeup, neuralmind_query, neuralmind_search, neuralmind_skeleton, neuralmind_build]
    reader: [neuralmind_wakeup, neuralmind_query, neuralmind_search, neuralmind_skeleton]
  rate_limit:
    max_calls: 60
    window_seconds: 60

What the agent actually sees post-install

Only in a project whose neuralmind-backend.yaml has a security: block. Without one, every agent sees exactly what it saw in v4.6.0.

Agent Before After
Claude Code (MCP + hooks) Every MCP tool the default policy grants, whatever security.roles said; 60 calls a minute Only the tools security.roles grants the role it calls with (builder when it names none); a tool outside that returns security_denied with reason: "rbac", and every tool returns reason: "config" while the security: section has a value of the wrong type. Hooks don’t go through the MCP server and are unaffected
Cursor / Cline / Continue (MCP) Same as Claude Code Same as Claude Code
Generic MCP client role: "admin" reached every tool role: "admin" reaches only what the policy grants admin; nothing, if the policy doesn’t list it

Upgrade notes