harness-mcp
harness-mcp
一个以**工程化约束(harness engineering)**为核心理念构建 MCP 服务器的 TypeScript 样板。
工程化约束是一门围绕 LLM 代理设计脚手架(工具、描述、错误、上下文)的学科,旨在确保代理能够真正执行正确的操作。大多数 MCP 样板只教你协议,而这个样板既教你协议,也教你实践。
包含内容
defineTool()— 一个 Zod 模式即可同时服务于 MCP SDK、OpenAI 函数调用 API 和运行时处理器。验证和错误包装均为自动完成。两种传输方式 — 用于 Claude Code 风格本地客户端的 stdio (
src/index.ts),以及用于远程/Web 客户端的可流式 HTTP (src/http.ts)。两者共享同一个createServer()。结构化的
AgentError— 每个错误都包含一个code、一个message和一个专门为模型编写的hint(提示):例如“请先调用items_list以获取有效的 ID”。模糊的错误会浪费轮次;此方案在类型层面解决了该问题。真实的评估工具(eval harness) — 基于 Vitest。单元测试可在 CI 中自由运行;
tests/mcp/echo.test.ts通过内存传输对,驱动真实的 OpenAI 模型调用 MCP 服务器,并对生成的工具调用轨迹进行断言。简单的 CRUD 示例 —
items_create / list / read / update / delete以及一个echo工具。只需将内存存储替换为你的真实后端,即可保持结构不变。
Related MCP server: TypeScript MCP Server Boilerplate
快速开始
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/mcp运行模型闭环评估:
cp .env.example .env
# add OPENAI_API_KEY
bun run test:mcp连接到 Claude Code
{
"mcpServers": {
"harness-mcp": {
"command": "bun",
"args": ["run", "/absolute/path/to/harness/mcp/src/index.ts"]
}
}
}布局
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_KEY设计理念
工具描述即提示工程(Prompt Engineering)。 每个描述都以
USE WHEN ...开头,并包含DO NOT USE WHEN ...,以区分模型可能混淆的同类工具。冒烟测试强制执行此约定。错误即教学。 每个
AgentError都携带一个hint字段。请以代理的视角阅读你的错误信息——你会知道下一步该做什么吗?如果不知道,请重写。列表接口需分页。
items_list返回{ items, nextCursor }。默认限制为 20 条,硬上限为 100 条。不要将无限制的数据倾倒到上下文中。破坏性操作支持
dryRun。items_delete会告诉你如果执行操作会发生什么,以防你不确定后果。一个 Zod,三个消费者。 不要手动维护与 Zod 并行的 JSON Schema ——
defineTool会自动推导两者。评估即测试。 工具调用轨迹是可断言的。当描述的回归导致模型行为异常时,你的测试会捕获它。
许可证
MIT。
This server cannot be deployed
Maintenance
Related MCP Connectors
A simple Typescript MCP server built using the official MCP Typescript SDK and smithery/cli. This…
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…
A MCP server built for developers enabling Git based project management with project and personal…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA TypeScript-based template for rapidly developing MCP servers with modular tool architecture, built-in validation using Zod schemas, and comprehensive error handling.9 npmMIT
- FlicenseAqualityDmaintenanceA boilerplate for building MCP servers using TypeScript, with example tools like calculator and greet, plus resource support.6-
- FlicenseBqualityDmaintenanceA TypeScript MCP server boilerplate providing example tools and resources for rapid development of custom Model Context Protocol servers.8-
- FlicenseBqualityDmaintenanceA TypeScript MCP server boilerplate providing example tools and resources for rapid development and testing of Model Context Protocol servers.7-