Atoti Intelligence SDK
This is part of the Atoti Intelligence SDK offer.- It acts as a bridge between an Atoti data model and AI tools
- It enables dynamic, context-aware interactions
What does the MCP Server provide?
The MCP Server provides the following capabilities:- Query Atoti cubes, hierarchies, and measures through an LLM client
- Call custom tools that encapsulate business-specific logic
- Connect to any MCP-compatible LLM client, such as Claude Desktop
- Use the tools of other MCP Servers as Atoti’s own
Why use the Atoti MCP Server?
- Use Atoti’s analytical capabilities from external AI tools without modifying the Atoti application
- No vendor lock-in: works with any MCP-compatible LLM client
- Standardized protocol eliminates the need for custom integration code
For more information on Model Context Protocol, see the Model Context Protocol documentation.
Can Atoti connect to other MCP Servers?
Atoti Server is not only an MCP Server: it can also be an MCP client. It connects out to other MCP Servers. This is typically the other Atoti Servers of the same deployment.- Each server exposes its own cube.
- Each cube uses their tools as its own, in chat and on its own MCP endpoint.
- Every call runs under the identity of the user who triggered it. This means that the other cube’s role-based restrictions stay in force.
What are the best practices for MCP configuration?
When an Atoti deployment runs several Atoti Servers, each server exposes its own cubes. Two rules cover most deployments:- Serve chat from one application
- Connect every other server to that application over MCP
- Holds the only LLM configuration for the deployment.
- Answers every cube in one conversation.
How to configure chat across a deployment
Every application serves chat by default. For now, configure a deployment so that only one of them does:- Pick the application that users send their prompts to, called the main application below.
- Turn chat off on every other application of the deployment.
- Declare, on the main application, one MCP connection per other application.
atoti.ai.chat.enabled, available from Atoti Server 6.2.1.
Add the following to application.yaml:
AiConfig.chat_enabled
to False when starting the session:
- The
/chatendpoint is not registered. - The
/versionsendpoint stops advertising theactiveviam/ai/chatnamespace. - Auto-Explain and the MCP Server are unaffected
- The cube tools stay available to the main application.
This is the recommendation for Atoti Server 6.2.1. A later release may serve chat from several
applications of one deployment. An application serving no chat still needs an LLM to produce the
optional Auto-Explain AI summary.
How to connect to an external MCP Server
The practices below apply to every outbound connection, toward another Atoti Server as well as toward a third-party MCP Server. Connecting out requires a license including the Atoti Intelligence Extension tier, which itself requires Essentials.- Connect to every server directly. Tools do not chain from one connection to the next: a server asked by another aggregating server answers with its own tools alone. Connecting to a peer never brings in the servers that peer is itself connected to.
- Use Streamable HTTP. Declare every connection under
spring.ai.mcp.client.streamable-http.connections. It is the only transport supported for an outbound connection. - Match the authentication mode to the remote server. Use
atoti-jwtfor another application of the same deployment, sharing the sameatoti.jwt.keysigning key. Usepass-throughfor a server validating tokens against an external identity provider. Leave the defaultnoneonly for a genuinely unauthenticated server, such as a local development server. - Name the connection after the server. The name prefixes every tool taken from it, and the model reads it. Keep it to 53 characters or fewer, and keep names distinct after normalization:
pnl-serverandpnl_servercollide, and the application refuses to start. - Vet a server run as a local process. Such a server runs on the machine hosting the application, with that process’s rights. Declare only commands the deployment controls.
- Plan no failover. An unreachable server costs only its own tools, and the failure is not cached. Every other server keeps answering, and the tools reappear on the next answered request.
getConnectedServers chat tool reports the address of every connected server, so those addresses
reach the model provider. Atoti registers the tool for chat only, never on the MCP endpoint. An
application that must keep its internal addresses out of the prompt can exclude the
connectedServersTools bean; see
Connect to other MCP Servers in Java.
For what a connection provides once declared, see
How connecting to other MCP Servers works. To declare one,
see Connect to other MCP Servers in Java or
in Python.