Podłączanie LangChain i LangGraph

Serwer MCP footage.one jako źródło narzędzi dla agentów LangChain i LangGraph w Pythonie i JavaScript.

Przegląd

LangChain obsługuje serwery MCP od wersji 0.3.20 (Python) i @langchain/mcp-adapters (JS). Narzędzia są ładowane w czasie działania z serwera MCP i wbudowywane w agenta.

Przepływ uwierzytelniania

Serwer MCP footage.one akceptuje aktualnie wyłącznie OAuth2. Potrzebujesz więc zarejestrowanego klienta OAuth (zob. OAuth2 dla aplikacji zewnętrznych) i musisz wbudować access token z przepływu uwierzytelniania w adapter MCP.

Skrypty headless bez interakcji użytkownika nie mogą aktualnie korzystać z endpointu MCP — uwierzytelnianie Bearer token na MCP jest w przygotowaniu, ale jeszcze niedostępne. Dla czystych wywołań serwer-do-serwera używaj REST API bezpośrednio z tokenem API.

Python — langchain-mcp-adapters

Instalacja:

pip install langchain-mcp-adapters langgraph langchain-anthropic

Konfiguracja z access tokenem OAuth (z własnego przepływu OAuth):

from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
from langchain_anthropic import ChatAnthropic

ACCESS_TOKEN = "..."  # z przepływu OAuth

client = MultiServerMCPClient({
    "footage-one": {
        "transport": "streamable_http",
        "url": "https://mcp.footage.one/mcp",
        "headers": {"Authorization": f"Bearer {ACCESS_TOKEN}"},
    }
})

tools = await client.get_tools()
agent = create_react_agent(ChatAnthropic(model="claude-sonnet-4-6"), tools)

result = await agent.ainvoke({
    "messages": [("user", "Wyszukaj tytuły zasobów zawierające 'Berlin' i wypisz je z ich albumami.")]
})
print(result["messages"][-1].content)

JavaScript — @langchain/mcp-adapters

bun add @langchain/mcp-adapters @langchain/langgraph @langchain/anthropic
import { MultiServerMCPClient } from '@langchain/mcp-adapters';
import { createReactAgent } from '@langchain/langgraph/prebuilt';
import { ChatAnthropic } from '@langchain/anthropic';

const accessToken = '...'; // z przepływu OAuth

const client = new MultiServerMCPClient({
  'footage-one': {
    transport: 'streamable_http',
    url: 'https://mcp.footage.one/mcp',
    headers: { Authorization: `Bearer ${accessToken}` },
  },
});

const tools = await client.getTools();
const agent = createReactAgent({
  llm: new ChatAnthropic({ model: 'claude-sonnet-4-6' }),
  tools,
});

const result = await agent.invoke({
  messages: [{ role: 'user', content: 'Wypisz pięć ostatnich albumów.' }],
});
console.log(result.messages.at(-1)?.content);

Następne kroki