Connect ChatGPT or Claude
ChatGPT and Claude can both connect to the same Selfmade Ninja Labs MCP service. You add it once in the AI app, sign in with your Labs account, and from then on the assistant can work with the real state of your labs — not with whatever you paste into the chat.
This page covers the web and desktop chat apps. For editor and terminal clients (Claude Code, Codex, Gemini CLI, Cursor, VS Code…), see Connect an AI assistant.
Before you connect
| You need | Why |
|---|---|
| A Selfmade Ninja Labs account | The assistant acts as this account and sees only what it can |
| ChatGPT or Claude on a surface that supports custom remote MCP | Not every plan or app surface offers it — see each section below |
| Permission from your workspace, if you use a company or school workspace | Administrators can block custom apps and connectors |
The address to use in both apps:
https://labs.selfmade.ninja/mcp
MCP is an open standard, not a ChatGPT or Claude feature. There is one Labs endpoint and both apps connect to it with their own sign-in flow. You do not need anything separate for each.
Why connect a chat app
Without MCP, an assistant can only explain how Labs works in general. With it, the assistant can:
| Observe | List your labs, domains, devices and services; read files, processes and logs |
| Diagnose | Compare live evidence and explain a failure instead of guessing from symptoms |
| Build | Write and run code, scripts, security tooling or agents inside a real lab |
| Operate | Deploy, redeploy and reconfigure — when you ask it to and your plan allows it |
What it can actually do depends on your plan — see What you can ask.
Connect ChatGPT
Custom MCP apps are available in the ChatGPT web app. OpenAI treats full MCP support (including actions that change things) as a beta, and availability depends on your plan and workspace. Labels in ChatGPT change from time to time; look for the closest match.
1. Turn on Developer mode
In ChatGPT: Settings → Security and login → Developer mode. On some accounts it is under Settings → Apps → Advanced settings, or controlled by your workspace administrator.
If you cannot find Developer mode, the Labs endpoint is not the problem — your plan, role or workspace policy decides whether the feature is available.
2. Create the app
- Open the Apps area of ChatGPT and choose to create or add a custom app / MCP connection.
- Name:
Selfmade Ninja Labs. - MCP server URL:
https://labs.selfmade.ninja/mcp - Authentication: choose OAuth. Never put your Labs password in a prompt or a field that asks for a token.
- If ChatGPT offers Scan tools (or similar), run it. A browser window opens for the Labs sign-in — sign in and approve the client.
- Read the trust and permission warnings, then Create.
3. Check it works
Start a new conversation, enable Selfmade Ninja Labs from the apps/tools menu, and ask something read-only:
List my Selfmade Ninja Labs and tell me which ones are currently deployed.
Then:
Show me the connection information for my Essentials lab. Do not change anything.
If the answers reflect your real labs, the connection works.
Connect Claude
Claude supports remote MCP servers as custom connectors on claude.ai, Claude Desktop and Cowork, on Free, Pro, Max, Team and Enterprise plans. Free accounts can add one custom connector.
Personal accounts (Free, Pro, Max)
- Open Claude and go to Customize → Connectors.
- Click + next to Connectors, then Add custom connector.
- Name:
Selfmade Ninja Labs. - URL:
https://labs.selfmade.ninja/mcp - Click Add, then complete the sign-in: a browser window asks you to sign in to Labs and approve Claude.
Team and Enterprise workspaces
An Owner or Primary Owner adds the connector for everyone first:
- Organization settings → Connectors → Add.
- Choose Custom → Web.
- Enter
https://labs.selfmade.ninja/mcpand click Add.
Each member then goes to Customize → Connectors, finds Selfmade Ninja Labs, and clicks Connect to sign in with their own Labs account.
Use it in a conversation
- Click + at the lower left of the message box.
- Open Connectors and switch on Selfmade Ninja Labs.
- Start read-only:
List my deployed Selfmade Ninja Labs and tell me which ones are currently available.
Inspect my Essentials lab and explain what is running on it. Do not change anything.
Claude's remote connectors reach the MCP server from Anthropic's servers, not from your computer. That is why the public Labs address above is used; a server reachable only on your laptop, LAN or VPN would not work as a connector.
Write good requests
You do not need to name tools. Ask for an outcome and let the assistant pick the tools.
| Instead of | Ask |
|---|---|
| "Call list_labs." | "Which of my machine labs are deployed right now?" |
| "Fix my lab." | "Inspect my Essentials lab, find why the site is down, and propose a fix without changing anything." |
| "Deploy it." | "Confirm which lab and settings you will use, tell me the impact, then deploy when I say yes." |
| "Delete the old domain." | "Find the domain and the lab using it. Do not delete anything until I confirm." |
A strong request has three parts:
- The goal — what you want to achieve.
- The scope — which lab, project, domain or service.
- The boundary — only inspect, propose, or actually change.
Inspect my Essentials lab. Find the project serving on port 80, explain its structure, and do not modify any files.
A safe way to make changes: inspect → explain → propose → execute → verify
For anything that matters, move in stages:
| Step | Ask |
|---|---|
| Inspect | "Inspect my lab and identify the current problem. Do not make changes." |
| Explain | "Explain the likely cause, the evidence you found, and what would need to change." |
| Propose | "Give me the safest fix, the files or settings that would change, and any side effects." |
| Execute | "Apply the fix. First re-check it is the same lab and nothing unrelated will be overwritten." |
| Verify | "Verify the change. Tell me whether the original problem is resolved. Make no further changes." |
This keeps observation, diagnosis, your approval, the change and the check clearly separate — and each step is recorded in your history.
Prompts to start with
| Area | Prompt |
|---|---|
| Lab overview | "List my labs and summarise their current status." |
| Troubleshooting | "My lab is not responding. Check its status, logs, listening ports and processes, and give me a diagnosis without changing anything." |
| Domains and HTTPS | "List my domains and which lab each is attached to. Flag any certificate or routing problem." |
| Projects | "Find the project directories in my lab and tell me each one's language and Git status." |
| Safe code changes | "Inspect the project, explain the change needed, then wait for my approval before editing any file." |
| End-to-end | "Investigate this end to end: read-only first, find the root cause, propose a fix, and only apply it after I approve." |
More in Worked examples.
Permissions and safety
Connecting does not give the assistant more than you have. Three layers decide what it can do, and the effective access is what all three allow:
| Layer | Decides |
|---|---|
| The AI app | Which connectors and actions it lets the model use |
| The MCP connection | Which Labs tools are exposed to your plan |
| Your Labs account | Which labs, domains and services you can reach |
Good practice:
- Connect only to the official address above. Ignore anything claiming to be a "Labs-compatible" server.
- Use the sign-in flow. Never paste your Labs password, SSH private key, WireGuard private key or tokens into a chat.
- Prefer read-only requests first; review before any change to something that matters; verify afterwards.
- Ask the assistant to name the exact lab or domain before anything destructive.
- Only work on systems you are authorised to test. A connected lab does not make an unauthorised target fair game.
- Remote MCP servers can be targets of prompt injection. Treat a connector as software with privileges, and review what it did in History and safety.
Troubleshooting
| Problem | Check |
|---|---|
| The app or connector option does not appear | You are on a supported surface (ChatGPT web; Claude web/desktop), the developer or connector feature is on, your plan includes it, and your workspace has not blocked custom apps. |
| Tool scanning or adding fails | The URL is exactly https://labs.selfmade.ninja/mcp. Retry and finish the sign-in when the browser window opens. |
| It keeps asking you to sign in again | Reconnect the app. If you disconnected it in Labs (Account Settings → Security → MCP clients), it must be approved again. |
| A tool you expected is missing | Your plan may not include it — a Free account can read but not deploy. See What you can ask. |
| Tools changed after an update | Managed workspaces may freeze a connector's tool list. Refresh or re-review the connector. |
More on security
How the connection is secured (sign-in, permissions, guard rails and history) is explained in How MCP connections are secured. The blog post Connect Selfmade Ninja Labs MCP to ChatGPT and Claude walks through the same setup with screenshots.
Provider references
- OpenAI — Developer mode and MCP apps in ChatGPT
- OpenAI — Apps in ChatGPT
- Anthropic — Custom connectors using remote MCP
- Anthropic — Use connectors to extend Claude