Atoti Intelligence SDK
This is part of the Atoti Intelligence SDK offer.getConnectedServers, and resilience), see
How connecting to other MCP Servers works.
Prerequisites
- An Atoti Java project with the Atoti MCP Server already set up; see How to set up the Atoti MCP Server
- A license including the Atoti Intelligence Extension tier, which itself requires Essentials
How to declare a connection
Declare a connection underspring.ai.mcp.client.streamable-http.connections.<name>. Everything
about it goes on that one node. url and endpoint are Spring AI’s own properties, documented in
the Spring AI MCP Client Boot Starter reference.
authentication is Atoti’s own property.
Below, pnl-server is a peer Atoti Server in the same deployment, authenticating with a token minted
for the calling user. sandbox is an unsecured local server used during development: it names no
authentication mode, so it sends no credential.
authentication value sends and when to choose it.
A connection accepts
url, authentication, and endpoint, and nothing else. Any other key is flagged by the IDE as it is typed, and refused at startup with the connection and the offending key named. A misspelled authentication would otherwise bind to nothing, leaving the connection silently on none. On the wire, that looks exactly like a remote server refusing a correct credential.authentication belongs to the HTTP transports only. A connection declared under spring.ai.mcp.client.stdio.connections runs a local process and identifies itself by being that process. Writing authentication on one is refused at startup rather than ignored.How to authenticate with atoti-jwt
An atoti-jwt connection mints a token accepted by every server sharing the deployment’s signing
key. Both servers must be configured with the same atoti.jwt.key. Against a session started from
the Atoti Python SDK, the same key pair must be passed to that session; see
Connect to other MCP Servers in Python.
Which other properties and beans matter?
Two properties are deliberately not needed. Spring AI’s own
spring.ai.mcp.server.expose-mcp-client-tools is a different mechanism: it publishes one fixed tool list assembled while the application starts, before any user has authenticated. It would therefore need a service account to enumerate the peers, and would then show every client that one account’s list. Leave it unset.Remote tools are reported on this server’s MCP endpoint over Streamable HTTP, the default. An application that switches its endpoint to the deprecated SSE transport with spring.ai.mcp.server.protocol=SSE keeps a working endpoint and its own tools, but not the remote ones.A chat run that carries no address reports its entry with no url rather than with an invented one. This happens only when the chatExecutor bean is replaced with one that does not propagate the address.Related reading
- How connecting to other MCP Servers works and Connect to other MCP Servers in Python
- Migration notes for the Spring AI MCP client defaults this capability changes
- Spring AI MCP Client Boot Starter reference for the client properties Atoti builds on
- How to set up the Atoti MCP Server and How to add custom tools