Skip to main content
Glama
coinselor

MCP Server Starter

by coinselor
README.md
# 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:
   ```bash
   bun install
   ```

## ✨ 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:

```bash
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:
```bash
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:
   ```bash
   bun run build
   ```
2. Add to your Claude Desktop config:
   ```json
   // 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](https://github.com/conventional-changelog/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:
   ```bash
   npm login
   ```
2. Build the project:
   ```bash
   bun run build
   ```
3. Publish the package:
   ```bash
   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:
```json
// 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"]
    }
  }
}

TDQS

C2.3/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools, as there are no other tools to compare it to. The single tool's purpose is clearly distinct by default, eliminating any risk of misselection.

Naming Consistency5/5

The tool name 'hello_tool' follows a consistent snake_case pattern, and with only one tool, there is no inconsistency in naming conventions. The naming is straightforward and predictable within this minimal set.

Tool Count2/5

A single tool is generally too few for a server's purpose, as it suggests a very limited or trivial scope that may not support meaningful agent workflows. This is borderline for appropriateness, leaning toward insufficient coverage for typical MCP server use cases.

Completeness1/5

With only one tool named 'hello_tool', the server's domain is unclear, making it impossible to assess coverage meaningfully. There are likely significant gaps for any inferred purpose, as a single tool cannot provide CRUD/lifecycle operations or a coherent workflow, leading to severe incompleteness.

Maintenance

ActivityInactive
ResponsivenessNo issues