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-serverThe template includes:
- Basic server setup with both stdio and HTTP transport options using FastMCP
- Structure for defining MCP tools, resources, and prompts
- TypeScript configuration
- Development scripts and configuration
- FastMCP: Built using the FastMCP framework for simpler implementation
- Dual Transport Support: Run your MCP server over stdio or HTTP
- TypeScript: Full TypeScript support for type safety
- Extensible: Easy to add custom tools, resources, and prompts
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): - Runs on your local machine
- Managed automatically by Cursor
- Communicates directly via stdout
- Only accessible by you locally
- Ideal for personal development and tools
 
- 
SSE Transport (HTTP Web Mode): - Can run locally or remotely
- Managed and run by you
- Communicates over the network
- Can be shared across machines
- Ideal for team collaboration and shared tools
 
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 devStart 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:httpBy 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:httpTo connect to your MCP server from Cursor:
- Open Cursor and go to Settings (gear icon in the bottom left)
- Click on "Features" in the left sidebar
- Scroll down to "MCP Servers" section
- Click "Add new MCP server"
- Enter the following details:
- Server name: my-mcp-server(or any name you prefer)
- For stdio mode:
- Type: command
- Command: The path to your server executable, e.g., npm start
 
- Type: 
- For SSE mode:
- Type: url
- URL: http://localhost:3001/sse
 
- Type: 
 
- Server name: 
- Click "Save"
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:
- The commandtype entries run the server in stdio mode
- The urltype entry connects to the HTTP server using SSE transport
- You can provide environment variables using the envfield
- When connecting via SSE with FastMCP, use the full URL including the /ssepath: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.tsYou 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:httpWhen 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.