Skip to main content
Glama
README.md
# MCP Server Boilerplate

<a href="https://glama.ai/mcp/servers/tdjg6t8sk8"><img width="380" height="200" src="https://glama.ai/mcp/servers/tdjg6t8sk8/badge" alt="MCP Server Boilerplate on Glama" /></a>

Production-ready starter templates for building [Model Context Protocol](https://modelcontextprotocol.io/) 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.

## What's Included (Free)

### TypeScript Quickstart

```typescript
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

```python
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

```json
{
  "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](https://shellsage-ai.github.io/)** ($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 →](https://shellsage-ai.github.io/)**

## Resources

- [MCP Specification](https://spec.modelcontextprotocol.io/)
- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)
- [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk)
- [Claude Desktop MCP Docs](https://docs.anthropic.com/en/docs/build-with-claude/mcp)
- [Glama MCP Directory](https://glama.ai/mcp/servers/tdjg6t8sk8)

## License

MIT — use this however you want.

TDQS

A4.4/5.0

Scored across 2 tools

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