Skip to content

alpic-ai/mcp-server-template-nodejs

Repository files navigation

Alpic MCP Template

A TypeScript template for building MCP servers using Streamable HTTP transport.

Overview

This template provides a foundation for creating MCP servers that can communicate with AI assistants and other MCP clients. It includes a simple HTTP server implementation with example tools, resource & prompts to help you get started building your own MCP integrations.

Prerequisites

  • Node.js 22+ (see .nvmrc for exact version)

Installation

  1. Clone the repository:
git clone <repository-url>
cd mcp-server-template
  1. Install dependencies:
npm install
  1. Create environment file:
cp .env.example .env

Usage

Development

Start the development server with hot-reload:

npm run dev

The server will start on http://localhost:3000 and automatically restart when you make changes to the source code.

Production Build

Build the project for production:

npm run build

The compiled JavaScript will be output to the dist/ directory.

Running the Inspector

Use the MCP inspector tool to test your server:

npm run inspector

API Endpoints

  • POST /mcp - Main MCP communication endpoint
  • GET /mcp - Returns "Method not allowed" (405)
  • DELETE /mcp - Returns "Method not allowed" (405)

Development

Adding New Tools

To add a new tool, modify src/server.ts:

server.tool(
  "tool-name",
  "Tool description",
  {
    // Define your parameters using Zod schemas
    param: z.string().describe("Parameter description"),
  },
  async ({ param }): Promise<CallToolResult> => {
    // Your tool implementation
    return {
      content: [
        {
          type: "text",
          text: `Result: ${param}`,
        },
      ],
    };
  },
);

Adding New Prompts

To add a new prompt template, modify src/server.ts:

server.prompt(
  "prompt-name",
  "Prompt description",
  {
    // Define your parameters using Zod schemas
    param: z.string().describe("Parameter description"),
  },
  async ({ param }): Promise<GetPromptResult> => {
    return {
      messages: [
        {
          role: "user",
          content: {
            type: "text",
            text: `Your prompt content with ${param}`,
          },
        },
      ],
    };
  },
);

Resources

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •