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.
SaferSkills independently audited mcp-hello-world (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A learning-focused MCP server that demonstrates how the Model Context Protocol works.
MCP (Model Context Protocol) is a standard that lets AI assistants like Claude use external tools. Think of it like a plugin system:
This project is a minimal example with two tools that show a learning progression.
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.
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 configurationnpm install # Install dependencies
npm run build # Compile TypeScript to JavaScriptTo 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.
┌─────────────────┐ ┌─────────────────┐
│ │ stdin │ │
│ Claude │────────▶│ MCP Server │
│ │◀────────│ │
│ │ stdout │ │
└─────────────────┘ └─────────────────┘The main object that manages everything. It:
A function that Claude can call. Each tool has:
How the server communicates. We use StdioServerTransport which means:
This is the standard approach for local MCP servers.
The polyglot tool demonstrates LangChain's structured output feature. Send a greeting in any language, get back validated JSON with language details.
Input:
"bonjour"Output:
{
"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 startThe 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:
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/
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.