Skip to main content
Glama

@broswwit/thatch

중앙 HTTP MCP 서버이자 Elysia 플러그인입니다. 여러 Claude Code 세션이 URL로 하나의 서버에 연결되며, 서버는 각 세션을 이름으로 식별하고 라이브 세션에 메시지를 푸시할 수 있습니다.

import { Elysia } from "elysia";
import { thatch, z } from "@brooswit/thatch";

const { plugin, mcp } = thatch({
  identify: (req) => req.headers.get("x-connection-name"),   // names the connection; null rejects it
  tools: {
    status: { description: "Fleet status", input: {}, handler: (_a, c) => `hello ${c.name}` },
  },
});

const app = new Elysia().use(plugin).listen(3000);

// push a message into a named session — from anywhere
const d = await mcp.send("epic-kan-39", { content: "PR #296 approved", meta: { key: "KAN-39" } });
//  d: { claim: "C2" }  — a connected session's stream took it
//     { claim: "refused", reason: "not-connected" | "no-channel-stream" | "bad-meta" | "closed-mid-send" }

Claude Code는 다음과 같이 연결합니다.

claude mcp add --transport http fleet http://localhost:3000/mcp --header "x-connection-name: epic-kan-39"

전달 유형이 void가 아닌 이유

세션에 메시지를 푸시하는 작업은 MCP SDK가 숨기는 방식으로 실패할 수 있습니다. 연결은 등록되었지만 알림 스트림이 아직 연결되지 않은 상태라면, SDK는 프레임을 조용히 버리기 удов입니다. thatch는 이러한 상화을 (no-channel-stream)로 소리적으로 거부하며, 실제로 프레임을 운반할 스트림이 있을 때만 C2를 주장합니다. C3 (대화 기록에 표현됨음) 와 C4 (모델이 읽었음)은 관찰할 수 없기 때문에, 어떤 API도 이들을 관찰할 수 있다고 주장하지 않습니다.

Related MCP server: agent-network

API

  • thatch(options){ plugin, mcp }plugin은 엔드포인트를 마운트하며(기본값 /mcp), mcp는 핸들입니다.

  • options: identify(req), onDuplicate ("replace" 기본값 | "reject"), history (기본값 50), tools, path, serverInfo.

  • mcp.connections: list(), get(name), has(name), count(), waitFor(name, { timeoutMs }).

  • mcp.send(name, frame), mcp.sendMany(names, frame), mcp.sendAll(frame, { where? }).

  • mcp.on("connect" | "disconnect" | "send", handler).

  • Connectionname, connectedAt, lastSeenAt, meta, channelReady, history 정보를 담습니다.

  • 테스트를 위해 import {FakeConnection } from "@brooswit/thatch/testing"를 사용합니다.

계층

protocol (프레임, 전송, 메서드 — 순수 함수) · registry (이름이 있는 연결 + 히스토리) · channnel (전송, 안전한 주장) · plugin (Elysia 마운트, 연결당 하나의 MCP 서버) · testing.

스크립트

bun run check        # generate load tests + typecheck + unit + load + coverage ≥90%
bun test test/unit
MCP_LIVE=1 bun test test/live   # against a real Claude Code session (opt-in)
F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • An authenticated remote MCP server for user-owned devices and one-shot capability invocation.

  • Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).

  • Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/brooswit/thatch'

If you have feedback or need assistance with the MCP directory API, please join our Discord server