@qomodome/node-red-agent-ai 0.1.11
Node-RED nodes for AI agent with LLM calling and MCPs support
node-red-agent-ai
Drop an AI agent into any Node-RED flow — it runs a reasoning loop, calls MCP tools, and returns the final answer.
What you get
ai-agent-config: stores provider credentials and shared defaultsai-agent: executes a reasoning loop, can call MCP tools, then returns final output- Provider support: OpenAI GPT, Google Gemini, AWS Bedrock
Architecture
The node runtime is organized with an hexagonal architecture to keep business logic decoupled from framework details.
- Domain layer: core reasoning loop and policies
- Application layer: use case orchestration
- Adapters layer: Node-RED I/O mapping, LangChain model factory, MCP client integration
Current structure:
nodes/
domain/
application/
adapters/
nodered/
llm/
tools/
Requirements
- Node.js 18+
- Node-RED 3+
Installation
From the Node-RED editor:
- Go to
Manage palette>Installtab - Search for
@qomodome/node-red-agent-ai - Click
Install
From the command line:
npm install @qomodome/node-red-agent-ai
Use the node
- Add an
ai-agent-confignode and set credentials for the provider you want to use. - (Optional) Add one or more
ai-mcp-server-confignodes if you want external tools. - Add an
ai-agentnode and link it to yourai-agent-config. - Pick provider/model in the node UI (or override from
msg.ai). - Send a message like this:
msg.payload = {
input: "Summarize today tickets in 5 bullet points"
};
msg.ai = {
provider: "gemini", // openai | gemini | bedrock
model: "gemini-3.5-flash"
};
return msg;
If msg.ai is missing, ai-agent uses the defaults configured in the node editor.
Node reference
ai-agent-config
name(optional): label in editoropenaiApiKey(optional): used when provider isopenaigoogleApiKey(optional): used when provider isgeminiawsAccessKeyId(optional): AWS key id forbedrockawsSecretAccessKey(optional): AWS secret forbedrockawsSessionToken(optional): AWS session token when needed
ai-mcp-server-config
name(optional): label in editortransport(required):streamableHttp|sse|stdiourl(required for HTTP transports): MCP endpoint URLcommand(required forstdio): executable to spawnargsRaw(optional): one argument per line forstdioenvJson(optional): JSON object with env vars forstdio
ai-agent
agent(required): reference toai-agent-configprovider(required):openai|gemini|bedrockmodel(optional): provider model overridesystemPrompt(optional): persistent agent instructionawsRegion(optional): used forbedrock(defaultus-east-1)mcpServerIds(optional): linkedai-mcp-server-confignodesdebugLogs(optional): verbose runtime logs- advanced limits (optional):
maxIterations,maxToolCalls,rateLimitRetries,rateLimitBackoffMs
Message contract
Input:
msg.payloadstring or object withinput- optional overrides in
msg.ai:provider:openai·gemini·bedrockmodel: model id/namemcpServers: array of MCP server configs
Output on success:
msg.payload: final assistant textmsg.aiAgent.trace: iteration-by-iteration tracemsg.aiAgent.usage: counters and timings
Error behavior:
- Errors are propagated with
node.error(err, msg)anddone(err) - Use standard Node-RED
catchnodes for handling - Internal handling is limited to rate-limit retry/backoff
Local Docker run
From repository root:
docker compose up --build
Then open:
http://localhost:1880
Notes:
- The setup installs this local module inside
/data/node_modules - Flows persist in a named Docker volume
- Rebuild after source changes:
docker compose up --build --force-recreate
Development
Run tests:
npm test
Publishing
The publish process is automated via GitHub Actions when pushing a tag that matches the package.json version. To publish a new version:
npm version X.Y.Z
git push origin main vX.Y.Z
For manual publish (not recommended - use only for emergencies):
- Verify you have an npm account and are logged in with
npm whoami. If not, runnpm login --scope=@qomodome --auth-type=weband follow the prompts. - Update version in
package.json - Verify contents with
npm pack --dry-run - Publish to npm:
npm publish --access public
License
MIT License. See LICENSE for details.