harness-mcp
harness-mcp
Ein meinungsstarkes TypeScript-Boilerplate für die Erstellung von MCP-Servern mit Fokus auf Harness Engineering.
Harness Engineering ist die Disziplin, das Gerüst um einen LLM-Agenten herum zu entwerfen – Tools, Beschreibungen, Fehler, Kontext –, damit der Agent tatsächlich das Richtige tut. Die meisten MCP-Boilerplates bringen einem das Protokoll bei. Dieses hier bringt einem das Protokoll und die Praxis bei.
Was ist enthalten
defineTool()— ein Zod-Schema speist das MCP-SDK, die Function-Calling-API von OpenAI und den Runtime-Handler. Validierung und Fehler-Wrapping erfolgen automatisch.Beide Transporte — stdio (
src/index.ts) für lokale Clients im Claude-Code-Stil, Streamable HTTP (src/http.ts) für Remote-/Web-Clients. Beide teilen sich eincreateServer().Strukturierte
AgentErrors — jeder Fehler hat einencode, einemessageund einenhint, der für das Modell geschrieben wurde: "callitems_listfirst to find a valid id." Vage Fehlermeldungen verschwenden Turns; dies behebt das auf Type-Ebene.Ein echtes Eval-Harness — Vitest-basiert. Unit-Tests laufen frei in der CI;
tests/mcp/echo.test.tssteuert ein echtes OpenAI-Modell durch den MCP-Server über ein In-Memory-Transportpaar und führt Assertions auf dem resultierenden Tool-Call-Trace durch.Ein einfaches CRUD-Beispiel —
items_create / list / read / update / deleteplus einecho-Tool. Ersetzen Sie den In-Memory-Speicher durch Ihr echtes Backend; behalten Sie die Struktur bei.
Schnellstart
bun install
bun test # unit tests, no API key needed
bun run start # stdio server on stdin/stdout
bun run start:http # HTTP server on http://localhost:3000/mcpUm die Model-in-the-Loop-Evals auszuführen:
cp .env.example .env
# add OPENAI_API_KEY
bun run test:mcpIn Claude Code einbinden
{
"mcpServers": {
"harness-mcp": {
"command": "bun",
"args": ["run", "/absolute/path/to/harness/mcp/src/index.ts"]
}
}
}Layout
src/
index.ts stdio entry
http.ts streamable-http entry
core/
server.ts createServer() — shared by both transports
tool.ts defineTool() wrapper
errors.ts AgentError
store.ts replace with your backend
tools/
echo.ts smoke-test tool
items-*.ts CRUD example tools
index.ts registry
tests/
unit/ fast, no API key
tool.test.ts
store.test.ts
mcp/ protocol + model-in-the-loop
setup.ts in-memory client + runWithModel() helper
smoke.test.ts no model
echo.test.ts gpt-4o-mini, skipped without OPENAI_API_KEYDie Meinungen
Tool-Beschreibungen sind Prompt Engineering. Jede Beschreibung beginnt mit
USE WHEN ...und enthältDO NOT USE WHEN ...für verwandte Tools, mit denen das Modell dieses verwechseln könnte. Der Smoke-Test erzwingt diese Konvention.Fehler lehren. Jeder
AgentErrorenthält einhint-Feld. Lesen Sie Ihre Fehlermeldungen, als wären Sie der Agent – wüssten Sie, was als Nächstes zu tun ist? Wenn nicht, schreiben Sie sie um.Listen-Endpunkte paginieren.
items_listgibt{ items, nextCursor }zurück. Standardlimit 20, hartes Limit 100. Schütten Sie keine unbegrenzten Daten in den Kontext.Destruktive Operationen akzeptieren
dryRun.items_deletesagt Ihnen, was passieren würde, wenn Sie sich nicht sicher sind.Ein Zod, drei Konsumenten. Pflegen Sie JSON-Schema nicht manuell neben Zod –
defineToolleitet beides ab.Evals sind Tests. Tool-Call-Traces sind assertierbar. Wenn eine Regression in der Beschreibung das Verhalten des Modells beeinträchtigt, fängt Ihr Test dies ab.
Lizenz
MIT.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/giuseppecrj/harness-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server