npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@langchain/mcp-adapters

v2.0.0

Published

LangChain.js adapters for Model Context Protocol (MCP)

Downloads

1,112,969

Readme

LangChain.js MCP Adapters

npm version License: MIT

Give your LangChain agents access to tools from Model Context Protocol (MCP) servers. @langchain/mcp-adapters manages connections and converts MCP tools and results into LangChain formats, ready to use with createAgent or a custom LangGraph workflow.

  • Connect your tools: discover tools from multiple local or remote servers.
  • Control tool execution: authenticate connections, customize arguments and results with hooks, and receive progress updates.
  • Choose what the model sees: use text and multimodal results as model input, or keep outputs in artifacts for your application to process.
  • Ask for user input: pause an agent when a modern MCP server requests a form response or a URL visit, then resume with the user's response.

Read the MCP guide for concepts, configuration, and advanced usage.

Install

Requires Node.js 20.10 or later. Install the adapter and its LangChain peers:

npm install @langchain/mcp-adapters @langchain/core @langchain/langgraph

The adapter requires @langchain/core ^1.2.6 and @langchain/langgraph ^1.4.13. It includes the MCP SDK client; install the SDK separately only if your application imports it directly.

Quickstart: give an agent MCP tools

This example connects an agent to the public LangChain docs MCP server so it can look up documentation. You do not need to run a server or configure authentication for this MCP endpoint.

Install LangChain and the model integration used below:

npm install langchain @langchain/openai

Set OPENAI_API_KEY in your environment, then run:

import { createAgent } from "langchain";
import { ChatOpenAI } from "@langchain/openai";
import { MCPAdapter } from "@langchain/mcp-adapters";

const adapter = new MCPAdapter({
  servers: {
    docs: { url: "https://docs.langchain.com/mcp" },
  },
});

try {
  const tools = await adapter.listTools();
  const agent = createAgent({
    model: new ChatOpenAI({ model: "gpt-4.1-mini" }),
    tools,
  });

  const result = await agent.invoke({
    messages: [
      {
        role: "user",
        content: "How do I add short-term memory to a LangChain agent?",
      },
    ],
  });
  console.log(result.messages.at(-1)?.content);
} finally {
  await adapter.close();
}

Keep the adapter open while your agent uses its tools, then call close() when finished. Connections open as needed. listTools() returns executable LangChain tools, which you can also invoke directly without a model or use in a custom LangGraph workflow.

Tools that request user input

MCP tools can ask users to complete a form or visit a URL before continuing. For modern MCP servers, the adapter pauses the agent through a LangGraph interrupt so your application can collect a response and resume the run.

Configure a checkpointer for these workflows. Tools that do not request input can run without one. See the tools guide for handling requests and resuming execution.

Documentation and examples

| I want to… | Start here | | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | | Connect local or remote servers, manage connections, or select tools | Connections | | Authenticate with tokens or OAuth | Authentication | | Customize tool calls, handle results, or collect user input | Tools | | Modify tool arguments and results | Hooks example | | Work with multimodal content and artifacts | Content example | | Receive server messages and tool progress | Notifications example | | Run a local example without model credentials | Example setup and walkthroughs |

If you already manage an MCP SDK client, use loadMcpTools() to adapt its tools without handing connection management to MCPAdapter.

Upgrading from 1.x

Use MCPAdapter, { servers: { ... } }, and listTools() for new code. MultiServerMCPClient, mcpServers, and getTools() remain available as deprecated compatibility APIs.

Version 2 also changes tool-name defaults, configuration, connection behavior, and tool results. Review the migration guide before upgrading, including any approval rules that refer to tool names.

Acknowledgements

Big thanks to @vrknetha, @knacklabs for the initial implementation!

Contributing

Contributions are welcome! See the contributing guidelines.

License

MIT