@tmcp/create-tmcp
Interactive CLI tool to create TMCP (lightweight MCP) projects with full scaffolding support.
Usage
Create a new TMCP project interactively:
npx @tmcp/create-tmcp
Or create in a specific directory:
npx @tmcp/create-tmcp my-project
Features
The CLI will guide you through setting up a complete TMCP project with:
Schema Adapters
- Valibot (Recommended) - Lightweight, modern validation
- Zod v4 - Latest Zod version with enhanced features
- Zod v3 - Legacy Zod version for compatibility
- ArkType - TypeScript-first validation with excellent performance
- Effect Schema - Functional programming approach
- No adapter - Manual schema handling
Transport Layers
- STDIO - Standard input/output (most common for MCP)
- HTTP - HTTP server transport for web integration
- Server-Sent Events - SSE transport for real-time web apps
Additional Features
- OAuth 2.1 Authentication - Optional authentication support
- Example Server - Complete working example with schema validation
- TypeScript Support - Full type definitions included
- Modern Tooling - ESM modules, file watching, and more
Generated Project Structure
my-project/
├── package.json # Dependencies and scripts
├── README.md # Project documentation
├── src/
│ ├── index.js # Main server implementation
│ └── example.js # Example server (optional)
What You Get
Each generated project includes:
- Complete TMCP Server - Ready-to-run MCP server implementation
- Schema Validation - Integrated adapter for your chosen validation library
- Transport Configuration - Pre-configured transport layers
- Development Scripts - File watching and development commands
- Working Example - Demonstrative tools and schema usage
- Full Documentation - README with usage instructions
Example Workflow
npx @tmcp/create-tmcp my-mcp-server
cd my-mcp-server
pnpm install
pnpm run dev
Schema Adapter Examples
Valibot (Recommended)
import * as v from 'valibot';
const UserSchema = v.object({
name: v.pipe(v.string(), v.description('User name')),
age: v.pipe(v.number(), v.description('User age')),
});
Zod
import { z } from 'zod';
const UserSchema = z.object({
name: z.string().describe('User name'),
age: z.number().describe('User age'),
});
ArkType
import { type } from 'arktype';
const UserSchema = type({
name: 'string',
age: 'number',
});
Advanced Usage
Custom Project Structure
The CLI adapts to your preferences:
- Custom example server location
- Multiple transport combinations
- Optional authentication integration
- Flexible dependency management
Development Ready
Generated projects include:
- Hot reloading with
--watch flag
- TypeScript definitions
- ESLint configuration inheritance
- Modern package.json setup
Requirements
- Node.js 18.0.0 or higher
- pnpm (recommended) or npm
Learn More
License
MIT