LangChain & LangGraph anbinden
footage.one MCP-Server als Tool-Quelle für LangChain- und LangGraph-Agenten in Python und JavaScript.
Überblick
LangChain unterstützt MCP-Server seit Version 0.3.20 (Python) bzw. @langchain/mcp-adapters (JS). Tools werden zur Laufzeit aus dem MCP-Server geladen und in den Agenten eingebunden.
Auth-Flow
Der footage.one MCP-Server akzeptiert aktuell ausschließlich OAuth2. Du brauchst also einen registrierten OAuth-Client (siehe OAuth2 für Drittapps) und musst den Access-Token aus dem Auth-Flow in den MCP-Adapter einbauen.
Headless-Skripte ohne User-Interaktion können aktuell nicht den MCP-Endpoint nutzen — Bearer-Token-Auth am MCP ist in Arbeit, aber noch nicht verfügbar. Für reine Server-zu-Server-Aufrufe nutze die REST-API direkt mit einem API-Token.
Python — langchain-mcp-adapters
Install:
pip install langchain-mcp-adapters langgraph langchain-anthropic
Setup mit OAuth-Access-Token (aus deinem eigenen OAuth-Flow):
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
from langchain_anthropic import ChatAnthropic
ACCESS_TOKEN = "..." # aus OAuth-Flow
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", "Suche nach Asset-Titeln mit 'Berlin' und liste sie mit ihren Alben.")]
})
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 = '...'; // aus OAuth-Flow
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: 'Liste die letzten fünf Alben.' }],
});
console.log(result.messages.at(-1)?.content);