Skip to main content
Glama

MCP Server Boilerplate

Production-ready starter templates for building Model Context Protocol servers in TypeScript and Python.

Skip the boilerplate. Start building tools your AI agents can actually use.

Server Capabilities

This boilerplate ships with working examples of all three MCP primitives:

Tools

Tool

Description

Parameters

echo

Echo a message back to the caller

message (string, required)

timestamp

Get the current UTC timestamp

(none)

Resources

URI

Description

MIME Type

server://info

Server metadata (name, version, available tools)

application/json

Prompts

No prompt templates are registered in the starter. The full kit includes prompt template patterns.

Related MCP server: sequential-thinking-mcp

What's Included (Free)

TypeScript Quickstart

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new McpServer({
  name: "my-mcp-server",
  version: "1.0.0",
});

// Register a tool
server.tool("hello", { name: { type: "string" } }, async ({ name }) => ({
  content: [{ type: "text", text: `Hello, ${name}!` }],
}));

// Connect via stdio
const transport = new StdioServerTransport();
await server.connect(transport);

Python Quickstart

from mcp.server import Server
from mcp.server.stdio import stdio_server

app = Server("my-mcp-server")

@app.tool()
async def hello(name: str) -> str:
    """Say hello to someone."""
    return f"Hello, {name}!"

async def main():
    async with stdio_server() as (read, write):
        await app.run(read, write)

Claude Desktop Configuration

{
  "mcpServers": {
    "my-server": {
      "command": "npx",
      "args": ["tsx", "src/index.ts"]
    }
  }
}

Project Structure

my-mcp-server/
├── src/
│   └── index.ts          # Server entry point
├── tools/
│   └── example.ts        # Tool definitions
├── resources/
│   └── example.ts        # Resource providers
├── package.json
├── tsconfig.json
└── claude_desktop_config.json

Getting Started

  1. Clone this repo

  2. npm install

  3. npm run build

  4. Add to your Claude Desktop config

  5. Start building tools

Going Further

This free boilerplate gets you started. The MCP Server Boilerplate Kit ($49) includes:

  • ✅ Full TypeScript + Python dual-language templates

  • ✅ Docker containerization with multi-stage builds

  • ✅ CI/CD pipeline (GitHub Actions) for automated testing & deployment

  • ✅ SSE (Server-Sent Events) transport for web deployments

  • ✅ 15+ pre-built tool examples (file ops, API calls, database queries)

  • ✅ Resource and prompt template patterns

  • ✅ Error handling, logging, and retry patterns

  • ✅ Testing framework with mock MCP client

  • ✅ Production deployment guide (Docker, systemd, cloud)

  • ✅ Claude Desktop + Cursor + Windsurf integration configs

Get the full kit →

Resources

License

MIT — use this however you want.

Available Tools

2 tools
echoA

Echo a message back to the caller

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesMessage to echo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but the description fully captures the tool's behavior: it returns the input message. No hidden side effects or complexities exist for this trivial tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that is front-loaded with the main action. No unnecessary information is included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is very simple with one parameter and no output schema. The description adequately communicates the behavior, though it does not explicitly mention the return format, which is obvious.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage with a description for the single parameter 'message'. The tool description adds no additional meaning beyond the schema, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Echo') and the resource ('a message back to the caller'). It distinguishes itself from the sibling tool 'timestamp' by being a simple pass-through operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While no explicit when-to-use or when-not-to-use is given, the tool's simplicity and contrast with 'timestamp' make usage context clear. It is implied for testing or verification purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

timestampA

Get the current UTC timestamp

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It clearly indicates a read-only operation returning a timestamp, but lacks details on format (e.g., seconds vs. milliseconds) or any potential edge cases, though the simplicity of the tool makes this minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero extraneous words. It efficiently communicates the tool's purpose for a parameterless tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema, no complex behavior), the description fully suffices. It answers the fundamental question of what the tool does without omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline is 4. Schema coverage is 100% by default, and the description adds no parameter information because none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description precisely states the tool's function: 'Get the current UTC timestamp'. It uses a specific verb ('get') and resource ('current UTC timestamp'), clearly distinguishing it from the unrelated sibling 'echo'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives or mention any prerequisites. It implies usage for obtaining the current timestamp, but no explicit context or exclusions are given.

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. 2 tool updates
    • Addedecho
    • Addedtimestamp

TDQS

A4.4/5.0
Disambiguation5/5

The two tools have completely distinct purposes: one echoes messages, the other returns timestamps. There is no overlap or ambiguity.

Naming Consistency5/5

Both tool names are single-word lowercase verbs ('echo', 'timestamp'), following a consistent and predictable pattern.

Tool Count4/5

With only 2 tools, the set is minimal, but as a boilerplate or template, each tool serves a clear and essential purpose. It is slightly under the typical range but reasonable for its intended use.

Completeness5/5

For a boilerplate server, the tool surface is complete: it provides basic demonstration functions (echo and timestamp) with no missing operations.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Anthropic's github MCP server, but better. Support for more endpoints. Including releases and tags, pull request reviews, statuses, rate limit, gists, projects, packages, and even pull request diffs. Indented to be used with MissionSquad's MCP API for secret management (aka your access token).
    45
    861
    10
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A starter template for building MCP servers with TypeScript support, example tools, and automated installation scripts for Claude Desktop, Cursor, and other MCP-compatible AI assistants. Provides a foundation for creating custom tools, resource providers, and prompt templates.
    16
    -
  • F
    license
    A
    quality
    D
    maintenance
    A starter template for building MCP (Model Context Protocol) servers with TypeScript support. Provides a clean foundation with example tools, resources, and prompts for creating custom integrations with Claude, Cursor, or other MCP-compatible AI assistants.
    2
    14
    -

Latest Blog Posts

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/shellsage-ai/mcp-server-boilerplate'

If you have feedback or need assistance with the MCP directory API, please join our Discord server