Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Server Templatelist all available tools"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server Template
A starter template for creating Model Context Protocol (MCP) servers that integrate with Claude Desktop and other MCP-compatible clients.
For details, check Anthroic mcp documentation https://docs.anthropic.com/en/docs/mcp
Features
Stdio transport implementation, including Claude Desktop integration
Configurable tool system with built-in and custom tools
JSON-based configuration with environment variable overrides
Docker support for containerized deployment
Comprehensive logging and error handling
TypeScript-ready structure
Example tools for common operations
Related MCP server: mcp-framework-starter
Quick Start
Installation
# Clone the template
git clone https://github.com/yourusername/mcp-server-template.git
cd mcp-server-template
# Install dependencies
npm install
# Run in development mode
npm run devConfiguration
Create a config.json file in the project root:
{
"serverName": "my-mcp-server",
"version": "1.0.0",
"debug": true,
"dataDir": "./data",
"outputDir": "./output",
"tools": {
"enabled": true,
"customToolsDir": "./custom-tools"
}
}Claude Desktop Integration
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["/path/to/mcp-server-template/src/server/index.js"]
}
}
}Project Structure
mcp-server-template/
├── src/
│ ├── server/ # Core server implementation
│ │ └── index.js # Main server entry point
│ ├── config/ # Configuration management
│ │ └── config-loader.js
│ ├── tools/ # Tool system
│ │ └── tool-registry.js
│ └── generator/ # Template generator (optional)
├── examples/ # Example implementations
│ ├── custom-tool.js # Example custom tool
│ └── docker/ # Docker configuration
├── tests/ # Test suite
├── docs/ # Documentation
├── config.json # Default configuration
└── package.jsonCreating Custom Tools
Create a new tool in the custom-tools directory:
// custom-tools/my-tool.js
export default {
name: 'my_custom_tool',
description: 'Description of what this tool does',
inputSchema: {
type: 'object',
properties: {
param1: {
type: 'string',
description: 'First parameter'
},
param2: {
type: 'number',
description: 'Second parameter'
}
},
required: ['param1']
},
handler: async (args) => {
// Tool implementation
const result = await doSomething(args.param1, args.param2);
return {
success: true,
result: result
};
}
};Built-in Tools
The template includes several built-in tools:
list_items- List all items with optional filteringadd_item- Add a new item to the systemremove_item- Remove an item by IDsearch_items- Search items with advanced queriesget_status- Get system status and statistics
Environment Variables
Override configuration using environment variables:
MCP_SERVER_NAME- Server nameMCP_VERSION- Server versionMCP_DEBUG- Enable debug loggingMCP_DATA_DIR- Data directory pathMCP_OUTPUT_DIR- Output directory pathMCP_CONFIG_PATH- Custom config file path
Docker Deployment
Build and run with Docker:
# Build image
docker build -t my-mcp-server .
# Run container
docker run -d \
-v $(pwd)/data:/app/data \
-v $(pwd)/output:/app/output \
--name my-mcp-server \
my-mcp-serverDevelopment
Running Tests
npm testLinting
npm run lintBuilding for Production
npm run buildAPI Reference
Tool Schema
All tools follow this schema:
{
name: string, // Unique tool identifier
description: string, // Human-readable description
inputSchema: { // JSON Schema for parameters
type: 'object',
properties: {},
required: []
},
handler: async function // Tool implementation
}Configuration Schema
{
serverName: string, // Server identifier
version: string, // Server version
debug: boolean, // Enable debug logging
dataDir: string, // Data storage directory
outputDir: string, // Output directory
maxFileSize: number, // Maximum file size in bytes
timeout: number, // Request timeout in ms
tools: {
enabled: boolean, // Enable tool system
customToolsDir: string // Custom tools directory
}
}Extending the Template
Adding New Features
Create feature modules in
src/features/Register with the server in
src/server/index.jsAdd configuration options to
config-loader.jsDocument in README and API reference
Creating Domain-Specific Servers
Fork this template
Replace example tools with domain-specific tools
Customize configuration schema
Update documentation
Deploy as standalone MCP server
Troubleshooting
Common Issues
Server not starting:
Check Node.js version (>=16.0.0)
Verify configuration file syntax
Check file permissions
Tools not loading:
Verify tool file exports default object
Check tool schema validity
Review debug logs for errors
Claude Desktop integration:
Ensure correct path in configuration
Check server process is running
Review Claude Desktop logs
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Add tests for new features
Update documentation
Submit a pull request
License
MIT License - see LICENSE file for details
Support
GitHub Issues: Report bugs or request features
Documentation: Full documentation
Examples: See the
examples/directory
Acknowledgments
Built for the Model Context Protocol ecosystem, enabling AI assistants to interact with external systems through a standardized interface.
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.