神族九帝's blog 神族九帝's blog
首页
  • 神卡套餐 (opens new window)
  • 神族九帝 (opens new window)
  • 网盘资源 (opens new window)
  • 今日热点 (opens new window)
  • 在线PS (opens new window)
  • IT工具 (opens new window)
  • FC游戏 (opens new window)
  • 在线壁纸 (opens new window)
  • AI团队搭建总结
  • 面试突击
  • 复习指导
  • HTML
  • CSS
  • JavaScript
  • 设计模式
  • 浏览器
  • 手写系列
  • Vue
  • Webpack
  • Http
  • 前端优化
  • 项目
  • 面试真题
  • 算法
  • 精选文章
  • 八股文
  • 前端工程化
  • 一面
  • 工作笔记
  • 前端基础建设与架构 30 讲
  • vue2源码学习
  • 剖析vuejs内部运行机制
  • TypeScript 入门实战笔记
  • vue3源码学习
  • 2周刷完100道前端优质面试真题
  • 思维导图
  • npm发包
  • 重学node
  • 前端性能优化方法与实战
  • webpack原理与实战
  • webGl
  • 前端优化
  • Web3
  • React
  • Agent学习笔记
  • 更多
  • 未来要做的事
  • Stirling-PDF
  • ComfyUI
  • 宝塔面板+青龙面板
  • 安卓手机当服务器使用
  • 京东自动评价代码
  • 搭建x-ui免流服务器(已失效)
  • 海外联盟
  • 好玩的docker
  • 收藏夹
  • 更多
GitHub (opens new window)

神族九帝,永不言弃

首页
  • 神卡套餐 (opens new window)
  • 神族九帝 (opens new window)
  • 网盘资源 (opens new window)
  • 今日热点 (opens new window)
  • 在线PS (opens new window)
  • IT工具 (opens new window)
  • FC游戏 (opens new window)
  • 在线壁纸 (opens new window)
  • AI团队搭建总结
  • 面试突击
  • 复习指导
  • HTML
  • CSS
  • JavaScript
  • 设计模式
  • 浏览器
  • 手写系列
  • Vue
  • Webpack
  • Http
  • 前端优化
  • 项目
  • 面试真题
  • 算法
  • 精选文章
  • 八股文
  • 前端工程化
  • 一面
  • 工作笔记
  • 前端基础建设与架构 30 讲
  • vue2源码学习
  • 剖析vuejs内部运行机制
  • TypeScript 入门实战笔记
  • vue3源码学习
  • 2周刷完100道前端优质面试真题
  • 思维导图
  • npm发包
  • 重学node
  • 前端性能优化方法与实战
  • webpack原理与实战
  • webGl
  • 前端优化
  • Web3
  • React
  • Agent学习笔记
  • 更多
  • 未来要做的事
  • Stirling-PDF
  • ComfyUI
  • 宝塔面板+青龙面板
  • 安卓手机当服务器使用
  • 京东自动评价代码
  • 搭建x-ui免流服务器(已失效)
  • 海外联盟
  • 好玩的docker
  • 收藏夹
  • 更多
GitHub (opens new window)
  • 工作笔记

  • 前端基础建设与架构 30 讲

  • vue2源码学习

  • 剖析vuejs内部运行机制

  • TypeScript 入门实战笔记

  • vue3源码学习

  • 2周刷完100道前端优质面试真题

  • 思维导图

  • npm发包

  • 重学node

  • 前端性能优化方法与实战

  • webpack原理与实战

  • webGl

  • 前端优化

  • Web3

  • React

  • Agent学习笔记

    • AI-Agent开发要学什么
    • Tool-让大模型调用工具
    • 实现mini-cursor
    • MCP-可跨进程调用的Tool
      • 本质
      • 写一个 MCP Server
      • 在 LangChain 里调用 MCP Server
      • 在 Cursor 里配置
      • 什么时候用 MCP
    • RAG-把文档向量化实现语义搜索
  • 更多

  • 笔记
  • Agent学习笔记
wu529778790
2026-06-08

MCP-可跨进程调用的Tool

# MCP:可跨进程调用的 Tool

之前写的 Tool 都是同一个进程里的函数,没法跨进程调用。比如 Python 写的 Agent 想调用 Node.js 写的 Tool 就不行。

MCP(Model Context Protocol)就是解决这个问题 — 让 Tool 可以跨进程调用。

  • 本地跨进程 → 用 stdio 通信
  • 远程跨进程 → 用 http 通信

MCP 由 Anthropic 发起,2025 年交给 Linux 基金会维护,现在是中立通用的行业标准协议。

# 本质

MCP 还是 Tool,只不过加了一层协议让它能跨进程。在 LangChain 里通过 MCP Client 拿到的也是普通的 Tool 对象,绑定到模型的方式完全一样。

# 写一个 MCP Server

pnpm install @modelcontextprotocol/sdk
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { z } from 'zod';

const server = new McpServer({ name: 'my-server', version: '1.0.0' });

// 注册 Tool(动态操作)
server.registerTool('query_user', {
  description: '查询用户信息',
  inputSchema: {
    userId: z.string().describe('用户 ID'),
  },
}, async ({ userId }) => {
  return {
    content: [{ type: 'text', text: `用户 ${userId} 的信息:...` }],
  };
});

// 注册 Resource(静态数据)
server.registerResource('使用指南', 'docs://guide', {
  description: 'MCP Server 使用文档',
  mimeType: 'text/plain',
}, async () => {
  return {
    contents: [{ uri: 'docs://guide', mimeType: 'text/plain', text: '文档内容...' }],
  };
});

// stdio 方式启动
const transport = new StdioServerTransport();
await server.connect(transport);

结构很清晰:new McpServer → registerTool / registerResource → connect 启动。

  • Tool — 做事情(查询、操作)
  • Resource — 返回静态数据(文档、配置),可注入到 SystemMessage

# 在 LangChain 里调用 MCP Server

pnpm install @langchain/mcp-adapters
import { MultiServerMCPClient } from '@langchain/mcp-adapters';

// 启动 MCP Server 子进程,用 stdio 通信
const mcpClient = new MultiServerMCPClient({
  mcpServers: {
    'my-mcp-server': {
      command: 'node',
      args: ['./src/my-mcp-server.mjs'],
    },
  },
});

// 拿到的就是普通 Tool,和之前一样绑定到模型
const tools = await mcpClient.getTools();
const modelWithTools = model.bindTools(tools);

// 后面的调用循环和之前完全一样
// ...

// 用完记得关闭
await mcpClient.close();

# 在 Cursor 里配置

Cursor 本身就是 MCP Client,在配置里添加 MCP Server 即可直接使用。

注意:Tool 的启用/禁用状态颜色不明显,没调用时检查下是不是被关掉了。

# 什么时候用 MCP

  • 需要跨进程/跨语言 → 用 MCP,比如 Cursor、其他 Agent 想调用你的 Tool
  • 同一个进程内 → 直接写普通 Tool,少了进程通信的开销

现在有很多现成的 MCP Server 可以直接用,不用每个都自己写。

编辑 (opens new window)
上次更新: 2026/06/09, 01:51:57
实现mini-cursor
RAG-把文档向量化实现语义搜索

← 实现mini-cursor RAG-把文档向量化实现语义搜索→

最近更新
01
README
06-09
02
RAG-把文档向量化实现语义搜索
06-09
03
实现mini-cursor
06-08
更多文章>
Power by vuepress | Copyright © 2015-2026 神族九帝
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×