mcpField
M
MCP TypeScript Starter

MCP TypeScript Starter

Local
github.com/SamMorrowDrumsDeveloper Tools8Updated 4w ago

About MCP TypeScript Starter

MCP TypeScript Starter is a TypeScript template for building MCP servers, aimed at developers learning or prototyping server features. It demonstrates tools, resources, templates, and prompts, with stdio and HTTP entry points plus VS Code and DevContainer setup.

Key features

  1. 01Examples of tools, resources, and prompts
  2. 02Resource templates and structured tool outputs
  3. 03Progress updates and dynamic tool loading
  4. 04stdio and HTTP transports
  5. 05VS Code and DevContainer configuration

Use cases

  1. 01Learn core MCP server patterns in TypeScript
  2. 02Prototype a server with sample tools and resources
  3. 03Test server behavior through VS Code or MCP Inspector

MCP support

Implements an MCP server template exposing example tools, resources, resource templates, and prompts to MCP clients over stdio or HTTP.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"typescript-starter": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
Run commandnpx -y @modelcontextprotocol/inspector

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@modelcontextprotocol/inspector

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

MCP TypeScript Starter

CI TypeScript Node.js License: MIT MCP

A feature-complete Model Context Protocol (MCP) server template in TypeScript. This starter demonstrates all major MCP features with clean, production-ready code.

📚 Documentation

✨ Features

CategoryFeatureDescription
ToolshelloBasic tool with annotations
get_weatherTool with structured output schema
ask_llmTool that invokes LLM sampling
long_taskTool with 5-second progress updates
load_bonus_toolDynamically loads a new tool
Resourcesinfo://aboutStatic informational resource
file://example.mdFile-based markdown resource
Templatesgreeting://{name}Personalized greeting
data://items/{id}Data lookup by ID
PromptsgreetGreeting in various styles
code_reviewCode review with focus areas

🚀 Quick Start

Prerequisites
Installation
# Clone the repository
git clone https://github.com/SamMorrowDrums/mcp-typescript-starter.git
cd mcp-typescript-starter

# Install dependencies
npm install

# Build
npm run build
Running the Server

stdio transport (for local development):

npm run start:stdio

HTTP transport (for remote/web deployment):

npm run start:http
# Server runs on http://localhost:3000

🔧 VS Code Integration

This project includes VS Code configuration for seamless development:

  1. Open the project in VS Code
  2. The MCP configuration is in .vscode/mcp.json
  3. Build with Ctrl+Shift+B (or Cmd+Shift+B on Mac)
  4. Test the server using VS Code's MCP tools
Using DevContainers
  1. Install the Dev Containers extension
  2. Open command palette: "Dev Containers: Reopen in Container"
  3. Everything is pre-configured and ready to use!

📁 Project Structure

.
├── src/
│   ├── tools.ts       # Tool definitions (hello, get_weather, ask_llm, etc.)
│   ├── resources.ts   # Resource and template definitions
│   ├── prompts.ts     # Prompt definitions
│   ├── server.ts      # Server orchestration (combines all modules)
│   ├── stdio.ts       # stdio transport entrypoint
│   └── http.ts        # HTTP transport entrypoint
├── .vscode/
│   ├── mcp.json       # MCP server configuration
│   ├── tasks.json     # Build/run tasks
│   └── extensions.json
├── .devcontainer/
│   └── devcontainer.json
├── package.json
├── tsconfig.json
├── .prettierrc        # Prettier configuration
└── eslint.config.js

🛠️ Development

# Development mode with live reload
npm run dev

# Build for production
npm run build

# Format code
npm run format

# Lint
npm run lint

# Clean build
npm run clean && npm run build
Live Reload

The npm run dev command uses tsx watch for instant reloads during development. Changes to any .ts file will automatically restart the server.

🔍 MCP Inspector

The MCP Inspector is an essential development tool for testing and debugging MCP servers.

Running Inspector
npx @modelcontextprotocol/inspector -- npx tsx src/stdio.ts
What Inspector Provides
  • Tools Tab: List and invoke all registered tools with parameters
  • Resources Tab: Browse and read resources and templates
  • Prompts Tab: View and test prompt templates
  • Logs Tab: See JSON-RPC messages between client and server
  • Schema Validation: Verify tool input/output schemas
Debugging Tips
  1. Start Inspector before connecting your IDE/client
  2. Use the "Logs" tab to see exact request/response payloads
  3. Test tool annotations are exposed correctly
  4. Verify progress notifications appear for long_task

📖 Feature Examples

Tool with Annotations
server.tool(
  "hello",
  {
    title: "Say Hello",
    description: "A friendly greeting tool",
    annotations: { readOnlyHint: true },
  },
  { name: z.string() },
  async ({ name }) => ({
    content: [{ type: "text", text: `Hello, ${name}!` }],
  })
);
Resource Template
server.resourceTemplate(
  "greeting://{name}",
  { name: "Personalized Greeting", mimeType: "text/plain" },
  async ({ name }) => ({
    contents: [{
      uri: `greeting://${name}`,
      text: `Hello, ${name}!`,
    }],
  })
);
Tool with Progress Updates
server.tool(
  "long_task",
  { title: "Long Task" },
  { taskName: z.string() },
  async ({ taskName }, { sendProgress }) => {
    for (let i = 0; i < 5; i++) {
      await sendProgress({ progress: i / 5, total: 1.0 });
      await sleep(1000);
    }
    return { content: [{ type: "text", text: "Done!" }] };
  }
);

🔐 Environment Variables

Copy .env.example to .env and configure:

cp .env.example .env
VariableDescriptionDefault
PORTHTTP server port3000

🤝 Contributing

Contributions welcome! Please ensure your changes maintain feature parity with other language starters.

📄 License

MIT License - see LICENSE for details.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.