LangChain + Nextmail

An inboxfor LangChain.

Agents built with LangChain read, reply and send from the addresses you approve. They load the Nextmail tools over MCP, with a sign-in you give once.

Open LangChain
Connect LangChain
import asyncio from langchain.agents import create_agentfrom langchain.mcp import MCPAdapter SERVERS = {    "mcpServers": {        "nextmail": {"command": "npx", "args": ["-y", "@nextmail/cli", "mcp", "serve"]}    }}TOOLS = {"whoAmI", "listThreads", "getThread"}  async def main():    async with MCPAdapter(SERVERS) as adapter:        tools = [tool for tool in await adapter.list_tools() if tool.name in TOOLS]        agent = create_agent("claude-sonnet-5", tools)        result = await agent.ainvoke(            {"messages": [{"role": "user", "content": "Summarise my unread mail."}]}        )        print(result["messages"][-1].text)  asyncio.run(main())

LangChain's MCP adapter starts the local bridge and hands the agent only the tools it needs. The guide also covers TypeScript.

Three steps.
Then it works on its own.

  1. 01

    Install the adapter

    Run pip install "langchain[mcp]>=1.4" langchain-anthropic in your project.

  2. 02

    Sign in once

    Run npx @nextmail/cli login and approve in your browser what the agent may reach. On a server, add --no-browser and paste the code back.

  3. 03

    Load the tools

    LangChain starts the bridge, npx -y @nextmail/cli mcp serve, and gets the tools your approval allows. Hand the agent only the ones it needs.

What your LangChain agent can do with it.
Through one connection.

$ nextmail temp new

Tasks for your LangChain agent.
In plain words.

Each prompt shows the tools it is likely to call.

  • Summarise my unread mail at [email protected] and draft replies. Don't send them yet.

    • listThreads
    • getThread
    • createDraft
  • Answer Ada's refund question in her thread, then file it under refunds.

    • getThread
    • replyToEmail
    • modifyLabels
  • Find the invoice Jonas sent last month and sum up the thread.

    • listThreads
    • getThreadSummary
  • Add Noor Haddad to my contacts and to the Beta audience.

    • createContact
    • addContactToAudience

You approve it.
Like any other app.

When the client signs in, you pick the workspace, what it may do, which addresses it reaches and for how long. Account → Connected apps changes or removes it later.

Your role is the ceiling
An app never holds a permission you lack, and when your role loses one, the app loses it on its next call.
Some things are never granted
No app can create or rotate API keys, open billing or manage the workspace, whatever you tick.
Risky changes wait for you
Adding a webhook, writing a rule, changing roles or removing a domain needs your verification code, or a 60-minute allowance you switch on for that app.

Asked first.
Answered plainly.

Give it an address.
Watch it work.

MCP, the API and the command line come with every plan, the free one included. Connect a client and approve exactly what it reaches.

claude mcp add --transport http nextmail https://api.nextmail.sh/mcp