Template to quickly set up your own MCP server
A CLI tool to quickly get started building your very own MCP (Model Context Protocol) server using FastMCP
# with npx
npx @mcpdotdirect/create-mcp-server
# Or with npm
npm init @mcpdotdirect/mcp-server
The template includes:
After creating your project:
Install dependencies using your preferred package manager:
# Using npm
npm install
# Using yarn
yarn
# Using pnpm
pnpm install
# Using bun
bun install
Start the server:
# Start the stdio server
npm start
# Or start the HTTP server
npm run start:http
For development with auto-reload:
# Development mode with stdio
npm run dev
# Development mode with HTTP
npm run dev:http
Note: The default scripts in package.json use Bun as the runtime (e.g.,
bun run src/index.ts
). If you prefer to use a different package manager or runtime, you can modify these scripts in your package.json file to use Node.js or another runtime of your choice.
The MCP server supports two transport methods:
stdio Transport (Command Line Mode):
stdout
SSE Transport (HTTP Web Mode):
Start the server in stdio mode for CLI tools:
# Start the stdio server
npm start
# or with other package managers
yarn start
pnpm start
bun start
# Start the server in development mode with auto-reload
npm run dev
# or
yarn dev
pnpm dev
bun dev
Start the server in HTTP mode for web applications:
# Start the HTTP server
npm run start:http
# or
yarn start:http
pnpm start:http
bun start:http
# Start the HTTP server in development mode with auto-reload
npm run dev:http
# or
yarn dev:http
pnpm dev:http
bun dev:http
By default, the HTTP server runs on port 3001. You can change this by setting the PORT environment variable:
# Start the HTTP server on a custom port
PORT=8080 npm run start:http
To connect to your MCP server from Cursor:
my-mcp-server
(or any name you prefer)command
npm start
url
http://localhost:3001/sse
For a more portable configuration, create an .cursor/mcp.json
file in your project's root directory:
{
"mcpServers": {
"my-mcp-stdio": {
"command": "npm",
"args": [
"start"
],
"env": {
"NODE_ENV": "development"
}
},
"my-mcp-sse": {
"url": "http://localhost:3001/sse"
}
}
}
You can also create a global configuration at ~/.cursor/mcp.json
to make your MCP servers available in all your Cursor workspaces.
Note:
command
type entries run the server in stdio modeurl
type entry connects to the HTTP server using SSE transportenv
field/sse
path: http://localhost:3001/sse
FastMCP provides built-in tools for testing your server:
# Test with mcp-cli
npx fastmcp dev server.js
# Inspect with MCP Inspector
npx fastmcp inspect server.ts
You can customize the server using environment variables:
# Change the HTTP port (default is 3001)
PORT=8080 npm run start:http
# Change the host binding (default is 0.0.0.0)
HOST=127.0.0.1 npm run start:http
When adding custom tools, resources, or prompts to your FastMCP server:
server.addTool({
name: "hello_world",
description: "A simple hello world tool",
parameters: z.object({
name: z.string().describe("Name to greet")
}),
execute: async (params) => {
return `Hello, ${params.name}!`;
}
});
server.addResourceTemplate({
uriTemplate: "example://{id}",
name: "Example Resource",
mimeType: "text/plain",
arguments: [
{
name: "id",
description: "Resource ID",
required: true,
},
],
async load({ id }) {
return {
text: `This is an example resource with ID: ${id}`
};
}
});
server.addPrompt({
name: "greeting",
description: "A simple greeting prompt",
arguments: [
{
name: "name",
description: "Name to greet",
required: true,
},
],
load: async ({ name }) => {
return `Hello, ${name}! How can I help you today?`;
}
});
For more information about FastMCP, visit FastMCP GitHub Repository.
For more information about the Model Context Protocol, visit the MCP Documentation.
This project is licensed under the MIT License - see the LICENSE file for details.