MCP TypeScript Boilerplate
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 TypeScript Boilerplatescaffold a new MCP server for a weather API"
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 TypeScript Boilerplate
A starting point for building MCP servers with the official @modelcontextprotocol/sdk, no wrapper framework. Extracted from a working, published server (mcp-abuseipdb).
Layers
src/
config.ts env loading + validation — API key, base URL, timeout
client.ts generic fetch wrapper — no domain knowledge, rarely needs changes
apiClient.ts adds this API's auth header + error unwrapping, on top of client.ts
endpoints/ one file per API endpoint you call — HTTP shape only
example.ts
tools/
types.ts the Tool interface every tool file implements
example.ts one tool: schema + handler, calls into endpoints/
index.ts tool registry — tools[] array
server.ts wires the tool registry into an McpServer instance
index.ts entrypoint: loadConfig() → createServer() → connect stdio transportRelated MCP server: TypeScript MCP Server Boilerplate
Adapting this to a new service
src/config.ts— renameAPI_KEYto<SERVICE>_API_KEY, set the realBASE_URLsrc/apiClient.ts— match the target API's auth scheme (header name,Bearervs custom) and error response shapesrc/endpoints/— one function per endpoint, deleteexample.tssrc/tools/— one tool per file (schema + result formatting), deleteexample.ts, register real tools intools/index.tspackage.json— rename, updatebin, description, repo URLs
Build
npm install
cp .env.example .env # fill in API_KEY
npm run build
npm startDesign notes
client.tshas zero domain knowledge — it should not need to change between projectsapiClient.tsis the only layer that knows about auth and this API's error formatendpoints/returns typed data,tools/formats that data as MCPcontent— don't blend the twostdio transport, so this works with Claude Desktop, Claude Code, and any other MCP-compatible client without extra setup
Available Tools
1 toolget_exampleA
Fetch an example resource by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID to look up |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It fails to mention any side effects, authorization needs, or response format. For a read operation, at least the idempotent nature should be hinted.
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?
Single sentence with no wasted words. Perfectly concise and directly gets to the point without any fluff.
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?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description is mostly complete. It could mention what is returned, but without an output schema, the current description suffices.
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% and the schema already describes the parameter as 'Resource ID to look up'. The description adds only 'by ID', which does not provide additional meaning beyond the schema. Baseline score of 3 is appropriate.
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?
Description clearly states the verb 'Fetch' and the resource 'example resource' with method 'by ID', making the tool's purpose unambiguous. No siblings to differentiate from, but the purpose is specific.
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 explicit guidance on when to use this tool versus alternatives. Since there are no sibling tools, the description is minimally adequate but lacks any context about prerequisites or when not to use it.
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. Dates show when Glama detected each change.
1 tool update
v1.0.0- First observed
get_example
TDQS
There is only one tool, so no ambiguity exists. An agent cannot confuse it with another tool.
With a single tool, naming consistency is not a concern; there is no inconsistency to evaluate.
As a boilerplate server, one tool is appropriate for its demonstration purpose. It is minimal but not unreasonable.
For a boilerplate, the single tool serves as an example. However, it lacks any create, update, or delete operations, which limits its completeness.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A simple Typescript MCP server built using the official MCP Typescript SDK and smithery/cli. This…
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…
The official MCP Server for the Mux API
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA boilerplate project for quickly developing MCP servers using TypeScript SDK, with example implementations of calculator and greeting tools, plus resource handling capabilities.-
- FlicenseAqualityDmaintenanceA boilerplate for building MCP servers using TypeScript, with example tools like calculator and greet, plus resource support.6-
- FlicenseBqualityDmaintenanceA TypeScript MCP server boilerplate providing example tools and resources for rapid development of custom Model Context Protocol servers.8-
- FlicenseNot gradedqualityDmaintenanceA TypeScript MCP server boilerplate providing example tools and resources for rapid development and testing of Model Context Protocol servers.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/abe-source/mcp-typescript-boilerplate'
If you have feedback or need assistance with the MCP directory API, please join our Discord server