mcp-hello-world logo

mcp-hello-world

wiggitywhitney/mcp-hello-world
0 starsUpdated 2026-01-28Community

Is this your server?

Add your score badge to your README and get your server in front of 45k+ builders a month.

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

A learning-focused MCP server with two tools: a static 'hello' tool and a 'polyglot' tool that uses LangChain to detect language and return structured JSON.

README.md

mcp-hello-world

A learning-focused MCP server that demonstrates how the Model Context Protocol works.

What is MCP?

MCP (Model Context Protocol) is a standard that lets AI assistants like Claude use external tools. Think of it like a plugin system:

  1. You build a server that offers tools
  2. Claude connects to your server
  3. Claude can now call your tools during conversations

This project is a minimal example with two tools that show a learning progression.

What Does This Server Do?

It has two tools:

| Tool | Input | Output | Purpose | |------|-------|--------|---------| | hello | (none) | world | Minimal static example | | polyglot | A greeting in any language | Structured JSON with language info | Shows LangChain + structured output |

The hello tool is intentionally simple - it's about understanding how MCP works. The polyglot tool builds on that by calling an external LLM.

Project Structure

mcp-hello-world/
├── src/
│   └── index.ts                      # The MCP server
├── docs/
│   ├── langchain-polyglot-tool.md    # LangChain basics
│   └── structured-output.md          # Structured output with Zod
├── dist/                             # Compiled JavaScript (generated by build)
├── package.json                      # Project dependencies
└── tsconfig.json                     # TypeScript configuration

How to Build

npm install    # Install dependencies
npm run build  # Compile TypeScript to JavaScript

How to Use With Claude

To connect this server to Claude, add it to your MCP configuration.

For Claude Code (CLI):

Add to ~/.claude/claude_desktop_config.json:

{
  "mcpServers": {
    "hello-world": {
      "command": "node",
      "args": ["/full/path/to/mcp-hello-world/dist/index.js"]
    }
  }
}

For Claude Desktop App:

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "hello-world": {
      "command": "node",
      "args": ["/full/path/to/mcp-hello-world/dist/index.js"]
    }
  }
}

After adding the configuration, restart Claude. The hello tool will be available.

How MCP Communication Works

┌─────────────────┐         ┌─────────────────┐
│                 │  stdin  │                 │
│     Claude      │────────▶│   MCP Server    │
│                 │◀────────│                 │
│                 │ stdout  │                 │
└─────────────────┘         └─────────────────┘
  1. Claude launches the server as a subprocess
  2. Claude sends JSON messages to the server via stdin
  3. The server processes requests and sends responses via stdout
  4. This back-and-forth follows the MCP protocol specification

Key Concepts

Server

The main object that manages everything. It:

  • Registers available tools
  • Handles incoming requests
  • Routes tool calls to handler functions

Tool

A function that Claude can call. Each tool has:

  • Name: How Claude identifies it (e.g., "hello")
  • Description: Helps Claude know when to use it
  • Parameters: What inputs it accepts (our tool has none)
  • Handler: The code that runs when called

Transport

How the server communicates. We use StdioServerTransport which means:

  • Input comes from stdin
  • Output goes to stdout
  • Claude runs the server as a subprocess

This is the standard approach for local MCP servers.

The Polyglot Tool

The polyglot tool demonstrates LangChain's structured output feature. Send a greeting in any language, get back validated JSON with language details.

Input: ``text "bonjour" ``

Output: ``json { "detectedLanguage": "French", "greeting": "bonjour", "worldTranslation": "monde", "languageFamily": "Romance" } ``

Requirements: The polyglot tool needs an ANTHROPIC_API_KEY environment variable. This project uses Teller to inject secrets:

teller run -- npm start

Greetings for Testing

The worldTranslation field in the response:

| Language | Greeting | worldTranslation | |----------|----------|-----------------| | English | hello | world | | Spanish | hola | mundo | | French | bonjour | monde | | German | hallo | Welt | | Italian | ciao | mondo | | Portuguese | olá | mundo | | Japanese | こんにちは | 世界 | | Korean | 안녕하세요 | 세계 | | Chinese | 你好 | 世界 | | Russian | привет | мир | | Arabic | مرحبا | عالم | | Hindi | नमस्ते | दुनिया | | Dutch | hallo | wereld | | Swedish | hej | värld | | Greek | γεια | κόσμος |

For a deeper dive into how this tool works:

Learning More

The src/index.ts file is heavily documented with explanations of each piece. Start there to understand the code.

For the full MCP specification: https://modelcontextprotocol.io/

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Other servers.