Token导航 LogoToken导航TokenDH.com
Langchaingo MCP Adapter logo
AI代理未说明官方级别未说明来源级核验

Langchaingo MCP Adapter

MCP Server

将模型上下文协议(MCP)工具集成到LangChainGo中,作为可调用工具,使您能够构建具有强大工具使用能力的代理。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
GoGo语言工具集成

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

leondevpt

提供方

leondevpt

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

LangChainGo MCP适配器

英语 | 简体中文

将模型上下文协议(MCP)中的工具集成到 LangChainGo 作为可调用工具,使您能够构建具有强大工具使用功能的代理。

概述

此适配器桥接MCP和LangChainGo:

  • 从MCP服务器中发现可用工具并将其转换为 langchaingo/tools.Tool.
  • 提供了一个统一的接口,用于在LangChainGo代理/链中调用这些工具。
  • 添加了调用超时和输入模式公开等便利功能。

核心API adapter.go:

  • New(session, opts...):从活动MCP创建适配器 ClientSession.
  • Tools(ctx):从MCP获取工具并将其转换为LangChainGo工具的一部分。
  • 每个工具包括 Description() 带有附加的输入模式和 Call(ctx, input) 哪里 input 是一个JSON字符串。

特性

  • 通过MCP发现和转换工具 ListTools.
  • LangChainGo代理的统一调用条目。
  • 使用超时控制 WithToolTimeout(d).
  • 通过工具输入模式可见性 Description().
  • 支持多种传输方式: Stdio/CommandTransport 对于本地服务器, StreamableClientTransport 用于远程HTTP流媒体MCP。
  • 准备运行示例: example/serverexample/agent.

安装

要求:转到1.21+。

安装:

go get github.com/leondevpt/langchaingo-mcp-adapter
go mod tidy

用法

下面显示了如何连接到MCP服务器、获取工具并在LangChainGo代理中使用它们(简化自 example/agent):

package main

import (
    "context"
    "encoding/json"
    "fmt"
    "log"
    "os"
    "os/exec"
    "time"

    mcpadapter "github.com/leondevpt/langchaingo-mcp-adapter"
    "github.com/modelcontextprotocol/go-sdk/mcp"
    "github.com/tmc/langchaingo/agents"
    "github.com/tmc/langchaingo/chains"
    "github.com/tmc/langchaingo/llms/openai"
    "github.com/tmc/langchaingo/tools"
)

func main() {
    ctx := context.Background()

    // Initialize LLM (OpenAI example)
    llm, err := openai.New(
        openai.WithToken(os.Getenv("OPENAI_API_KEY")),
        openai.WithBaseURL(os.Getenv("OPENAI_API_BASE_URL")),
        openai.WithModel(os.Getenv("OPENAI_MODEL")),
    )
    if err != nil { log.Fatal(err) }

    // Connect to a local MCP server (start example server via command)
    client := mcp.NewClient(&mcp.Implementation{Name: "mcp-client", Version: "v1.0.0"}, nil)
    transport := &mcp.CommandTransport{Command: exec.Command("../server/server")}
    session, err := client.Connect(ctx, transport, nil)
    if err != nil { log.Fatal(err) }
    defer session.Close()

    // Create adapter and fetch tools
    adapter := mcpadapter.New(session, mcpadapter.WithToolTimeout(30*time.Second))
    tools, err := adapter.Tools(ctx)
    if err != nil { log.Fatal(err) }

    // Verify discovery by directly calling the "greet" tool
    var greetTool tools.Tool
    for _, t := range tools {
        if t.Name() == "greet" { greetTool = t; break }
    }
    name := "leon" // dynamic variable, can be from env or user input
    payload, _ := json.Marshal(map[string]string{"name": name})
    if greetTool != nil {
        out, err := greetTool.Call(ctx, string(payload))
        if err != nil { log.Fatal(err) }
        fmt.Println("greet tool output:", out)
    }

    // Use tools in a LangChainGo Agent (require Final Answer prefix)
    agent := agents.NewOneShotAgent(llm, tools, agents.WithMaxIterations(5))
    executor := agents.NewExecutor(agent)

    prompt := fmt.Sprintf("Must call tool greet with params %s. Return only the tool output prefixed by 'Final Answer:'", string(payload))
    result, err := chains.Run(ctx, executor, prompt)
    if err != nil { log.Fatal(err) }
    fmt.Println(result)
}

要连接到远程(HTTP流)MCP服务器,请交换传输:

transport := &mcp.StreamableClientTransport{Endpoint: "https://mcp.example.com/mcp?key=YOUR_KEY"}
session, err := client.Connect(ctx, transport, nil)

例子

此回购提供了两个示例:

  • example/server:一个最小的MCP服务器(提供 greet).
  • example/agent:显示了如何启动/连接到MCP服务器以及在代理中调用工具。

运行Agent示例(它将通过命令传输构建并启动示例服务器):

export OPENAI_API_KEY=your_key
export OPENAI_API_BASE_URL=https://api.openai.com/v1
export OPENAI_MODEL=gpt-4o-mini

go run ./example/agent

独立运行示例服务器:

go run ./example/server

许可证

MIT许可证

版权所有(c)2024 leondevpt

特此免费向任何获得副本的人授予许可 本软件和相关文档文件(“软件”),以处理 在软件中不受限制,包括但不限于权利 使用、复制、修改、合并、发布、分发、再许可和/或销售 软件的副本,并允许软件的接收者 根据以下条件提供:

上述版权声明和本许可声明应包含在所有 软件的副本或实质性部分。

软件按“原样”提供,不提供任何形式的明示或明示担保 隐含的,包括但不限于适销性保证, 适用于特定目的且不造成伤害。在任何情况下 作者或版权持有人对任何索赔、损害赔偿或其他 因以下原因产生的责任,无论是在合同、侵权或其他诉讼中, 出于或与软件、使用或其他交易有关 软件。

目录标签

目录标签

GoGo语言工具集成LangChainGo本地部署MCP代理构建

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP