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 install
mcp-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 test
bun run format
bun run lint
bun run build
To 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 login
bun run build
npm 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"
}
]