mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-03-26 12:13:12 +00:00
Compare commits
23 Commits
v2.18.9
...
feature/mc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1fe8e403c4 | ||
|
|
738f0ad86d | ||
|
|
0f5b0d9463 | ||
|
|
4399899255 | ||
|
|
8d20c64f5c | ||
|
|
fe1309151a | ||
|
|
dd62040155 | ||
|
|
112b40119c | ||
|
|
318986f546 | ||
|
|
aa8a6a7069 | ||
|
|
e11a885b0d | ||
|
|
ee99cb7ba1 | ||
|
|
66cb66b31b | ||
|
|
b67d6ba353 | ||
|
|
3ba5584df9 | ||
|
|
be0211d826 | ||
|
|
0d71a16f83 | ||
|
|
085f6db7a2 | ||
|
|
b6bc3b732e | ||
|
|
c16c9a2398 | ||
|
|
1d34ad81d5 | ||
|
|
4566253bdc | ||
|
|
54c598717c |
9
.github/workflows/release.yml
vendored
9
.github/workflows/release.yml
vendored
@@ -334,6 +334,15 @@ jobs:
|
|||||||
const pkg = require('./package.json');
|
const pkg = require('./package.json');
|
||||||
pkg.name = 'n8n-mcp';
|
pkg.name = 'n8n-mcp';
|
||||||
pkg.description = 'Integration between n8n workflow automation and Model Context Protocol (MCP)';
|
pkg.description = 'Integration between n8n workflow automation and Model Context Protocol (MCP)';
|
||||||
|
pkg.main = 'dist/index.js';
|
||||||
|
pkg.types = 'dist/index.d.ts';
|
||||||
|
pkg.exports = {
|
||||||
|
'.': {
|
||||||
|
types: './dist/index.d.ts',
|
||||||
|
require: './dist/index.js',
|
||||||
|
import: './dist/index.js'
|
||||||
|
}
|
||||||
|
};
|
||||||
pkg.bin = { 'n8n-mcp': './dist/mcp/index.js' };
|
pkg.bin = { 'n8n-mcp': './dist/mcp/index.js' };
|
||||||
pkg.repository = { type: 'git', url: 'git+https://github.com/czlonkowski/n8n-mcp.git' };
|
pkg.repository = { type: 'git', url: 'git+https://github.com/czlonkowski/n8n-mcp.git' };
|
||||||
pkg.keywords = ['n8n', 'mcp', 'model-context-protocol', 'ai', 'workflow', 'automation'];
|
pkg.keywords = ['n8n', 'mcp', 'model-context-protocol', 'ai', 'workflow', 'automation'];
|
||||||
|
|||||||
51
CHANGELOG.md
51
CHANGELOG.md
@@ -5,6 +5,57 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [2.20.0] - 2025-10-18
|
||||||
|
|
||||||
|
### ✨ Features
|
||||||
|
|
||||||
|
**MCP Server Icon Support (SEP-973)**
|
||||||
|
|
||||||
|
- Added custom server icons for MCP clients
|
||||||
|
- Icons served from https://www.n8n-mcp.com/logo*.png
|
||||||
|
- Multiple sizes: 48x48, 128x128, 192x192
|
||||||
|
- Future-proof for Claude Desktop icon UI support
|
||||||
|
- Added websiteUrl field pointing to https://n8n-mcp.com
|
||||||
|
- Server now reports correct version from package.json instead of hardcoded '1.0.0'
|
||||||
|
|
||||||
|
### 📦 Dependency Updates
|
||||||
|
|
||||||
|
- Upgraded `@modelcontextprotocol/sdk` from ^1.13.2 to ^1.20.1
|
||||||
|
- Enables icon support as per MCP specification SEP-973
|
||||||
|
- No breaking changes, fully backward compatible
|
||||||
|
|
||||||
|
### 🔧 Technical Improvements
|
||||||
|
|
||||||
|
- Server version now dynamically sourced from package.json via PROJECT_VERSION
|
||||||
|
- Enhanced server metadata to include branding and website information
|
||||||
|
|
||||||
|
### 📝 Notes
|
||||||
|
|
||||||
|
- Icons won't display in Claude Desktop yet (pending upstream UI support)
|
||||||
|
- Icons will appear automatically when Claude Desktop adds icon rendering
|
||||||
|
- Other MCP clients (Cursor, Windsurf) may already support icon display
|
||||||
|
|
||||||
|
## [2.19.6] - 2025-10-14
|
||||||
|
|
||||||
|
### 📦 Dependency Updates
|
||||||
|
|
||||||
|
- Updated n8n to ^1.115.2 (from ^1.114.3)
|
||||||
|
- Updated n8n-core to ^1.114.0 (from ^1.113.1)
|
||||||
|
- Updated n8n-workflow to ^1.112.0 (from ^1.111.0)
|
||||||
|
- Updated @n8n/n8n-nodes-langchain to ^1.114.1 (from ^1.113.1)
|
||||||
|
|
||||||
|
### 🔄 Database
|
||||||
|
|
||||||
|
- Rebuilt node database with 537 nodes (increased from 525)
|
||||||
|
- Updated documentation coverage to 88%
|
||||||
|
- 270 AI-capable tools detected
|
||||||
|
|
||||||
|
### ✅ Testing
|
||||||
|
|
||||||
|
- All 1,181 functional tests passing
|
||||||
|
- 1 flaky performance stress test (non-critical)
|
||||||
|
- All validation tests passing
|
||||||
|
|
||||||
## [2.18.8] - 2025-10-11
|
## [2.18.8] - 2025-10-11
|
||||||
|
|
||||||
### 🐛 Bug Fixes
|
### 🐛 Bug Fixes
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
[](https://www.npmjs.com/package/n8n-mcp)
|
[](https://www.npmjs.com/package/n8n-mcp)
|
||||||
[](https://codecov.io/gh/czlonkowski/n8n-mcp)
|
[](https://codecov.io/gh/czlonkowski/n8n-mcp)
|
||||||
[](https://github.com/czlonkowski/n8n-mcp/actions)
|
[](https://github.com/czlonkowski/n8n-mcp/actions)
|
||||||
[](https://github.com/n8n-io/n8n)
|
[](https://github.com/n8n-io/n8n)
|
||||||
[](https://github.com/czlonkowski/n8n-mcp/pkgs/container/n8n-mcp)
|
[](https://github.com/czlonkowski/n8n-mcp/pkgs/container/n8n-mcp)
|
||||||
[](https://railway.com/deploy/n8n-mcp?referralCode=n8n-mcp)
|
[](https://railway.com/deploy/n8n-mcp?referralCode=n8n-mcp)
|
||||||
|
|
||||||
|
|||||||
BIN
data/nodes.db
BIN
data/nodes.db
Binary file not shown.
997
package-lock.json
generated
997
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
12
package.json
12
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "n8n-mcp",
|
"name": "n8n-mcp",
|
||||||
"version": "2.18.9",
|
"version": "2.20.0",
|
||||||
"description": "Integration between n8n workflow automation and Model Context Protocol (MCP)",
|
"description": "Integration between n8n workflow automation and Model Context Protocol (MCP)",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
@@ -139,16 +139,16 @@
|
|||||||
"vitest": "^3.2.4"
|
"vitest": "^3.2.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@modelcontextprotocol/sdk": "^1.13.2",
|
"@modelcontextprotocol/sdk": "^1.20.1",
|
||||||
"@n8n/n8n-nodes-langchain": "^1.113.1",
|
"@n8n/n8n-nodes-langchain": "^1.114.1",
|
||||||
"@supabase/supabase-js": "^2.57.4",
|
"@supabase/supabase-js": "^2.57.4",
|
||||||
"dotenv": "^16.5.0",
|
"dotenv": "^16.5.0",
|
||||||
"express": "^5.1.0",
|
"express": "^5.1.0",
|
||||||
"express-rate-limit": "^7.1.5",
|
"express-rate-limit": "^7.1.5",
|
||||||
"lru-cache": "^11.2.1",
|
"lru-cache": "^11.2.1",
|
||||||
"n8n": "^1.114.3",
|
"n8n": "^1.115.2",
|
||||||
"n8n-core": "^1.113.1",
|
"n8n-core": "^1.114.0",
|
||||||
"n8n-workflow": "^1.111.0",
|
"n8n-workflow": "^1.112.0",
|
||||||
"openai": "^4.77.0",
|
"openai": "^4.77.0",
|
||||||
"sql.js": "^1.13.0",
|
"sql.js": "^1.13.0",
|
||||||
"uuid": "^10.0.0",
|
"uuid": "^10.0.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "n8n-mcp-runtime",
|
"name": "n8n-mcp-runtime",
|
||||||
"version": "2.18.7",
|
"version": "2.19.6",
|
||||||
"description": "n8n MCP Server Runtime Dependencies Only",
|
"description": "n8n MCP Server Runtime Dependencies Only",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -11,29 +11,8 @@ NC='\033[0m' # No Color
|
|||||||
|
|
||||||
echo "🚀 Preparing n8n-mcp for npm publish..."
|
echo "🚀 Preparing n8n-mcp for npm publish..."
|
||||||
|
|
||||||
# Run tests first to ensure quality
|
# Skip tests - they already run in CI before merge/publish
|
||||||
echo "🧪 Running tests..."
|
echo "⏭️ Skipping tests (already verified in CI)"
|
||||||
TEST_OUTPUT=$(npm test 2>&1)
|
|
||||||
TEST_EXIT_CODE=$?
|
|
||||||
|
|
||||||
# Check test results - look for actual test failures vs coverage issues
|
|
||||||
if echo "$TEST_OUTPUT" | grep -q "Tests.*failed"; then
|
|
||||||
# Extract failed count using sed (portable)
|
|
||||||
FAILED_COUNT=$(echo "$TEST_OUTPUT" | sed -n 's/.*Tests.*\([0-9]*\) failed.*/\1/p' | head -1)
|
|
||||||
if [ "$FAILED_COUNT" != "0" ] && [ "$FAILED_COUNT" != "" ]; then
|
|
||||||
echo -e "${RED}❌ $FAILED_COUNT test(s) failed. Aborting publish.${NC}"
|
|
||||||
echo "$TEST_OUTPUT" | tail -20
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If we got here, tests passed - check coverage
|
|
||||||
if echo "$TEST_OUTPUT" | grep -q "Coverage.*does not meet global threshold"; then
|
|
||||||
echo -e "${YELLOW}⚠️ All tests passed but coverage is below threshold${NC}"
|
|
||||||
echo -e "${YELLOW} Consider improving test coverage before next release${NC}"
|
|
||||||
else
|
|
||||||
echo -e "${GREEN}✅ All tests passed with good coverage!${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Sync version to runtime package first
|
# Sync version to runtime package first
|
||||||
echo "🔄 Syncing version to package.runtime.json..."
|
echo "🔄 Syncing version to package.runtime.json..."
|
||||||
@@ -80,6 +59,15 @@ node -e "
|
|||||||
const pkg = require('./package.json');
|
const pkg = require('./package.json');
|
||||||
pkg.name = 'n8n-mcp';
|
pkg.name = 'n8n-mcp';
|
||||||
pkg.description = 'Integration between n8n workflow automation and Model Context Protocol (MCP)';
|
pkg.description = 'Integration between n8n workflow automation and Model Context Protocol (MCP)';
|
||||||
|
pkg.main = 'dist/index.js';
|
||||||
|
pkg.types = 'dist/index.d.ts';
|
||||||
|
pkg.exports = {
|
||||||
|
'.': {
|
||||||
|
types: './dist/index.d.ts',
|
||||||
|
require: './dist/index.js',
|
||||||
|
import: './dist/index.js'
|
||||||
|
}
|
||||||
|
};
|
||||||
pkg.bin = { 'n8n-mcp': './dist/mcp/index.js' };
|
pkg.bin = { 'n8n-mcp': './dist/mcp/index.js' };
|
||||||
pkg.repository = { type: 'git', url: 'git+https://github.com/czlonkowski/n8n-mcp.git' };
|
pkg.repository = { type: 'git', url: 'git+https://github.com/czlonkowski/n8n-mcp.git' };
|
||||||
pkg.keywords = ['n8n', 'mcp', 'model-context-protocol', 'ai', 'workflow', 'automation'];
|
pkg.keywords = ['n8n', 'mcp', 'model-context-protocol', 'ai', 'workflow', 'automation'];
|
||||||
|
|||||||
@@ -128,7 +128,25 @@ export class N8NDocumentationMCPServer {
|
|||||||
this.server = new Server(
|
this.server = new Server(
|
||||||
{
|
{
|
||||||
name: 'n8n-documentation-mcp',
|
name: 'n8n-documentation-mcp',
|
||||||
version: '1.0.0',
|
version: PROJECT_VERSION,
|
||||||
|
icons: [
|
||||||
|
{
|
||||||
|
src: "https://www.n8n-mcp.com/logo.png",
|
||||||
|
mimeType: "image/png",
|
||||||
|
sizes: ["192x192"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
src: "https://www.n8n-mcp.com/logo-128.png",
|
||||||
|
mimeType: "image/png",
|
||||||
|
sizes: ["128x128"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
src: "https://www.n8n-mcp.com/logo-48.png",
|
||||||
|
mimeType: "image/png",
|
||||||
|
sizes: ["48x48"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
websiteUrl: "https://n8n-mcp.com"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
capabilities: {
|
capabilities: {
|
||||||
|
|||||||
Reference in New Issue
Block a user