Описание
# Hermes MCP [](https://hex.pm/packages/hermes_mcp) [](https://hexdocs.pm/hermes_mcp) [](https://github.com/cloudwalk/hermes-mcp/actions/workflows/ci.yml) [](https://hex.pm/packages/hermes_mcp) A high-performance Model Context Protocol (MCP) implementation in Elixir. ## Overview Hermes MCP is a comprehensive Elixir SDK for the [Model Context Protocol](https://spec.modelcontextprotocol.io/), providing complete client and server implementations with Elixir's exceptional concurrency model and fault tolerance. ## Installation ```elixir def deps do [ {:hermes_mcp, "~> 0.14.1"} # x-release-please-version ] end ``` ## Quick Start ### Server ```elixir # Define a server with tools capabilities defmodule MyApp.MCPServer do use Hermes.Server, name: "My Server", version: "1.0.0", capabilities: [:tools] @impl true # this callback will be called when the # MCP initialize lifecycle completes def init(_client_info, frame) do {:ok,frame |> assign(counter: 0) |> register_tool("echo", input_schema: %{ text: {:required, :string, max: 150, description: "the text to be echoed"} }, annotations: %{read_only: true}, description: "echoes everything the user says to the LLM") } end @impl true def handle_tool("echo", %{text: text}, frame) do Logger.info("This tool was called #{frame.assigns.counter + 1}") {:reply, text, assign(frame, counter: frame.assigns.counter + 1)} end end # Add to your application supervisor children = [ Hermes.Server.Registry, {MyApp.MCPServer, transport: :streamable_http} ] # Add to your Plug/Phoenix router (if using HTTP) forward "/mcp", to: Hermes.Server.Transport.StreamableHTTP.Plug, init_opts: [server: MyApp.MCPServer] ``` Now you can achieve your MCP server on `http://localhost:<port>/mcp` ### Client ```elixir # Define a client module defmodule MyApp.MCPClient do use Hermes.Client, name: "MyApp", version: "1.0.0", protocol_version: "2025-03-26" end # Add to your application supervisor children = [ {MyApp.MCPClient, transport: {:streamable_http, base_url: "http://localhost:4000"}} ] # Use the client {:ok, result} = MyApp.MCPClient.call_tool("echo", %{text: "this will be echoed!"}) ``` ## Why Hermes? Named after Hermes, the Greek god of boundaries and communication, this library facilitates seamless interaction between Large Language Models and external tools - serving as a messenger between AI and data sources. ## Documentation For detailed guides and examples, visit the [official documentation](https://hexdocs.pm/hermes_mcp). ## Examples We have build some elixir implementation examples using `plug` based and `phoenix` apps: 1. [upcase-server](/priv/dev/upcase/README.md): `plug` based MCP server using streamable_http 2. [echo-elixir](/priv/dev/echo-elixir/README.md): `phoenix` based MCP server using sse 3. [ascii-server](/priv/dev/ascii/README.md): `phoenix_live_view` based MCP server using streamable_http and UI ## License MIT License. See [LICENSE](./LICENSE) for details.
Отзывы (0)
Пока нет отзывов. Будьте первым!
Статистика
Информация
Технологии
Похожие серверы
mcp-chain-of-draft-server
Chain of Draft Server is a powerful AI-driven tool that helps developers make better decisions through systematic, iterative refinement of thoughts and designs. It integrates seamlessly with popular AI agents and provides a structured approach to reasoning, API design, architecture decisions, code reviews, and implementation planning.
mcp-use-ts
mcp-use is the framework for MCP with the best DX - Build AI agents, create MCP servers with UI widgets, and debug with built-in inspector. Includes client SDK, server SDK, React hooks, and powerful dev tools.
mesh
Define and compose secure MCPs in TypeScript. Generate AI workflows and agents with React + Tailwind UI. Deploy anywhere.
rhinomcp
RhinoMCP connects Rhino 3D to AI Agent through the Model Context Protocol (MCP)