Eino

by cloudwego

Community Developer Tools 13k likes

Eino is CloudWeGo's Go framework for LLM apps; its MCP component wraps any MCP server's tools and prompts as native Eino Tool and ChatTemplate objects.

Add the Go module

go get github.com/cloudwego/eino-ext/components/tool/mcp@latest

Source: https://github.com/cloudwego/eino-ext

About

Eino is CloudWeGo's (ByteDance's open-source org) framework for building LLM-powered applications in Go, covering orchestration graphs, chat templates, and tool calling. The MCP integration lives in the separate eino-ext repository and works in one direction: it lets an Eino application consume an existing MCP server's tools, not the other way around. You connect a client over stdio or SSE, call GetTools against that connection, and get back Eino Tool objects that slot straight into a graph or agent alongside your other tools.

There's a matching integration for prompts: an MCP server's prompt templates can be pulled in as Eino ChatTemplate objects the same way. Both build on the mark3labs/mcp-go SDK for the underlying protocol handling, so Eino itself only has to implement the adapter layer between that SDK's client and its own Tool and ChatTemplate interfaces.

Key features

  • Wraps any MCP server's tools as native Eino Tool / InvokableTool objects
  • Wraps MCP prompt templates as Eino ChatTemplate objects
  • Supports both stdio and SSE MCP client transports
  • Built on the mark3labs/mcp-go SDK for protocol handling
  • Lets an Eino graph mix MCP-sourced tools with locally defined Go tools

Use cases

  • Adding an existing MCP server's tools to a Go-based LLM agent without rewriting them
  • Reusing MCP prompt templates inside an Eino chat pipeline
  • Building a Go agent that talks to multiple MCP servers as unified tool sources
  • Prototyping an MCP client integration in Go using a documented SDK wrapper

Available tools

mcpp.GetTools

Fetches the tool list from a connected MCP server and returns them as Eino-compatible tools.

client.NewSSEMCPClient

Creates an MCP client connection over Server-Sent Events.

client.NewStdioMCPClient

Creates an MCP client connection over stdio for local MCP servers.

MCP ChatTemplate adapter

Pulls an MCP server's prompt templates in as Eino ChatTemplate objects.

Frequently asked questions

Can Eino itself act as an MCP server?

The tool/mcp component covers consuming MCP servers as a client; the documentation describes the client-side integration, not Eino exposing its own tools as an MCP server.

Do I need the mcp-go SDK separately?

No. It's a dependency of the eino-ext MCP component, so go get pulls it in automatically.