Langgraph开发调用mcp的agent

0x00 TLDR;

使用 Langgraph 进行agent 开发,涉及一个最简单的mcp 服务端

0x01 准备

  • deepseek api key
  • python3.12
  • 依赖安装
pip install langgraph langchain-core langchain-openai langchain-mcp-adapters mcp

0x02 MCP 服务端&Agent实现

  • math_server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Math")


@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b


@mcp.tool()
def multiply(a: int, b: int) -> int:
    """Multiply two numbers"""
    return a * b


if __name__ == '__main__':
    # langgraph通过子进程方式连接
    mcp.run(transport="stdio")
  • main.py
import asyncio
import os
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent


async def main():
    # 1) 注册 MCP服务器(支持多个
    client = MultiServerMCPClient({
        "math": {
            "command": "python",
            "args": ["./math_server.py"],
            "transport": "stdio",
        }
    })

    # 2) 自动发现 MCP工具
    tools = await client.get_tools()

    # 3) 选择模型并绑定工具, 使用 Deepseek
    llm = ChatOpenAI(
        base_url=os.environ.get('DEEPSEEK_BASE_URL'),
        api_key=os.environ.get('DEEPSEEK_API_KEY'),
        model='deepseek-chat'
    )
    agent = create_react_agent(llm, tools)

    # 4) 调用:Agent自主决定使用MCP工具
    res = await agent.ainvoke({"messages": [{"role": "user", "content": "(3+5)*12 等于多少?"}]})
    for msg in res['messages']:
        print(msg.content)


if __name__ == '__main__':
    asyncio.run(main())

0x03 运行&验证

python main.py

打印结果:

(3+5)*12 等于多少?
我来帮你计算 (3+5)*12 的值。

首先计算括号内的加法:3 + 5 = 8
然后计算乘法:8 * 12 = 96

所以 (3+5)*12 = 96

让我用工具来验证一下:
8
96
计算结果确认:(3+5)*12 = 96

达到预期~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容