MCP · Self-hosted

Can I self-host the NIS2 walkthrough's MCP server?

Yes. Every self-hosted instance offers the same MCP server at /api/mcp and is its own sign-in service, with no third party. You set NEXT_PUBLIC_APP_URL to your address. Assistants on your people's computers also reach an instance inside the company network; assistants in a vendor's cloud need an address reachable from the internet over https.

Simon OrzelSimon Orzel·

What do you have to set for the MCP server?

There is no separate setting for the MCP server, because it is part of the application. Every instance, nisd2.eu and each self-hosted one alike, offers it at /api/mcp, with the same five tools and the same checks on every call.

For the browser sign-in, the instance is its own sign-in service under OAuth 2.1. There is no third-party service and no identity you apply for with a vendor: an assistant registers itself with your instance.

The instance reads all these addresses from NEXT_PUBLIC_APP_URL: the sign-in service's, the endpoint's, and the origin a browser may call it from. Set the variable to the address your people type.

If it is missing, the instance gives https://www.nisd2.eu as its address, and an assistant's sign-in goes there instead of to your instance.

NEXT_PUBLIC_APP_URL=https://isms.example.com

Who can connect an assistant on your own instance?

An assistant works in the NIS 2 walkthrough, and on a self-hosted instance new accounts do not get the walkthrough. It is unlocked for the accounts whose address is in PLATFORM_ADMIN_EMAILS. So these are the people who can connect an assistant; everyone else sees the way to the walkthrough in Settings instead of a key.

Anyone in PLATFORM_ADMIN_EMAILS also gets the /platform-admin area, with which the operator manages the whole instance. List only people who may have that anyway. Their assistant does not reach those functions, because they refuse every call made with a key.

Beyond that, the same applies as on nisd2.eu: a company admin turns on “Allow AI assistants for this company” in Settings, and the switch is off until then. There is no switch for the whole instance, such as an environment variable.

Which assistants reach an instance inside the company network?

Clients that run on a person's computer connect from there. Claude Code, VS Code, Cursor and Gemini CLI therefore also reach an instance that sits only inside the company network.

We have tested Claude Code, with the browser sign-in and with a key. Set up the others from their makers' documentation.

Claude on the web and desktop, ChatGPT and Copilot Studio connect from their vendor's cloud. Anthropic says that Claude calls remote MCP servers from its cloud, not from the person's device. These clients need an instance reachable from the internet over https; we have not tested them against an instance yet.

The MCP specification requires https for all of the sign-in service's addresses. So run the instance behind TLS inside the company network too, as the documentation describes under domains and TLS.

claude mcp add --transport http nisd2 https://isms.example.com/api/mcp

Does it work with no cloud at all?

With a client on your computers and a language model on your own hardware, nothing leaves your network: instance, assistant and model are all with you. This is the route for companies that want to give no data from the walkthrough to an AI vendor.

The client has to speak MCP over HTTP and be able to use a local model. We have not tested such a setup against the walkthrough yet.

Check a local model's entries like any other assistant's: every screen it wrote shows the name its client gives and the day.

What happens when you change AUTH_SECRET?

The instance signs keys and sign-ins with a value it derives from AUTH_SECRET. It does not store the keys themselves.

If you change AUTH_SECRET, every key, every sign-in and every assistant registration ends, and each assistant is connected again. That is also the route if you fear the secret has become known.

How the walkthrough does it

On your own instance, the MCP server becomes part of your IT in two items.

2.2 Write down what your company has: on “Software everyone uses” and “Technology and rooms” you put the instance, the server under it and your AI assistant on the list.

On “Which software exactly, and from whom?” you enter who runs the instance and who provides the assistant. A provider your supplier list does not have yet is added to 5.1 along the way.

4.4 Record your backups: on “Your backup systems” you put the instance's backup on the list and record how often it runs and when a restore from it last worked. Database and files belong in the same backup.

In Settings an admin turns assistants on for the company. After that, whoever is in PLATFORM_ADMIN_EMAILS can connect one.

Common questions

How can I tell my instance has the MCP server?

It answers at /.well-known/oauth-authorization-server, where it publishes the description of its sign-in service. Then check that NEXT_PUBLIC_APP_URL names your instance's address, and turn assistants on in the company. You do not have to install anything for it.

How do ChatGPT or Claude reach an instance inside the company network?

Through an address reachable from the internet, or through the vendor's tunnel. Anthropic has MCP tunnels as a research preview for organisations on Claude Enterprise, by request; OpenAI describes a Secure MCP Tunnel that connects a private MCP server to ChatGPT. We have tested neither. According to OpenAI's documentation, ChatGPT cannot present custom keys, so the browser sign-in is the way there.

Does it work with localhost?

For trying it out on your own computer, yes, with a local client such as Claude Code. That is how we tested the server. For your people, give the instance a fixed address with https, because the MCP specification requires https for the sign-in.

Does nisd2.eu learn anything from my instance?

Not through the MCP server: it does not call nisd2.eu. When NEXT_PUBLIC_APP_URL names your instance's address, the sign-in runs there too, and the data goes from there to the assistant your people connect.

Is the MCP server open source?

Yes. The code is under the AGPL at github.com/NISD2/open-isms, the MCP server in the lib/mcp folder. The step-by-step setup is in the documentation under docs/self-hosting/mcp.

Read next

Sources

  • Model Context Protocol, specification 2026-07-28, Authorization and Security Considerations, modelcontextprotocol.io
  • Anthropic, Custom connectors and MCP tunnels, support.claude.com and claude.com/docs
  • OpenAI, Plugins: Authentication and Connect to ChatGPT, developers.openai.com
  • open-isms, lib/mcp/config.ts, lib/utils.ts, lib/billing/access.ts and lib/auth/platform-admin.ts, github.com/NISD2/open-isms
  • nisd2.eu documentation, docs/self-hosting/mcp, configuration and domains-and-tls

In practice

Where this comes up in the walkthrough

The walkthrough turns this into steps you fill in, with the law explained beside each one. Open a step to see its screen, filled in for a made-up company.

  1. Risk Management

    Write down what your company has

    A list of the processes, software and devices you work with.

  2. Business Continuity

    Record your backups

    How often you back up, and when a restore last worked.

What the walkthrough costs

NIS2 walkthrough
Guided implementation at nisd2.eu.

€4,800 net a year, plus VAT

30 days money back

By invoice, due in 30 days. Cancel within the first 30 days, before the first export or sign-off: invoice cancelled or money back.

Guided NIS 2 implementation, step by step

A history of changes and sign-offs to show your regulator

Deadlines and reminders for each requirement

Security questionnaire for your suppliers

Export to PDF or CSV at any time

Pricing and terms

Been asked to handle NIS2?

In the end you have everything in one document: what is done, what is still open, and your management's approval with name and date. The app writes the texts.

Try 30 days, money back
Simon OrzelCory Hisey

Book a call

Free training for your Managing DirectorPricing and terms
The NIS2 walkthrough: your path step by step, the first items done