@galdor/mcp
v0.3.1
Published
Model Context Protocol (MCP) client and server for galdor-bun — JSON-RPC 2.0 over stdio, SSE and Streamable HTTP.
Readme
@galdor/mcp
A Model Context Protocol (MCP) client and
server for galdor — JSON-RPC 2.0 over
stdio, SSE, and Streamable HTTP. Expose galdor tools to any MCP
client, or consume a remote MCP server's tools as a galdor Registry.
Protocol version 2024-11-05. The server runs in strict mode with panic
recovery and bounded concurrency; the client multiplexes requests by id with a
per-call timeout. Includes an anti-DNS-rebinding origin guard, plus an in-memory
transport and an SSE client transport for tests.
Install
bun add @galdor/mcp # or: npm install @galdor/mcpServe tools over stdio
import { z } from "zod";
import { defineTool, Registry } from "@galdor/core/tool";
import { Server, StdioTransport } from "@galdor/mcp";
const echo = defineTool({
name: "echo",
description: "Echo the given text back.",
input: z.object({ text: z.string() }),
handler: ({ text }) => ({ text }),
});
const server = new Server(new Registry(echo), { name: "my-mcp", version: "1.0.0" });
await server.serve(new StdioTransport(process.stdin, process.stdout));Serve over Streamable HTTP instead with serveHttp(port, handler).
Consume a remote MCP server
import { Client, StreamableHTTPClientTransport } from "@galdor/mcp";
const client = new Client(StreamableHTTPClientTransport.create("http://localhost:8000/mcp"), {
info: { name: "my-client", version: "1.0.0" },
});
await client.initialize();
const tools = await client.listTools();
const result = await client.call("echo", { text: "hi" });
client.close();StreamableHTTPClientTransport.create(url, { fetch }) accepts a custom fetch
for auth, proxies, or retries.
License
Apache-2.0
