Files
langchain/libs/langchain_v1
Josiah CoadandClaude Opus 5 4dd6f7101a feat(langchain): MCP Apps (SEP-1865) tool visibility in langchain.mcp
An MCP App is a tool that returns a user interface instead of text: it carries
a `ui://` resource in its `_meta.ui`, a host renders that in a sandboxed frame
beside the conversation, and the tool's result goes into it. The person moves
a slider and approves rather than reading a table and typing "yes, do that."

That makes a tool's audience part of its definition, and it puts one
obligation on anyone building an agent against such a server: a tool marked
`visibility: ["app"]` belongs to the app and MUST be kept out of the model's
tool list. The app exists so a person decides, and a model that can call the
submit tool can skip the person.

`langchain.mcp.apps` is that, and only that:

    async with Client(url, extensions=[MCP_APPS_EXTENSION]) as client:
        async with MCPAdapter(client) as adapter:
            tools = filter_model_visible_tools(await adapter.list_tools())

Two details are easy to get backwards, and both fail silently rather than
loudly, which is why they belong in a library and not in every host:

ABSENT `visibility` MEANS BOTH AUDIENCES. It is absent on every tool on every
server that has never heard of this extension. Treating absent as "neither"
costs such a server half its tools, with nothing raised.

`_meta` MOVES WHEN A TOOL IS ADAPTED. An MCP `Tool` carries it on `.meta`; the
same tool after `MCPAdapter` keeps it under `metadata["mcp"]["tool"]["_meta"]`.
A host filters after adapting, so reading only the first shape hands the model
every app-only tool on the server. There is a test for exactly that path.

`MCP_APPS_EXTENSION` is what a host advertises during `initialize`. It is inert
against a server that always sends `_meta.ui` and load-bearing against one that
gates on the capability: the `ext-apps` SDK ships `getUiCapability` for that,
and its documented example registers a text-only tool for a client that did not
advertise, leaving a host with working tools and no apps.

Rendering the view, reading the `ui://` resource and proxying a view's own
`tools/call` are the browser-facing half and are not here.

13 tests; 91 pass in `tests/unit_tests/mcp`. ruff, format and mypy clean.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-21 16:36:37 -05:00
..

🦜️🔗 LangChain

PyPI - Version PyPI - License PyPI - Downloads Twitter

Looking for the JS/TS version? Check out LangChain.js.

To help you ship LangChain apps to production faster, check out LangSmith. LangSmith is a unified developer platform for building, testing, and monitoring LLM applications.

Quick Install

uv add langchain

🤔 What is this?

LangChain is the easiest way to start building agents and applications powered by LLMs. With under 10 lines of code, you can connect to OpenAI, Anthropic, Google, and more. LangChain provides a pre-built agent architecture and model integrations to help you get started quickly and seamlessly incorporate LLMs into your agents and applications.

We recommend you use LangChain if you want to quickly build agents and autonomous applications. Use LangGraph, our low-level agent orchestration framework and runtime, when you have more advanced needs that require a combination of deterministic and agentic workflows, heavy customization, and carefully controlled latency.

LangChain agents are built on top of LangGraph in order to provide durable execution, streaming, human-in-the-loop, persistence, and more. (You do not need to know LangGraph for basic LangChain agent usage.)

📖 Documentation

For full documentation, see the API reference. For conceptual guides, tutorials, and examples on using LangChain, see the LangChain Docs. You can also chat with the docs using Chat LangChain.

📕 Releases & Versioning

See our Releases and Versioning policies.

💁 Contributing

As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.

For detailed information on how to contribute, see the Contributing Guide.

Resources

  • LangChain Academy — comprehensive, free courses on LangChain libraries and products, made by the LangChain team
  • Code of Conduct — community guidelines and standards