From 198d5e6dddc1207a44128cfc710910d7a76a5813 Mon Sep 17 00:00:00 2001 From: Fabien Bernard Date: Mon, 18 May 2026 13:53:48 +0200 Subject: [PATCH] Fix MCP example --- packages/effect/MCP.md | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/packages/effect/MCP.md b/packages/effect/MCP.md index f44c7e5d01..ff30493f8c 100644 --- a/packages/effect/MCP.md +++ b/packages/effect/MCP.md @@ -236,25 +236,23 @@ is `"no"`. Here's a complete, copy/pastable MCP server example that combines all the concepts: ```typescript -import { NodeRuntime, NodeSink, NodeStream } from "@effect/platform-node" -import { Effect, Layer } from "effect" -import { Logger } from "effect" -import { Schema } from "effect/schema" -import { McpServer, Tool, Toolkit } from "effect/unstable/ai" +import { NodeRuntime, NodeStdio } from "@effect/platform-node" +import { Effect, Layer, Logger, Schema } from "effect" +import { McpSchema, McpServer, Tool, Toolkit } from "effect/unstable/ai" // Define tools const GreetTool = Tool.make("GreetTool", { description: "Generate a greeting message", - parameters: { + parameters: Schema.Struct({ name: Schema.String, style: Schema.Union([Schema.Literal("formal"), Schema.Literal("casual")]) - }, + }), success: Schema.String }) const CalculatorTool = Tool.make("CalculatorTool", { description: "Perform basic arithmetic operations", - parameters: { + parameters: Schema.Struct({ operation: Schema.Union([ Schema.Literal("add"), Schema.Literal("subtract"), @@ -263,7 +261,7 @@ const CalculatorTool = Tool.make("CalculatorTool", { ]), a: Schema.Number, b: Schema.Number - }, + }), success: Schema.Number }) @@ -312,7 +310,7 @@ const AnalysisPrompt = McpServer.prompt({ }, completion: { dataType: () => Effect.succeed(["sales", "users", "metrics"]), - focus: () => Effect.succeed(["summary", "details"]) + focus: () => Effect.succeed(["summary" as const, "details" as const]) }, content: ({ dataType, focus }) => Effect.succeed( @@ -359,12 +357,11 @@ const ServerLayer = Layer.mergeAll( Layer.provide( McpServer.layerStdio({ name: "Demo MCP Server", - version: "1.0.0", - stdin: NodeStream.stdin, - stdout: NodeSink.stdout + version: "1.0.0" }) ), - Layer.provide(Logger.layer([Logger.consolePretty({ stderr: true })])) + Layer.provide(NodeStdio.layer), + Layer.provide(Layer.succeed(Logger.LogToStderr)(true)) ) // Run the server