The group-travel team of Nordlicht Reisen GmbH reaches its tools through three MCP servers (M-04, F-02): lieferanten (hotel and ferry availability) as Azure Functions, rechner (price rules) as ASP.NET Core on a Container App, buchungen from AI-103; all three behind API Management. The lesson builds the servers, the client and the gateway in front, and it asks: Where does what run, who may get in, and what has Learn not yet settled?
Prior knowledge. "AI track, lesson T8.1" builds an MCP server in .NET, "T8.2" the client and the agent with a foreign server as foreign code, "T8.3" permissions for tools and MCP over HTTP. "AI-103, lesson 2.4" shows the MCP tool of a Foundry agent with approval. None of that is repeated. New: hosting, the gateway, the client with a header per run.
New in this lesson. The Function App is called func-lieferanten, the Container App app-rechner, the API Management instance apim-nordlicht (per environment in rg-ai500-<environment>, M-09). The servers sit behind the paths /lieferanten, /rechner and /buchungen. lieferanten offers verfuegbarkeit_lesen (read-only, A0) and vorreservieren (changing, A2, lesson 2.6); rechner offers preis_berechnen (read-only). Our code uses the servers with an MCP client; it sends the header x-mandant-id with the mandantId of the run (M-07, M-11).
The requirement
All numbers are assumptions of the task.
| No. | Requirement | Type | Measure | Weight | Source |
|---|---|---|---|---|---|
| 2.7-01 | Every call reaches the servers only through API Management. | R | 0 calls to the address of the app | Must | F-02, F-04 |
| 2.7-02 | Every request carries the mandantId of the run; without it the server answers with an error. |
R | 0 answers without an identifier | Must | M-07 |
| 2.7-03 | An agent sees only the tools of its role. | R | fixed list per role | Must | F-04 |
| 2.7-04 | Read-only tools are marked as read-only; that does not replace approval. | R | A2 only with approval | Must | M-05 |
| 2.7-05 | A call stays under the time limit of the service. | Q | under 100 seconds | Should | Learn |
| 2.7-06 | Servers run locally without an account and are testable. | Q | dotnet run and client |
Should | F-06 |