Create mcp-use App
π Create mcp-use App is the fastest way to scaffold a new MCP (Model Context Protocol) application. With just one command, you get a fully configured TypeScript project with hot reload, automatic inspector, and UI widget support - everything you need to build powerful MCP servers.
π¦ Related Packages
β‘ Quick Start
Create a new MCP application in seconds:
npx create-mcp-use-app my-mcp-server
cd my-mcp-server
npm run dev
That's it! Your MCP server is running at http://localhost:3000 with the inspector automatically opened in your browser.
π― What It Creates
Running create-mcp-use-app sets up a complete MCP development environment:
Project Structure
my-mcp-server/
βββ package.json # Pre-configured with all scripts
βββ tsconfig.json # TypeScript configuration
βββ .env.example # Environment variables template
βββ .gitignore # Git ignore rules
βββ README.md # Project documentation
βββ src/
β βββ index.ts # MCP server entry point with example tools
βββ resources/ # UI widgets directory
β βββ example-widget.tsx # Example React widget
βββ dist/ # Build output (generated)
Pre-configured Features
| π TypeScript | Full TypeScript setup with proper types |
| π₯ Hot Reload | Auto-restart on code changes during development |
| π Auto Inspector | Inspector UI opens automatically in dev mode |
| π¨ UI Widgets | React components that compile to standalone pages |
| π οΈ Example Tools | Sample MCP tools, resources, and prompts |
| π¦ Build Scripts | Ready-to-use development and production scripts |
| π Production Ready | Optimized build configuration |
π Usage Options
Interactive Mode
Run without any arguments to enter interactive mode:
npx create-mcp-use-app
You'll be prompted for:
- Project name
- Project template
- Package manager preference
Direct Mode
Specify the project name directly:
npx create-mcp-use-app my-project
With Options
npx create-mcp-use-app my-project --template advanced
npx create-mcp-use-app my-project --use-npm
npx create-mcp-use-app my-project --use-yarn
npx create-mcp-use-app my-project --use-pnpm
npx create-mcp-use-app my-project --skip-install
π¨ Available Templates
Basic Template (Default)
The basic template includes:
- Simple MCP server setup
- Example tool, resource, and prompt
- Basic UI widget example
- Essential configuration files
Perfect for getting started quickly or building simple MCP servers.
Advanced Template
The advanced template includes everything from basic plus:
- Multiple tools with complex schemas
- OAuth authentication example
- Database integration patterns
- Advanced UI widgets with state management
- Observability setup with Langfuse
- Docker configuration
- CI/CD workflows
Ideal for production applications or complex integrations.
Minimal Template
The minimal template includes:
- Bare-bones MCP server
- No example tools or widgets
- Essential configuration only
Best for experienced developers who want full control.
ποΈ What Gets Installed
The scaffolded project includes these dependencies:
Core Dependencies
mcp-use - The MCP framework
@mcp-use/cli - Build and development tool
@mcp-use/inspector - Web-based debugger
Development Dependencies
typescript - TypeScript compiler
tsx - TypeScript executor for development
@types/node - Node.js type definitions
Optional Dependencies (Advanced Template)
- Database drivers (PostgreSQL, SQLite)
- Authentication libraries
- Monitoring tools
π After Installation
Once your project is created, you can:
Start Development
npm run dev
yarn dev
pnpm dev
This will:
- Start the MCP server on port 3000
- Open the inspector in your browser
- Watch for file changes and auto-reload
Build for Production
npm run build
Creates an optimized build in the dist/ directory.
Start Production Server
npm run start
Runs the production build.
π‘ First Steps
After creating your app, here's what to do next:
1. Explore the Example Server
Open src/index.ts to see how to:
- Define MCP tools with Zod schemas
- Create resources for data access
- Set up prompts for AI interactions
2. Try the Inspector
The inspector automatically opens at http://localhost:3000/inspector where you can:
- Test your tools interactively
- View available resources
- Debug tool executions
- Monitor server status
3. Create a UI Widget
Edit resources/example-widget.tsx or create new widgets:
import React from 'react'
import { useMcp } from 'mcp-use/react'
export default function MyWidget() {
const { callTool } = useMcp()
const handleClick = async () => {
const result = await callTool('my_tool', {
param: 'value',
})
console.log(result)
}
return (
<div>
<button onClick={handleClick}>Call MCP Tool</button>
</div>
)
}
4. Connect to AI
Use the MCP server with any MCP-compatible client:
import { MCPClient, MCPAgent } from 'mcp-use'
import { ChatOpenAI } from '@langchain/openai'
const client = new MCPClient({
url: 'http://localhost:3000/mcp',
})
const agent = new MCPAgent({
llm: new ChatOpenAI(),
client,
})
const result = await agent.run('Use my MCP tools')
π§ Configuration
Environment Variables
The created project includes a .env.example file:
PORT=3000
NODE_ENV=development
OAUTH_CLIENT_ID=your_client_id
OAUTH_CLIENT_SECRET=your_client_secret
DATABASE_URL=postgresql://localhost/myapp
LANGFUSE_PUBLIC_KEY=your_public_key
LANGFUSE_SECRET_KEY=your_secret_key
Copy to .env and configure as needed:
cp .env.example .env
TypeScript Configuration
The tsconfig.json is pre-configured for MCP development:
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"jsx": "react-jsx",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
}
}
π Examples
Creating a Tool
server.tool('search_database', {
description: 'Search for records in the database',
parameters: z.object({
query: z.string().describe('Search query'),
limit: z.number().optional().default(10),
}),
execute: async ({ query, limit }) => {
const results = await db.search(query, limit)
return { results }
},
})
Creating a Resource
server.resource('user_profile', {
description: 'Current user profile data',
uri: 'user://profile',
mimeType: 'application/json',
fetch: async () => {
const profile = await getUserProfile()
return JSON.stringify(profile)
},
})
Creating a Prompt
server.prompt('code_review', {
description: 'Review code for best practices',
arguments: [
{ name: 'code', description: 'Code to review', required: true },
{ name: 'language', description: 'Programming language', required: false },
],
render: async ({ code, language }) => {
return `Please review this ${
language || ''
} code for best practices:\n\n${code}`
},
})
π Troubleshooting
Common Issues
Command not found:
node --version
npx create-mcp-use-app@latest
Permission denied:
sudo npx create-mcp-use-app my-app
Network issues:
npm config set registry https://registry.npmjs.org/
Port already in use:
PORT=3001
π€ Contributing
We welcome contributions! To contribute:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
See our contributing guide for more details.
π Learn More
π License
MIT Β© mcp-use