mcp starter template
A production-ready template for creating Model Context Protocol servers with TypeScript, providing tools for efficient testing, development, and deployment.
A production-ready template for creating Model Context Protocol servers with TypeScript, providing tools for efficient testing, development, and deployment.
A production-ready starter template for building Model Context Protocol (MCP) servers with TypeScript.
bun installmcp-starter/
├── src/
│ ├── tools/ # MCP tools implementation
│ ├── utils/ # Shared utilities
│ ├── main.ts # Server entry point
│ └── types.ts # Shared type definitions
├── tests/ # Test files
├── biome.json # Linting configuration
├── tsconfig.json # TypeScript configuration
└── package.json # Project dependencies
The project includes a script to help create new MCP tools:
bun run scripts/create-tool.ts <tool-name>
This will:
1. Create a new tool directory under src/tools/<tool-name>
2. Generate the basic tool structure including:
- index.ts (main implementation)
- schema.ts (JSON schema for tool parameters)
- test.ts (test file)
3. Update the tools index file to export the new tool
Example:
bun run scripts/create-tool.ts weather
bun testbun run formatbun run lintbun run buildTo add your development MCP server to Claude Desktop:
bun run build// You only need the argument if you need to pass arguments to your server
{
"mcpServers": {
"your-server-name": {
"command": "node",
"args": ["/path/to/your/project/dist/main.js", "some_argument"]
}
}
}This project uses standard-version for automated version management. Run bun run release to create a new version.
feat: New feature (bumps minor version)fix: Bug fix (bumps patch version)BREAKING CHANGE: Breaking change (bumps major version)npm loginbun run buildnpm publish
Remember to update the version number using bun run release before publishing new versions.Add to your Claude Desktop config: ```json // You only need the argument if you need to pass arguments to your server { "mcpServers": { "your-server-name": { "command": "npx", "args": ["-y", "your-package-name", "some_argument"] } } }
[
{
"description": "Hello tool",
"inputSchema": {
"properties": {
"name": {
"description": "The name of the person to greet",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "hello_tool"
}
]