MCP Servers as Units of Entitlement
In the Mindset AI platform, you can’t entitle an agent to individual tools. You entitle an agent (or agent session) to an MCP server, and that agent then has access to all tools on that server. This is analogous to how knowledge contexts work: you entitle an agent to a context, not to individual pieces of content within that context. This architectural constraint should drive how you organize your MCP servers.Organize by Entitlement, Not by API
The primary recommendation is to split your MCP servers based on who should have access to the tools. The question to ask for every tool you build: Which users should be able to use this? Group tools together when they share the same answer.Example: admin vs. regular user tools
Do this instead:User Profile MCP Server
Entitled to all users.
get_my_profile, update_my_settings, get_my_notificationsUser Admin MCP Server
Entitled to admins only.
delete_user, create_user, modify_user_permissions, list_all_usersWhy Visibility Matters — Not Just Authorization
You might think: “Our tools already check permissions using thex-user-id header. Why does visibility matter?”
Two reasons.
User experience
Users don’t directly see a list of available tools, but they can ask the agent — and the agent will tell them. If the agent has access to adelete_user tool, it will mention this capability when asked “What can you do?”
The user might then ask the agent to delete someone. The agent will attempt it, fail, and return a permission error. That’s a poor experience. Users shouldn’t be told about capabilities they can’t actually use.
LLMs can’t keep secrets
You can’t rely on system prompts or instructions to hide tools from users.Defense in Depth: The Complete Authorization Model
Best practice is a layered approach.Layer 1: MCP Server Entitlement
Visibility controlControls which tools a user can see. Configured when creating agent sessions. Prevents poor UX from exposing unavailable tools.
Layer 2: Tool-Level Authorization
Access controlControls which tools a user can execute. Implemented in each tool using the
x-user-id header. The final, authoritative security check.Layer 1 is for UX. Layer 2 is for security. Even with perfect MCP server entitlement management, you must still implement authorization checks in your tools. The tool is the final authority on whether an action is permitted.For mission-critical operations — data deletion, permission modifications — tool-level authorization is non-negotiable.
Tool Naming: Maintain Semantic Distance
When an agent has access to multiple MCP servers, all tools from all servers appear in the agent’s tool inventory. This creates a potential problem: tool name collisions and semantic confusion.The problem
If two MCP servers both have a tool calledadd_user — one in an HR System MCP (described as “Add user to HR system”) and another in a Training System MCP (described as “Add user to course”) — the LLM uses both the tool name and description to select the right tool. With two identically-named tools, this breaks down.
Users occasionally give explicit instructions like “use the add user tool to enrol them in the course.” With two identically-named tools, the LLM can’t reliably determine which one the user means. This leads to incorrect tool selection, unpredictable behaviour, and user frustration.
The solution
Give tools names that are descriptive and unambiguous.| Instead of… | Use… |
|---|---|
add_user (HR System MCP) | create_employee_record |
add_user (Training System MCP) | enroll_user_in_course |
- Be specific:
get_user_enrolled_coursesnotget_courses - Include the domain:
create_employee_recordnotcreate_record - Describe the action clearly:
enroll_user_in_coursenotadd_user - Avoid generic verbs alone:
search_training_catalognotsearch
Tool descriptions matter just as much
The tool description is what the LLM primarily uses to decide when to call your tool. A poor description leads to tools being called at the wrong time — or not at all. Write descriptions that explain what the tool does, when it should be used, and who it’s for.Help the LLM get it right
Beyond the basic description, include parameter guidance directly in the tool description — especially for tools with multiple parameters:- Date formats: specify expected formats (e.g. “date must be YYYY-MM-DD”)
- Categorical values: if a parameter accepts a small set of values, list them (e.g. “status must be one of: pending, approved, rejected”)
Write error messages that guide, not just fail
When a tool is called with invalid parameters, the error message should help the LLM succeed on the next attempt.Per-API vs. Per-Use-Case Organization
Per-API organization
Per-API organization
Example: “Learning API MCP”, “Competency API MCP”, “Scheduling API MCP”Pros:
- Maps cleanly to existing backend architecture
- Easy to maintain by API team ownership
- Clear boundaries
- Doesn’t align with user entitlement boundaries
- May expose tools users don’t need
- Cross-cutting use cases require multiple MCP servers
Per-use-case organization
Per-use-case organization
Example: “Preceptor Selection MCP” that bundles tools from Learning, Competency, and Scheduling APIs.Pros:
- Aligned with user workflows
- Tools grouped by who needs them
- Cleaner entitlement model
- May require coordination across API teams
- Potential for tool duplication if not careful
- Student Learning MCP:
get_my_courses,submit_assignment,view_my_grades - Instructor Learning MCP:
grade_assignment,view_class_roster,create_announcement
Decision Framework
Use this process when designing your MCP server architecture.Identify user roles
Who are the distinct user types? (e.g. students, instructors, admins, coordinators)
Summary
| Principle | Guidance |
|---|---|
| Unit of entitlement | You entitle agents to MCP servers, not individual tools |
| Organize by access | Group tools by which users should see them |
| Defense in depth | MCP entitlement for UX, tool-level auth for security |
| LLMs can’t keep secrets | Never rely on prompts to hide tools |
| Semantic distance | Give tools unique, descriptive names across all MCP servers |
| Final authority | The tool implementation is the authoritative security check |