MCP Server Builder
# MCP Server Builder
A minimalist MCP server that scaffolds basic MCP server projects for VS Code and Cursor.
---
## For Users
### Installation
```bash
git clone https://github.com/joe-watkins/MCP-Builder.git
cd MCP-Builder
npm install
npm run build
```
### MCP Configuration
Add this to your editor's MCP settings configuration files:
**VS Code**:
```json
{
"mcp.servers": {
"mcp-server-builder": {
"command": "node",
"args": ["/absolute/path/to/MCP-Builder/dist/index.js"]
}
}
}
```
**Cursor**:
```json
{
"mcp.servers": {
"mcp-server-builder": {
"command": "node",
"args": ["/absolute/path/to/MCP-Builder/dist/index.js"]
}
}
}
```
**Note:** Replace `/absolute/path/to/MCP-Builder` with the actual absolute path where you cloned this repository.
## Usage
Once configured, use the `create_mcp_server` tool to generate new MCP server projects:
- **name** (required): Project name (kebab-case recommended)
- **description** (optional): Project description
- **author** (optional): Author name
- **outputPath** (optional): Target directory (defaults to current working directory)
- **includeResources** (optional): Force include resources capability (default: false)
- **analyzeFiles** (optional): File paths to analyze for auto-determining capabilities
- **createSubdirectory** (optional): Create project in new subdirectory (default: false)
### Intelligent File Analysis
The builder can analyze your files to automatically determine what capabilities to include:
```json
{
"name": "my-smart-server",
"analyzeFiles": ["./data.json", "./config.yaml", "./docs/"]
}
```
**Auto-detects Resources for:**
- Data files: `.json`, `.yaml`, `.xml`, `.csv`, `.txt`, `.md`
- Config files: `.config`, `.env`, files named "config"
- Directories containing data files
- Files with structured content (JSON/YAML patterns)
### Directory Behavior
**Default (Current Directory):**
```json
{
"name": "my-server"
}
```
→ Creates files directly in current directory
**Subdirectory Mode:**
```json
{
"name": "my-server",
"createSubdirectory": true
}
```
→ Creates `./my-server/` subdirectory with files
## Tutorial: Your First MCP Server with Example Data
This project includes a fun example JSON dataset to help you create your first MCP server: **Ferengi Rules of Acquisition** from Star Trek! This is perfect for learning how to build an MCP server that serves data.
Once you get the MCP Server Builder set up, you can use the `create_mcp_server` tool to generate a server that provides access to this dataset - or just use a prompt. The builder will analyze the JSON file and automatically include the Resources capability, making it easy to serve the data to your AI assistant.
### What's Included
The `docs/ferengi-rules-of-acquisition.json` file contains 200+ Rules of Acquisition—the sacred commercial guidelines of the Ferengi species. Each rule includes:
- Rule number
- The rule text
- Source (episode, novel, or game)
### Create Your First Server
**Step 1: Copy the example data to a new folder**
```bash
mkdir ferengi-rules-server
cp docs/ferengi-rules-of-acquisition.json ferengi-rules-server/
```
**Step 2: Ask your AI assistant to build the server**
In VS Code/Cursor, simply tell your AI assistant:
> "Create an MCP server in the ferengi-rules-server folder that provides access to Ferengi Rules of Acquisition. Analyze the ferengi-rules-of-acquisition.json file in that directory."
That's it! Your AI assistant will use the `create_mcp_server` tool to:
- Detect the JSON data file
- Automatically include the Resources capability
- Generate a complete MCP server project with all the scaffolding
- Set up TypeScript, build tools, and development workflow
### Ideas for Your Server
Once you have the basic server running, you could add:
- **Tools:**
- `get_rule_by_number` - Fetch a specific rule
- `search_rules` - Search by keyword
- `random_rule` - Get a random rule for inspiration
- `rules_by_source` - Filter by episode or book
- **Resources:**
- `ferengi://rules/all` - All rules as a resource
- `ferengi://rules/{number}` - Individual rule by number
- `ferengi://rules/random` - Random rule
- **Prompts:**
- Help users apply Ferengi wisdom to their business decisions
- Generate "Ferengi-style" advice for scenarios
**Example prompts to add these features:**
> "Add a tool called `get_rule_by_number` to the Ferengi server that takes a rule number and returns that specific rule from the JSON file."
> "Add a `search_rules` tool that searches through all the rules and returns any that contain the search keyword in the rule text."
> "Create a `random_rule` tool that returns a random Ferengi Rule of Acquisition for inspiration."
This example demonstrates how any JSON data source can become an MCP server that AI assistants can query and use!
### Generated Project Features
- TypeScript with strict configuration
- MCP SDK integration with best practices
- Example tool implementation
- Optional resources capability (auto-detected or manual)
- Development workflow with hot reload
- Comprehensive build setup
---
## For Developers
### Development Setup
```bash
git clone https://github.com/joe-watkins/MCP-Builder.git
cd MCP-Builder
npm install
npm run dev
```
### Scripts
- `npm run build` - Compile TypeScript
- `npm run dev` - Development mode with hot reload
- `npm start` - Run compiled server
### Project Structure
```
src/
├── index.ts # Entry point
├── server.ts # Main server implementation
└── tools/
└── create-mcp-server.ts # Server generation tool
```
### Contributing
The generated projects include everything needed to start building MCP servers immediately. When making changes to the builder:
1. Test with `npm run dev` for hot reload
2. Build with `npm run build`
3. Test the generated servers to ensure they work correctlyTDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion or overlap between tools. The tool has a clear, singular purpose that is distinct by default.
A single tool inherently has perfect naming consistency, as there are no other tools to compare it against. The name 'create_mcp_server' follows a clear verb_noun pattern.
A single tool is too few for a server builder domain, which typically requires operations like list, update, delete, or test servers. This minimal set limits functionality and suggests an incomplete implementation.
The tool surface is severely incomplete for a server builder. It only supports creation, with no ability to manage, modify, or interact with existing servers, leaving significant gaps in the expected lifecycle.