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: FastMCP Webinar Demo 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 添加单元测试和集成测试

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ciel-17/langchain-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server