TypeScript · MCP · Explicit contracts

Decorator-first MCP.
Built for boundaries.

Record MCP declarations with familiar TypeScript decorators. In the published 0.1.0 release, those declarations remain inspectable metadata only.

@McpServer({ name: "catalog" })
class CatalogTools {
  @McpTool({
    name: "find_product",
    description: "Find a product by id",
  })
  findProduct(input: { id: string }) {
    return this.catalog.get(input.id);
  }
}
01

Decorators → metadata

Declare intent close to your code without losing explicit definitions.

02

Immutable metadata reads

Inspect declared server and tool options without starting an MCP runtime.

03

Explicit release boundary

Keep 0.1.0 declaration-only while future runtime work remains unreleased.

Architecture

Declarations in.
Metadata out.

  1. 01 Decorated TypeScript class
  2. 02 Immutable metadata inspection
  3. 03 Application-owned runtime choice
  4. 04 No published MCP transport in 0.1.0

Published release boundary

Metadata first. Runtime later.

type-mcp@0.1.0 records standard decorator metadata. It does not validate, compile, invoke, or transport decorated tools as MCP operations.

createMcpServer() and type-mcp/http / createMcpHandler() are reserved and throw in the published release. Applications need their own runnable MCP integration until a later TypeMCP release.

Get started

Inspect the source.
Start with a tool.