# https://github.com/cyanheads/mcp-ts-template 项目说明书

生成时间: 2026-05-22 15:29:36 UTC

## 目录

- [仓库概览](#overview)
- [入口与运行边界](#entrypoints)
- [架构证据地图](#architecture)
- [运维与验证边界](#operations)

<a id='overview'></a>

## 仓库概览

### 相关页面

相关主题：[入口与运行边界](#entrypoints), [架构证据地图](#architecture), [运维与验证边界](#operations)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [Dockerfile](https://github.com/cyanheads/mcp-ts-template/blob/main/Dockerfile)
- [README.md](https://github.com/cyanheads/mcp-ts-template/blob/main/README.md)
- [package.json](https://github.com/cyanheads/mcp-ts-template/blob/main/package.json)
- [skills/README.md](https://github.com/cyanheads/mcp-ts-template/blob/main/skills/README.md)
- [templates/Dockerfile](https://github.com/cyanheads/mcp-ts-template/blob/main/templates/Dockerfile)
- [templates/package.json](https://github.com/cyanheads/mcp-ts-template/blob/main/templates/package.json)
- [skills/polish-docs-meta/references/readme.md](https://github.com/cyanheads/mcp-ts-template/blob/main/skills/polish-docs-meta/references/readme.md)
- [src/index.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/index.ts)
- [src/cli/init.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/cli/init.ts)
- [src/config/index.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/config/index.ts)
- [src/config/parseEnvConfig.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/config/parseEnvConfig.ts)
- [src/core/app.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/core/app.ts)
</details>

# 仓库概览

本页在 Human Wiki provider 不可用时基于仓库证据生成，只使用 README、文件树和已选源码文件，不把模板描述冒充项目事实。

## README 证据

<div align="center">
  <h1>@cyanheads/mcp-ts-core</h1>
  <p><b>Agent-native TypeScript framework for building MCP servers. Build tools, not infrastructure. Declarative definitions with auth, multi-backend storage, OpenTelemetry, and first-class support for Bun/Node/Cloudflare Workers.</b></p>
</div>

<div align="center">

[![Version](https://img.shields.io/badge/Version-0.9.1-blue.svg?style=flat-square)](./CHANGELOG.md) [![MCP Spec](https://img.shields.io/badge/MCP%20Spec-2025--11--25-8A2BE2.svg?style=flat-square)](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/docs/specification/2025-11-25/changelog.mdx) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE)

[![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.0%2B-blueviolet.svg?style=flat-square)](https://bun.sh/)

</div>

---

## What is this?

`@cyanheads/mcp-ts-core` is the infrastructure layer for TypeScript MCP servers. Install it as a dependency — don't fork it. Your agent collaborates with you to design and build the tools, resources, and prompts for your server.

The framework handles the plumbing: transports, auth, config, logging, telemetry, & more. Define your domain logic with the builders and let the framework take care of the rest.

```ts
import { createApp, tool, z } from '@cyanheads/mcp-ts-core';

const greet = tool('greet', {
  description: 'Greet someone by name and return a personalized message.',
  annotations: { readOnlyHint: true },
  input: z.object({
    name: z.string().describe('Name of the person to greet'),
  }),
  output: z.object({
    message: z.string().describe('The greeting message'),
  }),
  errors: [
    {
      reason: 'name_blocked',
      code: JsonRpcErrorCode.Forbidden,
      when: 'The provided name is on the configured block list.',
      recovery: 'Use a different name.',
    },
  ],
  handler: async (input, ctx) => {
    if (isBlocked(input.name)) throw ctx.fail('name_blocked', `"${input.name}" is blocked`);
    return { message: `Hello, ${input.name}!` };
  },
});

await createApp({ tools: [greet] });
```

That's a complete MCP server. Every tool cal

[excerpt truncated]

## 已选源码清单

- `Dockerfile`
- `README.md`
- `package.json`
- `skills/README.md`
- `templates/Dockerfile`
- `templates/package.json`
- `skills/polish-docs-meta/references/readme.md`
- `src/index.ts`
- `src/cli/init.ts`
- `src/config/index.ts`
- `src/config/parseEnvConfig.ts`
- `src/core/app.ts`

| 文件 | 证据角色 | 大小 |
|---|---|---|
| `Dockerfile` | 仓库证据 | 4057 bytes |
| `README.md` | README/产品与使用证据 | 15590 bytes |
| `package.json` | 包与运行时元数据 | 11594 bytes |
| `skills/README.md` | 文档证据 | 2004 bytes |
| `templates/Dockerfile` | 仓库证据 | 3517 bytes |
| `templates/package.json` | 包与运行时元数据 | 1625 bytes |
| `skills/polish-docs-meta/references/readme.md` | 文档证据 | 18454 bytes |
| `src/index.ts` | 实现边界 | 270 bytes |
| `src/cli/init.ts` | 实现边界 | 9118 bytes |
| `src/config/index.ts` | 实现边界 | 26418 bytes |
| `src/config/parseEnvConfig.ts` | 实现边界 | 2729 bytes |
| `src/core/app.ts` | 实现边界 | 24448 bytes |

资料来源：`[README.md:1-120]()`

---

<a id='entrypoints'></a>

## 入口与运行边界

### 相关页面

相关主题：[仓库概览](#overview), [架构证据地图](#architecture), [运维与验证边界](#operations)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [Dockerfile](https://github.com/cyanheads/mcp-ts-template/blob/main/Dockerfile)
- [README.md](https://github.com/cyanheads/mcp-ts-template/blob/main/README.md)
- [package.json](https://github.com/cyanheads/mcp-ts-template/blob/main/package.json)
- [skills/README.md](https://github.com/cyanheads/mcp-ts-template/blob/main/skills/README.md)
- [templates/Dockerfile](https://github.com/cyanheads/mcp-ts-template/blob/main/templates/Dockerfile)
- [templates/package.json](https://github.com/cyanheads/mcp-ts-template/blob/main/templates/package.json)
- [skills/polish-docs-meta/references/readme.md](https://github.com/cyanheads/mcp-ts-template/blob/main/skills/polish-docs-meta/references/readme.md)
- [src/index.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/index.ts)
- [src/cli/init.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/cli/init.ts)
- [src/config/index.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/config/index.ts)
- [src/config/parseEnvConfig.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/config/parseEnvConfig.ts)
- [src/core/app.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/core/app.ts)
</details>

# 入口与运行边界

下面文件是安装、启动、配置或宿主集成的高信号候选。这里给出证据地图，不推断未经执行验证的 API 契约。

| 文件 | 证据角色 | 大小 |
|---|---|---|
| `Dockerfile` | 仓库证据 | 4057 bytes |
| `README.md` | README/产品与使用证据 | 15590 bytes |
| `package.json` | 包与运行时元数据 | 11594 bytes |
| `skills/README.md` | 文档证据 | 2004 bytes |
| `templates/Dockerfile` | 仓库证据 | 3517 bytes |
| `templates/package.json` | 包与运行时元数据 | 1625 bytes |
| `skills/polish-docs-meta/references/readme.md` | 文档证据 | 18454 bytes |
| `src/index.ts` | 实现边界 | 270 bytes |
| `src/cli/init.ts` | 实现边界 | 9118 bytes |
| `src/config/index.ts` | 实现边界 | 26418 bytes |
| `src/config/parseEnvConfig.ts` | 实现边界 | 2729 bytes |
| `src/core/app.ts` | 实现边界 | 24448 bytes |

资料来源：`[Dockerfile:1-120](https://github.com/cyanheads/mcp-ts-template/blob/main/Dockerfile)`

---

<a id='architecture'></a>

## 架构证据地图

### 相关页面

相关主题：[仓库概览](#overview), [入口与运行边界](#entrypoints), [运维与验证边界](#operations)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [Dockerfile](https://github.com/cyanheads/mcp-ts-template/blob/main/Dockerfile)
- [README.md](https://github.com/cyanheads/mcp-ts-template/blob/main/README.md)
- [package.json](https://github.com/cyanheads/mcp-ts-template/blob/main/package.json)
- [skills/README.md](https://github.com/cyanheads/mcp-ts-template/blob/main/skills/README.md)
- [templates/Dockerfile](https://github.com/cyanheads/mcp-ts-template/blob/main/templates/Dockerfile)
- [templates/package.json](https://github.com/cyanheads/mcp-ts-template/blob/main/templates/package.json)
- [skills/polish-docs-meta/references/readme.md](https://github.com/cyanheads/mcp-ts-template/blob/main/skills/polish-docs-meta/references/readme.md)
- [src/index.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/index.ts)
- [src/cli/init.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/cli/init.ts)
- [src/config/index.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/config/index.ts)
- [src/config/parseEnvConfig.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/config/parseEnvConfig.ts)
- [src/core/app.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/core/app.ts)
</details>

# 架构证据地图

本节只根据仓库路径组织可能的架构区域；需要运行验证的行为不会在这里断言。

- `.`: `Dockerfile`, `README.md`, `package.json`
- `skills`: `skills/README.md`, `skills/polish-docs-meta/references/readme.md`
- `src`: `src/index.ts`, `src/cli/init.ts`, `src/config/index.ts`, `src/config/parseEnvConfig.ts`, `src/core/app.ts`
- `templates`: `templates/Dockerfile`, `templates/package.json`

资料来源：`[README.md:1-120](https://github.com/cyanheads/mcp-ts-template/blob/main/README.md)`

---

<a id='operations'></a>

## 运维与验证边界

### 相关页面

相关主题：[仓库概览](#overview), [入口与运行边界](#entrypoints), [架构证据地图](#architecture)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [Dockerfile](https://github.com/cyanheads/mcp-ts-template/blob/main/Dockerfile)
- [README.md](https://github.com/cyanheads/mcp-ts-template/blob/main/README.md)
- [package.json](https://github.com/cyanheads/mcp-ts-template/blob/main/package.json)
- [skills/README.md](https://github.com/cyanheads/mcp-ts-template/blob/main/skills/README.md)
- [templates/Dockerfile](https://github.com/cyanheads/mcp-ts-template/blob/main/templates/Dockerfile)
- [templates/package.json](https://github.com/cyanheads/mcp-ts-template/blob/main/templates/package.json)
- [skills/polish-docs-meta/references/readme.md](https://github.com/cyanheads/mcp-ts-template/blob/main/skills/polish-docs-meta/references/readme.md)
- [src/index.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/index.ts)
- [src/cli/init.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/cli/init.ts)
- [src/config/index.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/config/index.ts)
- [src/config/parseEnvConfig.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/config/parseEnvConfig.ts)
- [src/core/app.ts](https://github.com/cyanheads/mcp-ts-template/blob/main/src/core/app.ts)
</details>

# 运维与验证边界

运维建议仅来自仓库中真实存在的文件。把该项目用于 agent 工作流前，仍需在 sandbox 中验证安装、quickstart 和运行行为。

- Containerization signal: `Dockerfile`
- Documentation signal: `README.md`
- Runtime/package signal: `package.json`
- Documentation signal: `skills/README.md`
- Containerization signal: `templates/Dockerfile`
- Runtime/package signal: `templates/package.json`
- Documentation signal: `skills/polish-docs-meta/references/readme.md`
- Source inspection signal: `src/index.ts`
- Source inspection signal: `src/cli/init.ts`
- Source inspection signal: `src/config/index.ts`

资料来源：`[package.json:1-120](https://github.com/cyanheads/mcp-ts-template/blob/main/package.json)`

---

---

## Doramagic 踩坑日志

项目：cyanheads/mcp-ts-template

摘要：发现 38 个潜在踩坑项，其中 4 个为 high/blocking；最高优先级：安装坑 - 来源证据：bug(transport): HTTP per-request McpServer cleanup leaks ~30 KB/req on heap。

## 1. 安装坑 · 来源证据：bug(transport): HTTP per-request McpServer cleanup leaks ~30 KB/req on heap

- 严重度：high
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：bug(transport): HTTP per-request McpServer cleanup leaks ~30 KB/req on heap
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_b652b8d6139f43c1bcf51562afed3525 | https://github.com/cyanheads/mcp-ts-core/issues/50 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。

## 2. 配置坑 · 来源证据：bug(transport): list_changed notifications silently dropped under HTTP per-request McpServer model

- 严重度：high
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：bug(transport): list_changed notifications silently dropped under HTTP per-request McpServer model
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_3d3b719431cb499f914e169e6dce21b2 | https://github.com/cyanheads/mcp-ts-core/issues/135 | 来源讨论提到 node 相关条件，需在安装/试用前复核。

## 3. 配置坑 · 来源证据：feat(tool): flatten SDK input-validation error text and move issues to error.data (follow-up to #55)

- 严重度：high
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：feat(tool): flatten SDK input-validation error text and move issues to error.data (follow-up to #55)
- 对用户的影响：可能阻塞安装或首次运行。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_ed2fba370b864c57980fcc78c30fa336 | https://github.com/cyanheads/mcp-ts-core/issues/66 | 来源类型 github_issue 暴露的待验证使用条件。

## 4. 安全/权限坑 · 失败模式：security_permissions: feat(auth): add RFC 7662 Token Introspection as a third auth strategy

- 严重度：high
- 证据强度：source_linked
- 发现：Developers should check this security_permissions risk before relying on the project: feat(auth): add RFC 7662 Token Introspection as a third auth strategy
- 对用户的影响：Developers may expose sensitive permissions or credentials: feat(auth): add RFC 7662 Token Introspection as a third auth strategy
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: feat(auth): add RFC 7662 Token Introspection as a third auth strategy. Context: Source discussion did not expose a precise runtime context.
- 防护动作: Do not recommend enabling privileged or credential-bearing paths until the source-backed risk is reviewed: https://github.com/cyanheads/mcp-ts-core/issues/139
- 证据：failure_mode_cluster:github_issue | fmev_79b989da05ab81a148513987aa506d71 | https://github.com/cyanheads/mcp-ts-core/issues/139 | feat(auth): add RFC 7662 Token Introspection as a third auth strategy

## 5. 安装坑 · 失败模式：installation: feat(templates): MCPB bundle packaging for scaffolded servers

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this installation risk before relying on the project: feat(templates): MCPB bundle packaging for scaffolded servers
- 对用户的影响：Developers may fail before the first successful local run: feat(templates): MCPB bundle packaging for scaffolded servers
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: feat(templates): MCPB bundle packaging for scaffolded servers. Context: Observed when using node, docker, windows, macos
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_22c10ce8863043b0adf9a54a6f51d108 | https://github.com/cyanheads/mcp-ts-core/issues/137 | feat(templates): MCPB bundle packaging for scaffolded servers

## 6. 安装坑 · 来源证据：bug(utils): fetchWithTimeout collapses every non-ok HTTP status to ServiceUnavailable, erasing codes and causing spurio…

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：bug(utils): fetchWithTimeout collapses every non-ok HTTP status to ServiceUnavailable, erasing codes and causing spurious retries
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_9f6a4823d56640848bd04ac60d2856af | https://github.com/cyanheads/mcp-ts-core/issues/126 | 来源讨论提到 macos 相关条件，需在安装/试用前复核。

## 7. 配置坑 · 失败模式：configuration: Connect card: active-tab styling, default to Claude, add Codex/Cursor/Gemini

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: Connect card: active-tab styling, default to Claude, add Codex/Cursor/Gemini
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: Connect card: active-tab styling, default to Claude, add Codex/Cursor/Gemini
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: Connect card: active-tab styling, default to Claude, add Codex/Cursor/Gemini. Context: Source discussion did not expose a precise runtime context.
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_5c7acd2f18c877d832b1a859cd234468 | https://github.com/cyanheads/mcp-ts-core/issues/136 | Connect card: active-tab styling, default to Claude, add Codex/Cursor/Gemini

## 8. 配置坑 · 失败模式：configuration: bug(utils): fetchWithTimeout attaches full upstream HTTP error body to error.data.responseBod...

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: bug(utils): fetchWithTimeout attaches full upstream HTTP error body to error.data.responseBody — no cap, no MIME filter
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: bug(utils): fetchWithTimeout attaches full upstream HTTP error body to error.data.responseBody — no cap, no MIME filter
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: bug(utils): fetchWithTimeout attaches full upstream HTTP error body to error.data.responseBody — no cap, no MIME filter. Context: Source discussion did not expose a precise runtime context.
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_7d40e777d2ccdbab34bc3b3d1402bd71 | https://github.com/cyanheads/mcp-ts-core/issues/120 | bug(utils): fetchWithTimeout attaches full upstream HTTP error body to error.data.responseBody — no cap, no MIME filter

## 9. 配置坑 · 失败模式：configuration: bug(worker): Workers compatibility — runtime detection broken under nodejs_compat, plus 8 rel...

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: bug(worker): Workers compatibility — runtime detection broken under nodejs_compat, plus 8 related findings
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: bug(worker): Workers compatibility — runtime detection broken under nodejs_compat, plus 8 related findings
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: bug(worker): Workers compatibility — runtime detection broken under nodejs_compat, plus 8 related findings. Context: Observed when using node
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_41ff925fb40ebff8720b5c65f8b20ece | https://github.com/cyanheads/mcp-ts-core/issues/124 | bug(worker): Workers compatibility — runtime detection broken under nodejs_compat, plus 8 related findings

## 10. 配置坑 · 失败模式：configuration: changelog: raise summary cap from 250 → 350 chars

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: changelog: raise summary cap from 250 → 350 chars
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: changelog: raise summary cap from 250 → 350 chars
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: changelog: raise summary cap from 250 → 350 chars. Context: Source discussion did not expose a precise runtime context.
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_5d2f31e619abdbc2e753d5c67819c1a8 | https://github.com/cyanheads/mcp-ts-core/issues/129 | changelog: raise summary cap from 250 → 350 chars

## 11. 配置坑 · 失败模式：configuration: docs(api-canvas): add minimum-viable spillover server recipe as the default

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: docs(api-canvas): add minimum-viable spillover server recipe as the default
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: docs(api-canvas): add minimum-viable spillover server recipe as the default
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: docs(api-canvas): add minimum-viable spillover server recipe as the default. Context: Source discussion did not expose a precise runtime context.
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_44db3da73c060fc8e7affa9e6c321749 | https://github.com/cyanheads/mcp-ts-core/issues/138 | docs(api-canvas): add minimum-viable spillover server recipe as the default

## 12. 配置坑 · 失败模式：configuration: feat(docs/skills): codify agent-observed correctness across response design surface

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: feat(docs/skills): codify agent-observed correctness across response design surface
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: feat(docs/skills): codify agent-observed correctness across response design surface
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: feat(docs/skills): codify agent-observed correctness across response design surface. Context: Source discussion did not expose a precise runtime context.
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_a5a5f36d76023182a160cd1189430916 | https://github.com/cyanheads/mcp-ts-core/issues/131 | feat(docs/skills): codify agent-observed correctness across response design surface

## 13. 配置坑 · 失败模式：configuration: feat(linter): `schema-properties-need-type` — flag typeless leaves missed by `schema-anyof-ne...

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: feat(linter): `schema-properties-need-type` — flag typeless leaves missed by `schema-anyof-needs-type`
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: feat(linter): `schema-properties-need-type` — flag typeless leaves missed by `schema-anyof-needs-type`
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: feat(linter): `schema-properties-need-type` — flag typeless leaves missed by `schema-anyof-needs-type`. Context: Source discussion did not expose a precise runtime context.
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_008c058324c5476cab1114c3b507a398 | https://github.com/cyanheads/mcp-ts-core/issues/141 | feat(linter): `schema-properties-need-type` — flag typeless leaves missed by `schema-anyof-needs-type`

## 14. 配置坑 · 失败模式：configuration: feat(linter,docs): cross-vendor JSON Schema portability rules

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: feat(linter,docs): cross-vendor JSON Schema portability rules
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: feat(linter,docs): cross-vendor JSON Schema portability rules
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: feat(linter,docs): cross-vendor JSON Schema portability rules. Context: Observed when using python
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_442715f721a7d8f0d431a38068bdcfcd | https://github.com/cyanheads/mcp-ts-core/issues/132 | feat(linter,docs): cross-vendor JSON Schema portability rules

## 15. 配置坑 · 失败模式：configuration: feat(skill): polish-docs-meta should recommend linking OTEL_ENABLED to framework telemetry docs

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: feat(skill): polish-docs-meta should recommend linking OTEL_ENABLED to framework telemetry docs
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: feat(skill): polish-docs-meta should recommend linking OTEL_ENABLED to framework telemetry docs
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: feat(skill): polish-docs-meta should recommend linking OTEL_ENABLED to framework telemetry docs. Context: Source discussion did not expose a precise runtime context.
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_94fb8f4bb9c19f4e783136fcde3ed772 | https://github.com/cyanheads/mcp-ts-core/issues/130 | feat(skill): polish-docs-meta should recommend linking OTEL_ENABLED to framework telemetry docs

## 16. 配置坑 · 失败模式：configuration: feat(telemetry): wire Worker-native OTel exporter (sdk-trace-web + OTLP fetch)

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: feat(telemetry): wire Worker-native OTel exporter (sdk-trace-web + OTLP fetch)
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: feat(telemetry): wire Worker-native OTel exporter (sdk-trace-web + OTLP fetch)
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: feat(telemetry): wire Worker-native OTel exporter (sdk-trace-web + OTLP fetch). Context: Observed when using node, cuda
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_e38ad2dfdd02625b61bb0948c324e842 | https://github.com/cyanheads/mcp-ts-core/issues/134 | feat(telemetry): wire Worker-native OTel exporter (sdk-trace-web + OTLP fetch)

## 17. 配置坑 · 失败模式：configuration: feat(tool): first-class support for discriminated-union tool inputs (multi-mode tools)

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this configuration risk before relying on the project: feat(tool): first-class support for discriminated-union tool inputs (multi-mode tools)
- 对用户的影响：Developers may misconfigure credentials, environment, or host setup: feat(tool): first-class support for discriminated-union tool inputs (multi-mode tools)
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: feat(tool): first-class support for discriminated-union tool inputs (multi-mode tools). Context: Source discussion did not expose a precise runtime context.
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_de75bb8a294c55ed56f1bb44faf7bd37 | https://github.com/cyanheads/mcp-ts-core/issues/142 | feat(tool): first-class support for discriminated-union tool inputs (multi-mode tools)

## 18. 配置坑 · 来源证据：feat(telemetry): wire Worker-native OTel exporter (sdk-trace-web + OTLP fetch)

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：feat(telemetry): wire Worker-native OTel exporter (sdk-trace-web + OTLP fetch)
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_22e974aafd5649c7b4e239b2a07a33ec | https://github.com/cyanheads/mcp-ts-core/issues/134 | 来源讨论提到 node 相关条件，需在安装/试用前复核。

## 19. 能力坑 · 能力判断依赖假设

- 严重度：medium
- 证据强度：source_linked
- 发现：README/documentation is current enough for a first validation pass.
- 对用户的影响：假设不成立时，用户拿不到承诺的能力。
- 建议检查：将假设转成下游验证清单。
- 防护动作: 假设必须转成验证项；没有验证结果前不能写成事实。
- 证据：capability.assumptions | mcp_registry:io.github.cyanheads/mcp-ts-template:3.0.9 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.cyanheads%2Fmcp-ts-template/versions/3.0.9 | README/documentation is current enough for a first validation pass.

## 20. 运行坑 · 失败模式：runtime: bug(transport): list_changed notifications silently dropped under HTTP per-request McpServer...

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this runtime risk before relying on the project: bug(transport): list_changed notifications silently dropped under HTTP per-request McpServer model
- 对用户的影响：Developers may hit a documented source-backed failure mode: bug(transport): list_changed notifications silently dropped under HTTP per-request McpServer model
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: bug(transport): list_changed notifications silently dropped under HTTP per-request McpServer model. Context: Observed when using node
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_c771a0d6f06fc6e6e023bd2f45ada5a3 | https://github.com/cyanheads/mcp-ts-core/issues/135 | bug(transport): list_changed notifications silently dropped under HTTP per-request McpServer model

## 21. 运行坑 · 失败模式：runtime: bug(utils): fetchWithTimeout collapses every non-ok HTTP status to ServiceUnavailable, erasin...

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this runtime risk before relying on the project: bug(utils): fetchWithTimeout collapses every non-ok HTTP status to ServiceUnavailable, erasing codes and causing spurious retries
- 对用户的影响：Developers may hit a documented source-backed failure mode: bug(utils): fetchWithTimeout collapses every non-ok HTTP status to ServiceUnavailable, erasing codes and causing spurious retries
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: bug(utils): fetchWithTimeout collapses every non-ok HTTP status to ServiceUnavailable, erasing codes and causing spurious retries. Context: Observed when using macos
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_e7737d7800a604e87586603a0d3fe8d5 | https://github.com/cyanheads/mcp-ts-core/issues/126 | bug(utils): fetchWithTimeout collapses every non-ok HTTP status to ServiceUnavailable, erasing codes and causing spurious retries

## 22. 维护坑 · 失败模式：migration: bug(utils): logger rate-limit map only sweeps when suppression triggered

- 严重度：medium
- 证据强度：source_linked
- 发现：Developers should check this migration risk before relying on the project: bug(utils): logger rate-limit map only sweeps when suppression triggered
- 对用户的影响：Developers may hit a documented source-backed failure mode: bug(utils): logger rate-limit map only sweeps when suppression triggered
- 建议检查：Before packaging this project, run the relevant install/config/quickstart check for: bug(utils): logger rate-limit map only sweeps when suppression triggered. Context: Source discussion did not expose a precise runtime context.
- 防护动作: State this as source-backed community evidence, not as Doramagic reproduction.
- 证据：failure_mode_cluster:github_issue | fmev_0716f10fda662c3e061d6b59d0f45b12 | https://github.com/cyanheads/mcp-ts-core/issues/115 | bug(utils): logger rate-limit map only sweeps when suppression triggered

## 23. 维护坑 · 来源证据：bug(utils): logger rate-limit map only sweeps when suppression triggered

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：bug(utils): logger rate-limit map only sweeps when suppression triggered
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_8fb7b505af3f480c95c67b34c105329e | https://github.com/cyanheads/mcp-ts-core/issues/115 | 来源类型 github_issue 暴露的待验证使用条件。

## 24. 维护坑 · 维护活跃度未知

- 严重度：medium
- 证据强度：source_linked
- 发现：未记录 last_activity_observed。
- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。
- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。
- 防护动作: 维护活跃度未知时，推荐强度不能标为高信任。
- 证据：evidence.maintainer_signals | mcp_registry:io.github.cyanheads/mcp-ts-template:3.0.9 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.cyanheads%2Fmcp-ts-template/versions/3.0.9 | last_activity_observed missing

## 25. 安全/权限坑 · 下游验证发现风险项

- 严重度：medium
- 证据强度：source_linked
- 发现：no_demo
- 对用户的影响：下游已经要求复核，不能在页面中弱化。
- 建议检查：进入安全/权限治理复核队列。
- 防护动作: 下游风险存在时必须保持 review/recommendation 降级。
- 证据：downstream_validation.risk_items | mcp_registry:io.github.cyanheads/mcp-ts-template:3.0.9 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.cyanheads%2Fmcp-ts-template/versions/3.0.9 | no_demo; severity=medium

## 26. 安全/权限坑 · 存在评分风险

- 严重度：medium
- 证据强度：source_linked
- 发现：no_demo
- 对用户的影响：风险会影响是否适合普通用户安装。
- 建议检查：把风险写入边界卡，并确认是否需要人工复核。
- 防护动作: 评分风险必须进入边界卡，不能只作为内部分数。
- 证据：risks.scoring_risks | mcp_registry:io.github.cyanheads/mcp-ts-template:3.0.9 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.cyanheads%2Fmcp-ts-template/versions/3.0.9 | no_demo; severity=medium

## 27. 安全/权限坑 · 来源证据：bug(utils): fetchWithTimeout attaches full upstream HTTP error body to error.data.responseBody — no cap, no MIME filter

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：bug(utils): fetchWithTimeout attaches full upstream HTTP error body to error.data.responseBody — no cap, no MIME filter
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_5df71519e99747a0a028db7767bd9b86 | https://github.com/cyanheads/mcp-ts-core/issues/120 | 来源类型 github_issue 暴露的待验证使用条件。

## 28. 安全/权限坑 · 来源证据：bug(utils): unbounded label cardinality on mcp.ratelimit.rejections counter

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：bug(utils): unbounded label cardinality on mcp.ratelimit.rejections counter
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_c1d184e56e66446085332f42b7500be4 | https://github.com/cyanheads/mcp-ts-core/issues/114 | 来源类型 github_issue 暴露的待验证使用条件。

## 29. 安全/权限坑 · 来源证据：bug(worker): Workers compatibility — runtime detection broken under nodejs_compat, plus 8 related findings

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：bug(worker): Workers compatibility — runtime detection broken under nodejs_compat, plus 8 related findings
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_a6e8146b33d0467584baf5d0c8d433c8 | https://github.com/cyanheads/mcp-ts-core/issues/124 | 来源讨论提到 node 相关条件，需在安装/试用前复核。

## 30. 安全/权限坑 · 来源证据：changelog: raise summary cap from 250 → 350 chars

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：changelog: raise summary cap from 250 → 350 chars
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_d2eeeaa093654bed9869dc412630cb74 | https://github.com/cyanheads/mcp-ts-core/issues/129 | 来源类型 github_issue 暴露的待验证使用条件。

## 31. 安全/权限坑 · 来源证据：docs(api-canvas): add minimum-viable spillover server recipe as the default

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：docs(api-canvas): add minimum-viable spillover server recipe as the default
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_d5b1c38bbee5494abc71a7f891389997 | https://github.com/cyanheads/mcp-ts-core/issues/138 | 来源类型 github_issue 暴露的待验证使用条件。

## 32. 安全/权限坑 · 来源证据：feat(docs/skills): codify agent-observed correctness across response design surface

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：feat(docs/skills): codify agent-observed correctness across response design surface
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_8db18d54bc9948a28dcf10fd5207d1fa | https://github.com/cyanheads/mcp-ts-core/issues/131 | 来源类型 github_issue 暴露的待验证使用条件。

## 33. 安全/权限坑 · 来源证据：feat(linter): `schema-properties-need-type` — flag typeless leaves missed by `schema-anyof-needs-type`

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：feat(linter): `schema-properties-need-type` — flag typeless leaves missed by `schema-anyof-needs-type`
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_680ec4f7c0ff4c8c9f29762e8c8e2520 | https://github.com/cyanheads/mcp-ts-core/issues/141 | 来源类型 github_issue 暴露的待验证使用条件。

## 34. 安全/权限坑 · 来源证据：feat(linter,docs): cross-vendor JSON Schema portability rules

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：feat(linter,docs): cross-vendor JSON Schema portability rules
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_69d95636c7024bf2bb5d8aad01b7ab6d | https://github.com/cyanheads/mcp-ts-core/issues/132 | 来源讨论提到 python 相关条件，需在安装/试用前复核。

## 35. 安全/权限坑 · 来源证据：feat(skill): polish-docs-meta should recommend linking OTEL_ENABLED to framework telemetry docs

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：feat(skill): polish-docs-meta should recommend linking OTEL_ENABLED to framework telemetry docs
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_0280b913a8284f73ad4ac3932a76ebd5 | https://github.com/cyanheads/mcp-ts-core/issues/130 | 来源类型 github_issue 暴露的待验证使用条件。

## 36. 安全/权限坑 · 来源证据：feat(tool): first-class support for discriminated-union tool inputs (multi-mode tools)

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：feat(tool): first-class support for discriminated-union tool inputs (multi-mode tools)
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作: 不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_8a3ab16a17764a828dc447d9462d875c | https://github.com/cyanheads/mcp-ts-core/issues/142 | 来源类型 github_issue 暴露的待验证使用条件。

## 37. 维护坑 · issue/PR 响应质量未知

- 严重度：low
- 证据强度：source_linked
- 发现：issue_or_pr_quality=unknown。
- 对用户的影响：用户无法判断遇到问题后是否有人维护。
- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。
- 防护动作: issue/PR 响应未知时，必须提示维护风险。
- 证据：evidence.maintainer_signals | mcp_registry:io.github.cyanheads/mcp-ts-template:3.0.9 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.cyanheads%2Fmcp-ts-template/versions/3.0.9 | issue_or_pr_quality=unknown

## 38. 维护坑 · 发布节奏不明确

- 严重度：low
- 证据强度：source_linked
- 发现：release_recency=unknown。
- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。
- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。
- 防护动作: 发布节奏未知或过期时，安装说明必须标注可能漂移。
- 证据：evidence.maintainer_signals | mcp_registry:io.github.cyanheads/mcp-ts-template:3.0.9 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.cyanheads%2Fmcp-ts-template/versions/3.0.9 | release_recency=unknown

<!-- canonical_name: cyanheads/mcp-ts-template; human_manual_source: deepwiki_human_wiki -->
