> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# atoti_ai.McpClientConfig

### *final class* atoti\_ai.McpClientConfig

The configuration of the MCP servers a session takes tools from.

Once connected, the session uses the tools of these servers as its own: they are offered to the LLM in chat, and reported on the session’s own MCP endpoint.
Each call to such a tool runs under the identity of the user who triggered it, so the other server’s own access restrictions stay in force.

<Note>
  This feature is not part of the community edition: it needs to be [unlocked](../guides/unlocking_all_features).
  Naming and authenticating the tools of other MCP servers requires a license including Atoti Intelligence Extension.
</Note>

```pycon theme={"languages":{"custom":["/engine/python-sdk/6.2/languages/pycon.tmLanguage.json"]}}
>>> import atoti as tt
>>> from atoti_ai import (
...     AiConfig,
...     HttpMcpServerConfig,
...     McpClientConfig,
...     StdioMcpServerConfig,
... )
>>> mcp_config = McpClientConfig(
...     servers={
...         "pnl-server": HttpMcpServerConfig(
...             url="https://pnl.example.com",
...             authentication="atoti-jwt",
...         ),
...         "filesystem": StdioMcpServerConfig(
...             command="npx",
...             args=["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
...         ),
...     },
... )
>>> with tt.experimental({"ai"}):
...     session_config = tt.SessionConfig(ai=AiConfig(mcp=mcp_config))
```

The tools of `pnl-server` are then named `pnl_server_<tool name>`, and the ones of `filesystem` `filesystem_<tool name>`.

#### servers *: [Mapping](https://docs.python.org/3/library/collections.abc.html#collections.abc.Mapping)\[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [McpServerConfig](./atoti_ai.mcp_server_config#atoti_ai.McpServerConfig)]* *= frozendict(\{})*

The servers to take tools from, keyed by the name this session gives them.

A server’s name prefixes each of its tools, so that the identically named tools of two servers never collide.
It is normalized first: a hyphen becomes an underscore, and anything outside letters, digits, and underscores is dropped.
Two names normalizing to the same prefix make the session refuse to start.
