loading…
Search for a command to run...
loading…
Demonstrates a complete MCP server implementation supporting both local Ollama models and remote API models. Enables LangChain applications to dynamically disco
Demonstrates a complete MCP server implementation supporting both local Ollama models and remote API models. Enables LangChain applications to dynamically discover and invoke tools including addition calculations and model invocation capabilities.
这是一个完整的 MCP (Model Context Protocol) 示例项目,展示了如何搭建一个支持本地 Ollama 模型和远程 API 模型的 MCP 服务器,以及如何使用 LangChain 构建大模型应用来发现和调用 MCP 工具。
e:\agents_pro\mcp\
├── package.json # 项目配置和依赖
├── index.js # MCP 服务器主文件
├── tools/ # 工具定义目录
│ ├── model_invoke.json # 模型调用工具定义
│ └── add_numbers.json # 加法计算工具定义
├── example.js # JavaScript 示例
├── langchain-app.py # Python LangChain 应用示例
└── README.md # 项目文档
npm install
pip install -r requirements.txt
请访问 Ollama 官网 下载并安装 Ollama,然后运行以下命令拉取模型:
ollama pull llama2
ollama pull qwen3:4b
tools/ 目录下定义工具http://localhost:11434qwen3:4blangchain-app.py 中设置 API 密钥npm start
服务器启动后,会在控制台输出以下信息:
MCP server running on port 3000
Tools available at: http://localhost:3000/mcp/tools
Invoke endpoint at: http://localhost:3000/mcp/invoke
node example.js
python langchain-app.py
请求:
GET /mcp/tools
响应:
{
"tools": [
{
"name": "model_invoke",
"description": "Invoke a language model with a prompt",
"parameters": {
"type": "object",
"properties": {
"prompt": {
"type": "string",
"description": "The prompt to send to the model"
},
"model_type": {
"type": "string",
"enum": ["local", "remote"],
"description": "Model type: local (Ollama) or remote (API)"
},
"model_name": {
"type": "string",
"description": "Model name to use"
},
"api_key": {
"type": "string",
"description": "API key for remote model (required if model_type is remote)"
}
},
"required": ["prompt", "model_type", "model_name"]
}
},
{
"name": "add_numbers",
"description": "Calculate the sum of two numbers",
"parameters": {
"type": "object",
"properties": {
"num1": {
"type": "number",
"description": "The first number"
},
"num2": {
"type": "number",
"description": "The second number"
}
},
"required": ["num1", "num2"]
}
}
]
}
请求:
POST /mcp/invoke
Content-Type: application/json
{
"tool": "model_invoke",
"params": {
"prompt": "你好,告诉我一个简短的笑话",
"model_type": "local",
"model_name": "llama2"
}
}
响应:
{
"success": true,
"data": {
"response": "为什么人工智能不会感冒?因为它们没有病毒,只有bug!"
}
}
用户查询:"计算 123 加上 456 等于多少"
大模型流程:
add_numbers 工具{"num1": 123, "num2": 456}{"sum": 579}用户查询:"使用本地模型写一首关于春天的诗"
大模型流程:
model_invoke 工具{"prompt": "写一首关于春天的诗", "model_type": "local", "model_name": "qwen3:4b"}tools/ 目录下创建工具定义文件,并在 index.js 中添加相应的处理函数index.js 中的端口配置model_invoke 工具,支持更多类型的模型提供商如果启动服务器时出现端口被占用的错误,可以使用以下命令查看并终止占用端口的进程:
# 查看占用端口 3000 的进程
netstat -ano | findstr :3000
# 终止进程(PID 为上一步输出的进程 ID)
taskkill /PID <PID> /F
如果本地模型不可用,请检查:
ollama list 查看)如果远程模型调用失败,请检查:
本项目展示了如何搭建一个完整的 MCP 服务器,以及如何使用 LangChain 构建大模型应用来发现和调用 MCP 工具。通过这个项目,您可以了解:
这个项目可以作为一个基础框架,根据实际需求进行扩展和定制。
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"mcp-model-provider-example": {
"command": "npx",
"args": []
}
}
}