What is A CLI tool to quickly get started building your very own MCP server using FastMCP.?
This project provides a template for creating an MCP (Model Context Protocol) server using FastMCP. It includes basic server setup with stdio and HTTP transport options, TypeScript configuration, and development scripts. The server supports dual transport methods for local and remote access, making it ideal for personal development and team collaboration.
Documentation
@mcpdotdirect/template-mcp-server
A CLI tool to quickly get started building your very own MCP (Model Context Protocol) server using FastMCP
📋 Usage
npx @mcpdotdirect/create-mcp-server
# Or with npm
npm init @mcpdotdirect/mcp-server
🔭 What's Included
The 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
✨ Features
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
🚀 Getting Started
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.
📖 Detailed Usage# Transport Methods
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
Running the Server Locally## stdio Transport (CLI Mode)
Start the server in stdio mode for CLI tools:
npm start\n\n# or with other package managers
yarn start
pnpm start
bun start
# Start the server in development mode with auto-reload
npm run dev\n\n# or
yarn dev
pnpm dev
bun dev
HTTP Transport (Web Mode)
Start the server in HTTP mode for web applications:
npm run start:http\n\n# or
yarn start:http
pnpm start:http
bun start:http
# Start the HTTP server in development mode with auto-reload
npm run dev:http\n\n# 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:
PORT=8080 npm run start:http
Connecting to the Server## Connecting from Cursor
To 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
For SSE mode:
Type: url
URL: http://localhost:3001/sse
Click "Save"
Using mcp.json with Cursor
For a more portable configuration, create an .cursor/mcp.json file in your project's root directory:
You can also create a global configuration at ~/.cursor/mcp.json to make your MCP servers available in all your Cursor workspaces.
Note:
The command type entries run the server in stdio mode
The url type entry connects to the HTTP server using SSE transport
You can provide environment variables using the env field
When connecting via SSE with FastMCP, use the full URL including the /sse path: http://localhost:3001/sse
Testing Your Server with CLI Tools
FastMCP provides built-in tools for testing your server:
npx fastmcp dev server.js
# Inspect with MCP Inspector
npx fastmcp inspect server.ts
Using Environment Variables
You can customize the server using environment variables:
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
🛠️ Adding Custom Tools and Resources
When adding custom tools, resources, or prompts to your FastMCP server:
Tools
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}!`;
}
});
Resources
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}`
};
}
});
Prompts
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?`;
}
});