Skip to main content
Glama
Ciel-17

langchain-mcp-user-query-demo

by Ciel-17

LangChain MCP Demo

一个基于 Node.js 的 MCP 示例项目,演示如何:

  • 使用 @modelcontextprotocol/sdk 创建本地 MCP Server

  • 在 Cursor 等 MCP Client 中挂载本地工具

  • 通过 @langchain/mcp-adapters 让 LangChain 同时连接多个 MCP Server

  • 使用 OpenAI 兼容接口完成“模型思考 -> 工具调用 -> 返回结果”的 Agent 流程

  • 组合高德地图 AMap MCP、filesystem MCP、Chrome DevTools MCP 获取位置、路线、文件和浏览器相关信息

功能概览

项目包含两个示例:

示例

入口

说明

本地用户查询 MCP

src/my-mcp/my-mcp-server.mjs

注册 query-user 工具和 docs://guide 资源,演示本地 MCP Server 的创建与调用

AMap 多 MCP Agent

src/amap-mcp/amap-mcp-test.mjs

同时连接高德地图、filesystem、Chrome DevTools MCP,用自然语言完成地点查询、路线规划、文档保存和浏览器操作

本地用户查询示例注册了以下 MCP 能力:

类型

名称

说明

Tool

query-user

根据用户 ID 查询用户姓名、邮箱和角色

Resource

docs://guide

提供 MCP Server 使用说明

AMap 示例连接了以下外部 MCP Server:

MCP Server

配置方式

说明

amap-maps-streamableHTTP

https://mcp.amap.com/mcp?key=${AMAP_MAPS_API_KEY}

调用高德地图能力查询地点、周边信息和路线

filesystem

npx -y @modelcontextprotocol/server-filesystem

ALLOWED_PATHS 允许的目录内读写文件

chrome-devtools

npx -y chrome-devtools-mcp@latest

通过 Chrome DevTools MCP 获取或操作浏览器相关信息

Related MCP server: mcp-tool-server

项目结构

.
├── assets/
│   └── cursor-mcp-setting.png
├── src/
│   ├── amap-mcp/
│   │   └── amap-mcp-test.mjs       # 高德地图、filesystem、Chrome DevTools 多 MCP 示例
│   └── my-mcp/
│       ├── my-mcp-server.mjs       # 本地 MCP Server,注册工具和资源
│       └── langchain-mcp-test.mjs  # LangChain MCP Client 调用示例
├── package.json
├── pnpm-lock.yaml
└── README.md

环境要求

  • Node.js 18+

  • pnpm

  • Cursor 或其他支持 MCP 的客户端

  • OpenAI 兼容的模型服务

  • AMap 示例需要可用的高德地图 MCP API Key

安装依赖

pnpm install

配置环境变量

在项目根目录创建 .env 文件:

MODEL_NAME=your-model-name
OPENAI_API_KEY=your-api-key
OPENAI_BASE_URL=https://your-openai-compatible-endpoint/v1

AMAP_MAPS_API_KEY=your-amap-maps-api-key
ALLOWED_PATHS=D:/code/agent-node/mcp-server/src/amap-mcp/output

如果使用官方 OpenAI API,OPENAI_BASE_URL 可以按你的 SDK 配置习惯填写或省略。

ALLOWED_PATHS 用英文逗号分隔多个允许 filesystem MCP 访问的目录。

在 Cursor 中使用本地 MCP Server

打开 Cursor 的 MCP 配置,添加本地 server:

{
  "mcpServers": {
    "my-mcp-server": {
      "command": "node",
      "args": [
        "D:/code/agent-node/mcp-server/src/my-mcp/my-mcp-server.mjs"
      ]
    }
  }
}

如果项目路径不同,请把 args 中的路径替换为你本机的 src/my-mcp/my-mcp-server.mjs 绝对路径。

配置示例:

Cursor MCP setting

配置完成后,Cursor 可以在对话中识别并调用 query-user 工具。

运行本地用户查询示例

pnpm run start:my-mcp

src/my-mcp/langchain-mcp-test.mjs 的主要流程:

  1. .env 读取模型名称、API Key 和接口地址。

  2. 使用 MultiServerMCPClient 启动并连接本地 MCP Server。

  3. 调用 mcpClient.getTools() 获取 MCP 工具列表。

  4. 调用 mcpClient.listResources()mcpClient.readResource() 读取 MCP 资源内容。

  5. 使用 model.bindTools(tools) 将工具绑定到模型。

  6. 进入 Agent 循环:模型产生工具调用时执行工具,并把结果追加回消息历史。

默认示例问题是:

MCP Server 的使用指南是什么

如果切换到用户查询问题,模型会读取本地示例数据并返回用户信息。

运行 AMap 多 MCP 示例

pnpm run start:amap

src/amap-mcp/amap-mcp-test.mjs 会同时连接高德地图、filesystem 和 Chrome DevTools MCP。默认示例问题会查询上海南站附近的火锅店,选择最近的 1 个地点,规划路线,并把结果保存为 Markdown 文档。

如果需要调整输出目录,请同步修改 .env 中的 ALLOWED_PATHS,并确保自然语言任务里要求写入的路径位于允许目录内。

示例数据

本地 MCP Server 当前内置了 3 条用户数据:

用户 ID

姓名

邮箱

角色

001

张三

zhangsan@example.com

admin

002

李四

lisi@example.com

user

003

王五

wangwu@example.com

user

你可以在 src/my-mcp/my-mcp-server.mjs 中替换 database,把它改造成真实数据库、HTTP API 或业务系统查询工具。

常见问题

Cursor 找不到 MCP Server

请检查:

  • command 是否能在终端中直接执行

  • args 是否使用了正确的绝对路径

  • 依赖是否已经通过 pnpm install 安装

  • Node.js 版本是否满足要求

LangChain 示例无法调用模型

请检查:

  • .env 中的 MODEL_NAME 是否可用

  • OPENAI_API_KEY 是否正确

  • OPENAI_BASE_URL 是否与所使用的模型服务匹配

AMap 示例无法获取地图信息

请检查:

  • .env 中的 AMAP_MAPS_API_KEY 是否有效

  • 当前网络是否可以访问 https://mcp.amap.com

  • 模型是否正确选择了高德地图 MCP 暴露的工具

filesystem MCP 无法写入文件

请检查:

  • ALLOWED_PATHS 是否配置了目标目录

  • 目标路径是否位于 ALLOWED_PATHS 允许的目录内

  • 目录是否存在并且当前用户有写入权限

修改项目路径后示例失效

README.mdsrc/my-mcp/langchain-mcp-test.mjssrc/amap-mcp/amap-mcp-test.mjs 中都包含本地路径示例。移动项目后,需要同步更新 MCP Server 入口路径和 filesystem 允许路径。

后续可扩展方向

  • 将示例数据替换为数据库查询

  • 增加更多 MCP tools,例如新增用户、搜索订单、查询知识库

  • 将 server 路径和输出路径改为环境变量,避免硬编码本机路径

  • 为 MCP Server 添加单元测试和集成测试

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A custom MCP server with 6 utility tools (file search, file reading, math calculation, JSON formatting, time query, system info) that demonstrates MCP protocol workflow and integrates with LangChain agents.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server exposing employee info retrieval and web search tools, designed to be consumed by a LangChain agent for decoupled tool execution.
    -