Skip to main content
Glama

MCP Server Starter

A production-ready starter template for building Model Context Protocol (MCP) servers with TypeScript.

🚀 Quick Start

  1. Clone the repository

  2. Install dependencies:

    bun install

Related MCP server: MCP Server Starter

✨ Key Features

  • Bun for fast testing and development

  • Biome for linting and formatting

  • Automated version management with standard-version

  • Clean, maintainable project structure

📂 Project Structure

mcp-starter/
├── src/
│   ├── tools/          # MCP tools implementation
│   ├── utils/          # Shared utilities
│   ├── main.ts         # Server entry point
│   └── types.ts        # Shared type definitions
├── tests/              # Test files
├── biome.json          # Linting configuration
├── tsconfig.json       # TypeScript configuration
└── package.json        # Project dependencies

⚙️ Configuration

Creating New Tools

The project includes a script to help create new MCP tools:

bun run scripts/create-tool.ts <tool-name>

This will:

  1. Create a new tool directory under src/tools/<tool-name>

  2. Generate the basic tool structure including:

    • index.ts (main implementation)

    • schema.ts (JSON schema for tool parameters)

    • test.ts (test file)

  3. Update the tools index file to export the new tool

Example:

bun run scripts/create-tool.ts weather

🛠️ Development

  • Run tests: bun test

  • Format code: bun run format

  • Lint code: bun run lint

  • Build project: bun run build

To add your development MCP server to Claude Desktop:

  1. Build the project:

    bun run build
  2. Add to your Claude Desktop config:

    // You only need the argument if you need to pass arguments to your server
    {
      "mcpServers": {
        "your-server-name": {
          "command": "node",
          "args": ["/path/to/your/project/dist/main.js", "some_argument"]
        }
      }
    }

📜 Version Management

This project uses standard-version for automated version management. Run bun run release to create a new version.

Commit Message Format

  • feat: New feature (bumps minor version)

  • fix: Bug fix (bumps patch version)

  • BREAKING CHANGE: Breaking change (bumps major version)

📦 Publishing to npm

  1. Ensure you're logged in to npm:

    npm login
  2. Build the project:

    bun run build
  3. Publish the package:

    npm publish

Remember to update the version number using bun run release before publishing new versions.

Installing from npm (after publishing)

Add to your Claude Desktop config:

// You only need the argument if you need to pass arguments to your server
{
  "mcpServers": {
    "your-server-name": {
      "command": "npx",
      "args": ["-y", "your-package-name", "some_argument"]
    }
  }
}

Available Tools

1 tool
hello_toolD

Hello tool

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the person to greet

TDQS

D1.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Hello tool' gives no information about whether this is a read/write operation, what permissions might be required, what side effects occur, or what the tool actually does. It fails completely to describe behavioral traits.

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

Conciseness2/5

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

While technically concise with just two words, this represents under-specification rather than effective conciseness. The description is too brief to be useful, failing to communicate essential information. Every sentence should earn its place, but here the single 'sentence' doesn't earn its place by providing meaningful content.

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

Completeness1/5

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

Given that this is a tool with no annotations, no output schema, and a minimal description, the description is completely inadequate. For even a simple tool, 'Hello tool' provides insufficient context about what the tool does, when to use it, or what behavior to expect. The description fails to meet minimum requirements for completeness.

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?

Schema description coverage is 100%, with the schema clearly documenting the single 'name' parameter. The description adds no parameter information beyond what's in the schema, but with complete schema coverage, the baseline score is 3. The description doesn't compensate for any gaps because there are none in the schema.

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

Purpose2/5

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

The description 'Hello tool' is a tautology that merely restates the tool name without specifying what it does. It doesn't provide a clear verb+resource combination or explain the tool's function beyond its name. While it doesn't actively mislead, it fails to communicate the tool's purpose effectively.

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

Usage Guidelines1/5

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

The description provides absolutely no guidance about when to use this tool, what context it's appropriate for, or any alternatives. With no sibling tools mentioned, the bar is lower, but the description still offers zero usage information, leaving the agent with no context for tool selection.

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

TDQS

C2.2/5.0
Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool 'hello_tool' stands alone with a distinct purpose, making it impossible for an agent to misselect among alternatives.

Naming Consistency5/5

A single tool inherently follows a consistent naming pattern, as there are no other tools to compare it against. The name 'hello_tool' uses snake_case and a clear verb-noun structure, which would be consistent if more tools were added.

Tool Count2/5

A single tool is too few for most server purposes, as it limits functionality and suggests an incomplete or trivial implementation. For a server named 'MCP Server Starter', which implies a foundational or example setup, one tool feels insufficient to demonstrate meaningful capabilities.

Completeness1/5

With only a 'hello_tool', the server lacks any substantial coverage of a domain. There are obvious gaps, as no CRUD operations, lifecycle management, or core workflows are provided, making it severely incomplete for any practical use case.

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
    C
    quality
    D
    maintenance
    A production-ready template for building Model Context Protocol servers in TypeScript, offering fast development with Bun, Biome linting, and automated version management.
    1
    89
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A TypeScript template for building Model Context Protocol servers that provides a structured foundation with automated tools, testing, and synchronization capabilities.
    15

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/StevenStavrakis/mcp-starter-template'

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