nestjs-langgraph-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@nestjs-langgraph-mcp run agent: explain recursion with an example"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NestJS + LangGraph MCP POC
A simple proof-of-concept MCP server built with NestJS, using LangGraph as the orchestration layer for tool execution and agent workflows.
Features
NestJS application context (no HTTP server required)
MCP server over stdio transport
LangGraph
StateGraphworkflow with nodes:route(model-based tool routing)executeTool(executes selected tool)respond(final answer generation)
Model provider switch:
OpenAI (
@langchain/openai)Ollama local model (
@langchain/ollama, defaultqwen2.5:1.5b)
Related MCP server: SampleMCP
Quick Start
Install dependencies:
npm installConfigure environment:
cp .env.example .envBuild and run:
npm run build
npm startThe MCP server starts on stdio.
Model Selection
Default provider is read from MODEL_PROVIDER.
Use OpenAI:
MODEL_PROVIDER=openaiset
OPENAI_API_KEYoptional
OPENAI_MODEL(defaultgpt-4o-mini)
Use Ollama qwen2.5:1.5b:
MODEL_PROVIDER=ollamarun Ollama locally and pull model:
ollama pull qwen2.5:1.5boptional
OLLAMA_BASE_URLandOLLAMA_MODEL
You can override provider/model per MCP tool call (run_agent).
MCP Tools
health: returns server status and default model configrun_agent: runs the LangGraph workflowinput:
prompt(string, required)provider(openaiorollama, optional)model(string, optional)
Example MCP Client Config (Claude Desktop style)
{
"mcpServers": {
"nestjs-langgraph": {
"command": "node",
"args": ["/absolute/path/to/langraph-mcp/dist/main.js"],
"env": {
"MODEL_PROVIDER": "ollama",
"OLLAMA_BASE_URL": "http://localhost:11434",
"OLLAMA_MODEL": "qwen2.5:1.5b"
}
}
}
}LangGraph Demo Suite
This repo includes agents and tools built using proper LangGraph.js patterns:
Tools: Defined using
tool()from@langchain/core/toolswith Zod schemasAgents: Built with
createReactAgentor customStateGraphwithMessagesAnnotationTool Execution: Uses
ToolNodeandtoolsConditionfrom@langchain/langgraph/prebuiltLLM Binding: Tools bound to LLM via
.bindTools(tools)
Demo Capabilities
Demo | Capability |
01-reasoning | Basic StateGraph workflow |
02-parallel | Parallel tool calls via ToolNode |
03-handoffs | Agent-to-agent handoffs via coordinator |
04-hitl | Human-in-the-loop approval workflow |
05-structured | Structured output with Zod validation |
06-tracing | Execution tracing through graph |
07-discovery | Tool discovery and registry |
08-planning | Multi-step planning loop |
09-failure | Error handling and retry |
10-local | Local Ollama model integration |
Project Layout
demos/
├── demo-runner.ts
├── 01-reasoning.demo.ts
├── 02-parallel.demo.ts
├── 03-handoffs.demo.ts
├── 04-hitl.demo.ts
├── 05-structured-output.demo.ts
├── 06-tracing.demo.ts
├── 07-tool-discovery.demo.ts
├── 08-multi-step-planning.demo.ts
├── 09-failure-handling.demo.ts
├── 10-local-model.demo.ts
└── utils/demo-utils.ts
agents/
├── agent.factory.ts
├── tools.ts
├── coordinator.agent.ts
├── employee.agent.ts
├── analytics.agent.ts
├── reporting.agent.ts
├── approval.agent.ts
└── model.config.tsPrerequisites
Ensure Ollama is running with a tool-capable model:
# qwen2.5:1.5b supports tool calling (recommended)
ollama pull qwen2.5:1.5b
ollama serveNote: Models like qwen2.5:1.5b do not support tool calling. Use qwen2.5:1.5b, llama3.1, mistral, or qwen2.5 for full demo functionality.
Run all demos:
npm run demoRun one demo:
npm run demo:one -- 03Optional HITL switch for demo 04:
DEMO_REVIEW_DECISION=approved npm run demo:one -- 04Available Tools
4 toolshealthHealth CheckA
Returns basic server status and default model configuration.
Inputs: no named parameters.
list_agentsList Available AgentsA
Returns information about all available agents and their tools.
Inputs: no named parameters.
main_agentMain AgentA
The main orchestration agent that can handle any request by leveraging all available tools.
Capabilities:
Direct tool execution for queries
Employee data: list employees, find by name
Analytics: engagement scores, trends, project health, timestamps
Reporting: structured report generation
Approval: risk assessment and approval workflows
Use this as the primary interface for all requests.
Inputs: prompt (required).
run_agentRun LangGraph AgentC
Runs a LangGraph-orchestrated NestJS agent with optional provider/model selection.
Inputs: prompt (required), provider, model.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Health and list_agents are clear, but main_agent and run_agent overlap: both execute agents, with main_agent claiming to handle any request and run_agent offering provider/model selection. This could cause confusion about which to use.
Tool names mix conventions: 'health' is a noun, 'list_agents' and 'run_agent' are verb_noun, 'main_agent' is adjective_noun. Verbs are not consistently used, leading to an incoherent pattern.
With only 4 tools, the server feels thin for the advertised capabilities (employee data, analytics, reporting, approval). The count is borderline but not extremely low for an agent-centric design.
The server lists numerous capabilities (e.g., list employees, engagement scores) but lacks dedicated tools for them—all are funneled through main_agent. This creates a gap where agents cannot directly perform specific operations.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA transport-agnostic MCP server that integrates multiple AI coding agents (Claude Code, Gemini, and Codex) with built-in tools for command execution, calculations, and streaming capabilities. Supports both STDIO and HTTP transports for flexible deployment.18 npm1MIT
- FlicenseNot gradedqualityDmaintenanceA demonstration MCP server that provides math (add/multiply) and weather tools, connecting via stdio and streamable HTTP, and integrates with LangChain and LangGraph for agentic workflows.-
- AlicenseDqualityDmaintenanceA TypeScript MCP server demo supporting local Stdio and remote Streamable HTTP, demonstrating tool invocation for AI agents.21MIT
- FlicenseBqualityCmaintenanceAn MCP server with LangGraph agent integration that enables AI agents to use custom tools and external APIs for dice rolling, web search, social content creation, and GitHub access via STDIO transport.103-