Install
$ agentstack add mcp-technet365-mcp-starter-template ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
🚀 MCP Starter Template
Build MCP servers in minutes, not hours
[](https://github.com/technet365/MCP-Starter-Template/actions/workflows/ci.yml) [](https://opensource.org/licenses/MIT) [](https://www.typescriptlang.org/) [](https://modelcontextprotocol.io/)
What is this?
A minimal, production-ready TypeScript template for building Model Context Protocol servers. Clone, add your tools, deploy.
Includes:
- TypeScript + ESM setup
- Docker-ready with health checks
- Auth token support
- Rate limiting
- Sensitive data sanitization in logs
- CI/CD workflow
- Example tools to learn from
Quick Start
1. Clone & Install
git clone https://github.com/technet365/MCP-Starter-Template.git my-mcp-server
cd my-mcp-server
npm install
2. Run
# Development (hot reload)
npm run dev
# Production
npm run build
npm start
3. Test
curl http://localhost:3000/health
Create Your First Tool
Step 1: Create the tool file
// src/tools/weather.ts
import { z } from "zod";
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
export function registerWeatherTool(server: McpServer) {
server.tool(
"get_weather", // Tool name
"Get current weather for a city", // Description
{
city: z.string().describe("City name"),
},
async ({ city }) => {
// Your logic here
const weather = { city, temp: 22, condition: "sunny" };
return {
content: [{
type: "text" as const,
text: JSON.stringify(weather, null, 2),
}],
};
}
);
}
Step 2: Register it
// src/tools/index.ts
import { registerWeatherTool } from "./weather.js";
export function registerAllTools(server: McpServer) {
registerHelloTool(server);
registerCalculatorTool(server);
registerWeatherTool(server); // Add this
}
Step 3: Test
Restart the server and your tool is available!
Project Structure
src/
├── index.ts # HTTP server, auth, rate limiting
├── server.ts # MCP server factory
├── logger.ts # Logger with sensitive data redaction
└── tools/
├── index.ts # Tool registry
├── hello.ts # Example: simple tool
└── calculator.ts # Example: tool with validation
Configuration
| Variable | Default | Description | |----------|---------|-------------| | PORT | 3000 | Server port | | LOG_LEVEL | info | debug, info, warn, error | | MCP_AUTH_TOKEN | — | If set, requires Bearer token auth | | RATE_LIMIT_MAX | 120 | Max requests per minute per IP |
Docker
# Build
docker build -t my-mcp-server .
# Run
docker run -p 3000:3000 my-mcp-server
Or with docker-compose:
cp .env.example .env
docker compose up -d
Connect to Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"my-server": {
"url": "http://localhost:3000/mcp"
}
}
}
Example Projects
Built with this template:
- TastyScanner MCP Server — AI-powered options trading
License
[MIT](LICENSE) © 2025 technet365
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: technet365
- Source: technet365/MCP-Starter-Template
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.