Create a new MCP server in TypeScript, batteries included.
Create a new MCP server in TypeScript, batteries included.
npm init mcp-ts your-server
cd your-server
npm run dev
create-mcp-ts
requires zero build configuration - it will automatically install everything you need to develop, build, and set up your MCP server.
create-mcp-ts
can automatically configure your MCP server in Cursor, Windsurf, and Claude Desktop:
npm run setup
This script checks if your-server
already exists in each client's respective MCP configuration file. If not, it adds an entry pointing to the server script (dist/index.js
):
{
"mcpConfig": {
"your-server": {
"command": "node",
"args": ["/path/to/your-server/dist/index.js"]
}
}
}
For more details on how to set up MCP servers in Cursor, Windsurf, and Claude Desktop, see:
If you'd like to use a custom template, you can do so by passing the template npm package name or file path to the npx create-mcp-ts
command:
npx create-mcp-ts your-server --template=mcp-ts-template-default
npx create-mcp-ts your-server --template=file:/path/to/mcp-ts-template
If you plan to share your MCP server, you can publish it to npm:
"version"
in package.json
and ensure "private"
is set to false
.npm install
.npm run build
.npm login
(if needed).npm publish
.mcp-scripts
The mcp-scripts
package contains build tools for create-mcp-ts
projects - everything you'll need to develop, build, and set up an MCP server without any additional configuration.
Under the hood mcp-scripts
uses tsup and esbuild, lightweight, battle-tested utilities that are well-suited for production-grade TypeScript projects.
If you'd like to eject from mcp-scripts
, run the following command:
npm run eject
This will remove the mcp-scripts
dependency and replace any related commands from your project's package.json
file.
If you experience issues running your MCP server, the first thing to check is that you have Node.js installed globally. You can check this by running:
node --version
If you don't have Node.js installed, you can install it by following the instructions here.
Some MCP client environments may not have access to the full system PATH, which can cause issues when using Node.js version managers like nodenv
or nvm
. In these cases, you'll need to specify the full path to the Node.js binary in your MCP config:
{
"mcpConfig": {
"your-server": {
"command": "/absolute/path/to/node",
"args": ["/path/to/your-mcp-server/dist/index.js"]
}
}
}
To find the absolute path to your Node.js binary, you can run:
which node
Make sure to update your MCP config in each client (Cursor, Windsurf, or Claude Desktop) with the correct absolute path to the Node.js binary you want to use.
For any other issues, please open an issue here.
create-mcp-ts
is designed to be a batteries-included, "it just works" experience for MCP server developers.
mcp-scripts
. It uses tsup, esbuild, and other amazing open source projects, but provides a curated experience on top of them.This project is inspired by create-react-app.
create-mcp-ts
projects.create-mcp-ts
.