mcp-boilerplate
Click on "Deploy 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-boilerplatefetch the URL https://example.com"
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 Boilerplate
Production-ready MCP server starter with TypeScript, realistic examples, and Claude Desktop integration.
A production-ready boilerplate for building Model Context Protocol (MCP) servers using TypeScript and Node.js.
Features
TypeScript pre-configured for modern module resolution (
NodeNext)tsupconfigured for lightning-fast buildsClean MCP SDK setup using
StdioServerTransportExample Tool (
web_fetch) β fetches URLs and returns content as a resourceExample Resource (
file://read) β reads local files securelyClaude Desktop integration guide
Quick Start
Installation
git clone https://github.com/agiulucom42-del/mcp-boilerplate.git
cd mcp-boilerplate
npm install
npm run buildRun the server
npm startMCP servers using stdio communicate via standard input/output. npm start waits for JSON-RPC messages from an MCP client.
Integration with Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["/absolute/path/to/mcp-boilerplate/dist/index.js"]
}
}
}Example Tool: web_fetch
The boilerplate ships with a realistic tool that fetches a URL and returns its content:
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === "web_fetch") {
const url = String(request.params.arguments?.url);
const response = await fetch(url);
const text = await response.text();
return {
content: [{ type: "text", text: text.slice(0, 10000) }]
};
}
throw new Error("Tool not found");
});Example Resource: file://read
Safely read files from an allowed directory:
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
const path = request.params.uri.replace("file://", "");
const content = await fs.readFile(path, "utf-8");
return {
contents: [{ uri: request.params.uri, text: content }]
};
});How to Customize
Add Tools: Edit the
CallToolRequestSchemahandler insrc/index.tsAdd Resources: Edit
ReadResourceRequestSchemaandListResourcesRequestSchemaChange Name: Update the
nameinnew Server()instantiation
π HUQAN Ecosystem
mcp-boilerplate is part of the HUQAN trust infrastructure for AI. Sister projects:
Tool | What it does |
π΄ Stop leaking API keys | |
π Score your README quality | |
π‘οΈ Scan repo before giving to agent | |
π Block PR scope creep | |
π Compare LLM outputs | |
π° Track LLM API costs | |
β Validate LLM JSON outputs | |
π§© MCP server starter You are here |
License
MIT Β© HUQAN
Available Tools
1 toolcalculate_sumA
Calculates the sum of two numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First number | |
| b | Yes | Second number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool is a calculation (no side effects), which is sufficient for a simple mathematical operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the essential information without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema required, the description is adequate. It covers the core functionality, and the schema covers the parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions ('First number', 'Second number'). The description adds no additional meaning beyond what the schema provides, achieving the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('calculates') and the resource ('sum of two numbers'). It is unambiguous and directly conveys the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. However, since there are no sibling tools, the need for explicit alternatives is reduced. The description implies usage from the name but offers no additional context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- First observed
calculate_sum
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity between tools.
The single tool uses a consistent verb_noun pattern (calculate_sum), which is clear and predictable.
A single trivial tool is an extreme mismatch for a functional server, even if it is a boilerplate example.
The server only offers a sum operation, lacking any other arithmetic operations, making it severely incomplete for basic math tasks.
Maintenance
Related MCP Connectors
A simple Typescript MCP server built using the official MCP Typescript SDK and smithery/cli. Thisβ¦
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automatiβ¦
Augments MCP Server - A comprehensive framework documentation provider for Claude Code