A simple TypeScript implementation of a Model Context Protocol (MCP) server with resources, prompts, and tools. This starter project demonstrates MCP fundamentals and serves as a template for building more complex MCP servers.
- Static Resource: Provides a "Hello, World" message when called via
hello://world
- Dynamic Resource: Customizable greeting that accepts a name parameter via
greeting://{name}
- Prompt: Simple prompt that configures an assistant with "You are a helpful assistant"
- Tool: Echo tool that returns "Hello" plus your input message
- Multiple Transport Options: Run as either a stdio server or HTTP server with Server-Sent Events (SSE)
npm install
npm run build
npm run clean
npm run start
npm run start:http
By default, the HTTP server runs on port 3000. You can change this by setting the PORT
environment variable.
.
├── scripts/ # Helper scripts
├── src/ # Source code
│ ├── http.ts # HTTP transport implementation
│ ├── index.ts # Main entry point
│ ├── server.ts # MCP server configuration
│ └── stdio.ts # STDIO transport implementation
├── package.json # Project dependencies and scripts
└── tsconfig.json # TypeScript configuration
- Built with TypeScript and the
@modelcontextprotocol/sdk
(v1.7.0+) - Uses Zod for type validation in tools
- HTTP server implemented with Express.js
- Supports Server-Sent Events (SSE) for real-time communication
You can connect to this server using any MCP client, such as Claude Desktop, or build your own client.
To use this server with Claude Desktop, add the following to your claude_desktop_config.json
file:
{
"mcpServers": {
"hello-world": {
"command": "node",
"args": ["<path-to-repo>/build/stdio.js"]
}
}
}
When running in HTTP mode:
- Connect to the SSE endpoint at
/sse
to establish a connection - Send messages to the
/messages
endpoint via POST requests - Receive responses through the SSE connection
Replace <path-to-repo>
with the absolute path to this repository.