This n8n custom extension provides an API endpoint to list all registered nodes on your n8n instance, including their properties, inputs, outputs, and other metadata.
- Exposes a GET endpoint:
/custom/nodes - Lists all core, community, and custom nodes.
- Provides details for each node:
name: Internal n8n name (e.g.,n8n-nodes-base.httpRequest)displayName: User-friendly name (e.g., "HTTP Request")type: Categorized as 'core', 'core-contrib', 'community', or 'custom'version: Node versiondescription: Node's purposeinputs: Array of input connection names (e.g.,["main"])outputs: Array of output connection names (e.g.,["main"])credentials: Array of credential types the node can use.properties: Detailed array of all configurable properties for the node.
- A self-hosted n8n instance.
- Node.js and npm/yarn installed for building the package.
- Clone this repository (or create the files as described).
- Navigate to the package directory:
cd n8n-nodes-node-inspector - Install dependencies:
npm install(oryarn install) - Build the package:
npm run build
This will compile the TypeScript code into the dist directory.
There are two main ways to install custom extensions in n8n:
Method 1: Manual Copy (for testing or simple setups)
- Ensure the package is built (you should have a
distfolder). - Locate your n8n custom extensions directory. By default, this is
~/.n8n/custom/(Linux/macOS) or%USERPROFILE%/.n8n/custom/(Windows). - Create this directory if it doesn't exist.
- Copy the entire
n8n-nodes-node-inspectorpackage folder (includingdist,package.json, etc.) into the~/.n8n/custom/directory. The structure should be:~/.n8n/custom/n8n-nodes-node-inspector/package.json, etc. - Restart your n8n instance.
Method 2: Docker Volume Mounting (recommended for Docker deployments)
-
Ensure the package is built.
-
When running your n8n Docker container, mount the
n8n-nodes-node-inspectorpackage directory into/home/node/.n8n/custom/inside the container.Example
docker-compose.ymlsnippet:services: n8n: image: n8nio/n8n ports: - "5678:5678" environment: # Add other n8n environment variables as needed volumes: - ~/.n8n_data:/home/node/.n8n # For n8n data persistence - ./path/to/your/n8n-nodes-node-inspector:/home/node/.n8n/custom/n8n-nodes-node-inspector # Mount the custom extension
Replace
./path/to/your/n8n-nodes-node-inspectorwith the actual path to your built package on the host machine. -
Restart your n8n Docker container (
docker-compose up -d --force-recreateor similar).
Once installed and n8n is restarted, the API endpoint will be available at:
http://<your-n8n-host>:<port>/custom/nodes
For a local n8n instance running on port 5678, this would be:
http://localhost:5678/custom/nodes
You can access this URL with a browser, curl, Postman, or an n8n HTTP Request node.
[
{
"name": "n8n-nodes-base.httpRequest",
"displayName": "HTTP Request",
"type": "core",
"version": 1,
"description": "Makes an HTTP request to a remote server",
"inputs": ["main"],
"outputs": ["main"],
"credentials": [
{
"name": "httpBasicAuth",
"required": false
},
{
"name": "httpDigestAuth",
"required": false
}
// ... and other credential types
],
"properties": [
{
"displayName": "Authentication",
"name": "authentication",
"type": "options",
"options": [ /* ... */ ],
"default": "none"
},
{
"displayName": "URL",
"name": "url",
"type": "string",
"default": "",
"placeholder": "http://localhost/webhook",
"description": "The URL to make the request to",
"required": true
}
// ... many more properties
]
}
// ... other nodes
]npm run dev: To watch for changes insrc/and recompile automatically.npm run lint: To lint the TypeScript code.npm run format: To format the code with Prettier.
You'll need to restart n8n after recompiling and updating the files in the ~/.n8n/custom directory for changes to take effect.