Create MCP Server Projects
A CLI scaffolding tool that generates a FastMCP-based starter MCP server with stdio and HTTP transports and TypeScript support.
Why it matters
Quickly set up and configure new MCP server projects using the FastMCP framework. Supports TypeScript and offers both stdio and HTTP transport options for flexible deployment.
Outcomes
What it gets done
Initialize new MCP server projects with TypeScript support.
Configure server transports (stdio or HTTP).
Integrate custom tools, resources, and prompts.
Utilize built-in testing and development scripts.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-template-mcp-server | bash Overview
Template MCP Server
This CLI tool scaffolds a FastMCP-based MCP server project with stdio and HTTP/SSE transports, TypeScript configuration, and working examples for tools, resources, and prompts. It includes FastMCP's built-in dev and inspect commands for testing. Use it to bootstrap a new MCP server instead of writing FastMCP boilerplate manually. Not needed if a project already has an MCP server scaffold in place.
What it does
A CLI scaffolding tool that generates a starter MCP (Model Context Protocol) server project built on the FastMCP framework, with dual transport support - stdio for local, CLI-driven use and HTTP/SSE for networked or team-shared use - full TypeScript configuration, and pre-wired examples for defining custom tools, resources, and prompts.
When to use - and when NOT to
Use it when bootstrapping a new MCP server from scratch instead of writing FastMCP setup boilerplate by hand, especially if the plan is to add custom tools, resources, or prompts and needs both a local CLI transport and a shareable HTTP transport out of the box. Do NOT use it if a project already has an MCP server scaffold in place, or if the team needs a runtime the generated defaults don't assume - the default package.json scripts run on Bun, though they can be edited to use Node.js or another runtime instead.
Capabilities
Generated via npx @mcpdotdirect/create-mcp-server or npm init @mcpdotdirect/mcp-server, the template ships both stdio and HTTP transports, with the HTTP server defaulting to port 3001 (configurable via PORT and HOST environment variables) and dev-mode scripts with auto-reload for both transports. It also wires in FastMCP's built-in testing tools - npx fastmcp dev server.js and npx fastmcp inspect server.ts - and documents how to add custom tools with server.addTool and zod-validated parameters, resource templates with server.addResourceTemplate and URI templates, and prompts with server.addPrompt. The two transports serve different situations: stdio runs only on the local machine, is managed automatically by an editor like Cursor, and communicates directly over stdout, making it well suited to personal development tools; SSE/HTTP can run locally or remotely, is managed by the developer, communicates over the network, and can be shared across machines, making it the better fit for team collaboration on shared tools.
How to install
npx @mcpdotdirect/create-mcp-server
After generation, install dependencies with npm, yarn, pnpm, or bun, then run npm start (stdio) or npm run start:http (HTTP), or the dev/dev:http variants for auto-reload. To connect from Cursor, add a server via Settings > Features > MCP Servers - command mode for stdio, url mode pointing at http://localhost:3001/sse for SSE - or drop a .cursor/mcp.json file (project-local, or ~/.cursor/mcp.json for a global config) with command/args/env fields for stdio entries and a url field for SSE entries.
Who it's for
Developers who want to build a custom MCP server - with their own tools, resources, and prompts - without writing FastMCP setup boilerplate themselves, particularly those integrating with Cursor or another MCP client over stdio or SSE and who want TypeScript support from the start.
Source README
@mcpdotdirect/template-mcp-server
A CLI tool to quickly get started building your very own MCP (Model Context Protocol) server using FastMCP
📋 Usage
# with npx
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 installStart the server:
# Start the stdio server npm start # Or start the HTTP server npm run start:httpFor 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:
# 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
HTTP Transport (Web Mode)
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
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
- Type:
- For SSE mode:
- Type:
url - URL:
http://localhost:3001/sse
- Type:
- Server name:
- Click "Save"
Using mcp.json with Cursor
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
Testing Your Server with CLI Tools
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
Using Environment Variables
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
🛠️ 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?`;
}
});
📚 Documentation
For more information about FastMCP, visit FastMCP GitHub Repository.
For more information about the Model Context Protocol, visit the MCP Documentation.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.