使用说明
MCP LangChain LangGraph 服务器
一个全面的TypeScript模板,用于构建集成LangChain.js和LangGraph.js的MCP(模型上下文协议)服务器。
🚀 特点
- MCP服务器使用TypeScript实现完整的MCP协议
- LangChain 集成与LangChain.js代理和工具无缝集成
- LangGraph 支持使用LangGraph.js构建具有状态的多参与者应用程序
- 类型安全全面支持TypeScript,具备严格的类型检查
- 模块化架构简洁、可扩展的代码结构
- 示例工具内置计算器、文本处理器和数据验证工具
- 环境配置通过环境变量实现灵活配置
📁 项目结构
mcp-langchain-langraph-server/
├── src/
│ ├── types/ # TypeScript type definitions
│ ├── constants/ # Configuration constants
│ ├── tools/ # MCP tools implementation
│ ├── agents/ # LangChain agent configurations
│ ├── langraph/ # LangGraph application logic
│ └── server.ts # Main MCP server
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── env.example # Environment variables template
└── README.md # This file
🛠️ 安装
先决条件
- Node.js版本20.0.0或更高版本
- **npm(Node Package Manager)**最新版本
-
克隆或创建项目:
mkdir mcp-langchain-langraph-server cd mcp-langchain-langraph-server -
安装依赖项:
npm install -
设置环境变量:
cp env.example .env编辑
.env并配置 Ollama:OLLAMA_BASE_URL=http://localhost:11434 OLLAMA_MODEL=gpt-oss:20b OLLAMA_TEMPERATURE=0.7
🚀 快速入门
开发模式
# Run in development mode with hot reload
npm run dev:watch
# Or run once
npm run dev
生产模式
# Build the project
npm run build
# Start the server
npm start
🔧 配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
OLLAMA_BASE_URL |
Ollama 服务器 URL | http://localhost:11434 |
OLLAMA_MODEL |
Ollama 模型名称 | gpt-oss:20b |
OLLAMA_TEMPERATURE |
模型温度 | 0.7 |
OLLAMA_MAX_TOKENS |
最大令牌数 | 1000 |
MCP_SERVER_PORT |
MCP服务器端口 | 3000 |
MCP_SERVER_HOST |
MCP 服务器主机 | 本地主机 |
LANGCHAIN_TRACING_V2 |
启用 LangChain 跟踪 | false |
LANGCHAIN_PROJECT |
LangChain 项目名称 | mcp-langchain-server |
NODE_ENV |
环境模式 | 开发 |
LOG_LEVEL |
日志级别 | info |
最新库版本
- LangChain.jsv0.3.0(稳定版)
- LangGraph.jsv0.4.9(最新)
- **LangChain Ollama(可直接作为专有名词使用,不需额外翻译)**v0.1.0(最新版)
- **MCP SDK(MCP软件开发工具包)**版本1.0.0(稳定版)
- TypeScript版本5.3.3(最新)
- Node.jsv20+(必需)
配置常量
该项目使用了一个集中式的常量文件(src/constants/index.ts)适用于所有配置:
- Ollama 配置模型设置、基础URL、温度(参数)
- 可用型号预定义的支持Ollama模型列表
- 服务器配置端口、主机、日志设置
- 默认代理配置LangChain代理的默认设置
这种方法提供了:
- ✅ 集中式配置所有设置集中一处
- ✅ 表示“正确”或“确认”。 类型安全具有适当类型的 TypeScript 常量
- ✅ **环境覆盖(或环境重写)**环境变量覆盖默认值
- ✅ 易于维护在一个地方更改模型或设置
🛠️ 内置工具
1. 计算器工具
执行基本算术运算:
{
operation: 'add' | 'subtract' | 'multiply' | 'divide',
a: number,
b: number
}
2. 文本处理工具
对文本执行各种操作进行处理:
{
text: string,
operation: 'uppercase' | 'lowercase' | 'reverse' | 'word_count' | 'char_count'
}
3. 数据验证工具
验证数据是否符合常见模式:
{
data: string,
type: 'email' | 'phone' | 'url' | 'ip' | 'uuid'
}
🤖 LangChain智能体集成
该服务器包含一个预配置的LangChain代理,可以使用MCP工具:
import { createLangChainAgent } from '@/agents/langchain-agent';
const agent = await createLangChainAgent({
modelName: 'gpt-3.5-turbo',
temperature: 0.7,
maxTokens: 1000
});
const result = await agent.invoke({
input: 'Calculate 15 * 23 and convert the result to uppercase'
});
🔄 LangGraph 应用程序
该服务器包含一个用于复杂、有状态工作流的LangGraph应用程序:
import { LangGraphMCPApp } from '@/langraph/langraph-app';
const app = new LangGraphMCPApp();
const result = await app.processMessage(
'Calculate 25 * 4 and validate if the result is a valid number'
);
📝 添加自定义工具
-
创建一个新工具 在
src/tools/:export const myCustomTool: MCPTool = { name: 'my_custom_tool', description: 'Description of what the tool does', inputSchema: { type: 'object', properties: { // Define your input schema }, required: ['required_field'] }, execute: async (input) => { // Implement your tool logic return { success: true, data: result }; } }; -
将其添加到工具数组中 在
src/tools/index.ts:export const allTools: MCPTool[] = [ calculatorTool, textProcessorTool, dataValidatorTool, myCustomTool // Add your tool here ];
🧪 测试
# Run the server and test with MCP client
npm run dev
# In another terminal, test the tools
# (You'll need an MCP client for this)
📚 API 参考
MCP服务器方法
ListToolsRequestSchema列出所有可用工具CallToolRequestSchema执行特定工具
LangChain 代理
createLangChainAgent(config)创建一个新的LangChain代理runAgentExample()运行一个示例代理工作流
LangGraph 应用程序
LangGraphMCPApp主应用程序类processMessage(message)通过工作流处理消息getGraph()返回编译后的图以供检查
🔍 调试
通过设置启用调试日志记录:
LOG_LEVEL=debug
服务器提供以下方面的详细日志记录:
- 工具执行
- LangChain智能体交互
- LangGraph工作流程步骤
- 错误处理
🤝 贡献
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支
- 进行你的更改
- 如适用,请添加测试
- 提交拉取请求
📄 许可证
MIT 许可证 - 详见 LICENSE 文件
🆘 支持
对于问题和疑问:
- 检查一下 MCP 文档
- 评论 LangChain.js 文档
- 检查 LangGraph.js 文档
🎯 下一步行动
- 添加更多示例工具
- 实现自定义LangGraph工作流
- 添加单元测试
- 建立CI/CD流水线
- 添加Docker支持
- 实现身份验证
- 添加监控和指标
