Edison Watch
นักพัฒนา

LangChain / LangGraph

เชื่อมต่อ agent ของ LangChain หรือ LangGraph (Python หรือ JS) กับ Edison Watch โดยใช้ langchain-mcp-adapters

LangChain และ LangGraph เชื่อมต่อกับ Edison ผ่าน MultiServerMCPClient ของ langchain-mcp-adapters ซึ่งเปลี่ยน MCP tools ให้เป็น LangChain tools แบบ native connection URL ของคุณมี API key อยู่แล้ว ดังนั้นไม่ต้องใช้ auth header

pip install langchain-mcp-adapters langgraph "langchain[openai]"
import asyncio
import os

from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.agents import create_agent

async def main() -> None:
    client = MultiServerMCPClient({
        "edison": {
            "transport": "streamable_http",
            "url": os.environ["EDISON_MCP_URL"],
        }
    })
    tools = await client.get_tools()
    agent = create_agent("openai:gpt-5.6-luna", tools)
    result = await agent.ainvoke({"messages": "List my available tools."})
    print(result["messages"][-1].content)

asyncio.run(main())

ตั้งค่า EDISON_MCP_URL เป็น connection URL ของคุณ เช่น https://mcp.edison.watch/mcp/<your-api-key>/?client=langchain

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

รายการ server ที่มีเพียง url จะใช้ Streamable HTTP เป็นค่าเริ่มต้น (พร้อม SSE fallback อัตโนมัติ) ปิดการใช้งาน fallback เพื่อล็อคไปยัง transport ที่ Edison ให้บริการ:

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

const client = new MultiServerMCPClient({
  mcpServers: {
    edison: {
      url: process.env.EDISON_MCP_URL!,
      automaticSSEFallback: false,
    },
  },
});

const tools = await client.getTools();
const agent = createAgent({ model: new ChatOpenAI({ model: "gpt-5.6-luna" }), tools });

const res = await agent.invoke({
  messages: [{ role: "user", content: "List my available tools." }],
});
console.log(res);
await client.close();

ทางเลือก: header สำหรับ encrypted secrets

สำหรับ server ที่มี ความลับที่เข้ารหัสแบบ zero-knowledge ให้เพิ่มรายการ headers (เฉพาะ transport แบบ http/sse เท่านั้นที่รองรับ runtime headers):

"edison": {
    "transport": "streamable_http",
    "url": os.environ["EDISON_MCP_URL"],
    "headers": {"x-edison-secret-key": os.environ["EDISON_SECRET_KEY"]},
}
edison: {
  url: process.env.EDISON_MCP_URL!,
  automaticSSEFallback: false,
  headers: { "x-edison-secret-key": process.env.EDISON_SECRET_KEY! },
}