VOOZH about

URL: https://glama.ai/mcp/servers/Mearman/mcp-ai

โ‡ฑ MCP Template by Mearman | Glama


MCP Template

๐Ÿ‘ npm version
๐Ÿ‘ License: CC BY-NC-SA 4.0

Build Status

๐Ÿ‘ CI Build
๐Ÿ‘ Tests

Related MCP server: MCP Server Starter

Release Status

๐Ÿ‘ Release
๐Ÿ‘ Template Sync

A TypeScript template for building MCP (Model Context Protocol) servers with automated template synchronization to downstream repositories.

Features

  • ๐Ÿš€ TypeScript with ES Modules - Modern JavaScript with full type safety

  • ๐Ÿงช Comprehensive Testing - Vitest with coverage reporting

  • ๐Ÿ”ง Code Quality - Biome for linting and formatting

  • ๐Ÿ“ฆ Automated Publishing - Semantic versioning and NPM publishing

  • ๐Ÿ”„ Template Synchronization - Automatic updates to derived repositories

  • ๐Ÿ› ๏ธ Development Tools - Hot reload, watch mode, and CLI support

  • ๐Ÿ“‹ Git Hooks - Automated linting and commit message validation

Quick Start

Using as Template

  1. Use this template on GitHub to create your new MCP server repository

  2. Clone your new repository:

    git clone https://github.com/yourusername/your-mcp-server.git
    cd your-mcp-server
  3. Install dependencies:

    yarn install
  4. Update configuration:

    • Edit package.json with your server name and details

    • Update src/index.ts server name and version

    • Replace example tools in src/tools/ with your implementations

Development

# Start development server with hot reload
yarn dev

# Run tests
yarn test

# Run tests in watch mode
yarn test:watch

# Build the project
yarn build

# Run linting
yarn lint

# Auto-fix linting issues
yarn lint:fix

Template Structure

mcp-template/
โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ index.ts # MCP server entry point
โ”‚ โ”œโ”€โ”€ cli.ts # CLI entry point (optional)
โ”‚ โ”œโ”€โ”€ tools/
โ”‚ โ”‚ โ”œโ”€โ”€ example.ts # Example tool implementation
โ”‚ โ”‚ โ”œโ”€โ”€ example.test.ts # Example tool tests
โ”‚ โ”‚ โ””โ”€โ”€ fetch-example.ts # HTTP fetch example tool
โ”‚ โ””โ”€โ”€ utils/
โ”‚ โ”œโ”€โ”€ validation.ts # Common validation schemas
โ”‚ โ””โ”€โ”€ fetch.ts # HTTP utilities with caching
โ”œโ”€โ”€ .github/
โ”‚ โ””โ”€โ”€ workflows/
โ”‚ โ”œโ”€โ”€ ci.yml # Continuous Integration
โ”‚ โ”œโ”€โ”€ semantic-release.yml # Automated versioning
โ”‚ โ””โ”€โ”€ template-sync-*.yml # Template synchronization
โ”œโ”€โ”€ .template-marker # Template tracking file
โ”œโ”€โ”€ .template-version # Template version tracking
โ””โ”€โ”€ shared/ # Shared utilities for template sync

Writing MCP Tools

Basic Tool Example

import { z } from 'zod';
import { zodToJsonSchema } from 'zod-to-json-schema';

// Define input schema
export const MyToolSchema = z.object({
 input: z.string().describe('Input parameter'),
 count: z.number().optional().default(1).describe('Number of iterations'),
});

export type MyToolInput = z.infer<typeof MyToolSchema>;

// Export tool schema for MCP registration
export const myToolSchema = {
 name: 'my_tool',
 description: 'Description of what this tool does',
 inputSchema: zodToJsonSchema(MyToolSchema),
};

// Tool implementation
export async function myTool(input: unknown) {
 const validated = MyToolSchema.parse(input);
 
 // Your tool logic here
 const result = `Processed: ${validated.input}`;
 
 return {
 content: [
 {
 type: 'text',
 text: result,
 },
 ],
 };
}

Register Tools in MCP Server

// In src/index.ts
import { myToolSchema, myTool } from './tools/my-tool.js';

// Register in ListToolsRequestSchema handler
server.setRequestHandler(ListToolsRequestSchema, async () => ({
 tools: [
 myToolSchema,
 // ... other tools
 ],
}));

// Register in CallToolRequestSchema handler
server.setRequestHandler(CallToolRequestSchema, async (request) => {
 const { name, arguments: args } = request.params;
 
 switch (name) {
 case 'my_tool':
 return await myTool(args);
 // ... other tools
 default:
 throw new Error(`Unknown tool: ${name}`);
 }
});

Template Synchronization

This template includes an automated synchronization system that keeps derived repositories up to date:

How It Works

  1. Template Changes: When you update the template repository

  2. Automatic Discovery: GitHub Actions discovers all repositories created from this template

  3. Sync Dispatch: Template changes are automatically synchronized to derived repos

  4. Pull Request Creation: Changes are proposed via pull requests for review

Template Marker

The .template-marker file identifies repositories created from this template:

template_repository: mcp-template
template_version: 1.0.0
created_from_template: true
sync_enabled: true

Customizing Sync Behavior

Edit .github/template-sync-config.yml to control what gets synchronized:

sync_patterns:
 - "tsconfig.json"
 - "biome.json" 
 - "vitest.config.ts"
 - ".github/workflows/**"
 - "src/utils/validation*"
 # Add patterns for files to sync

ignore_patterns:
 - "src/tools/**" # Don't sync tool implementations
 - "README.md" # Keep custom README
 # Add patterns for files to ignore

CI/CD Pipeline

Continuous Integration

  • Code Quality: Linting, formatting, and type checking

  • Testing: Unit tests with coverage reporting

  • Build Verification: Ensures TypeScript compiles successfully

  • Multi-Node Testing: Tests on Node.js 18, 20, and 22

Automated Release

  • Semantic Versioning: Automatic version bumping based on commit messages

  • Changelog Generation: Automatically generated from commit history

  • NPM Publishing: Automatic package publishing on release

  • GitHub Releases: Automatic GitHub release creation

Commit Message Format

Follow Conventional Commits:

feat: add new tool for data processing
fix: resolve validation error in example tool
docs: update README with usage examples
chore: update dependencies

Contributing

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/amazing-feature

  3. Commit changes: git commit -m 'feat: add amazing feature'

  4. Push to branch: git push origin feature/amazing-feature

  5. Open a Pull Request

License

This project is licensed under the CC BY-NC-SA 4.0 license.

Related Projects

F
license - not found
-
quality - not tested
C
maintenance

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/Mearman/mcp-ai'

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