Skilllibrary get-started
Bootstrap a first MCP server from zero to working connection. Use when the user says 'get started with MCP', 'create my first MCP server', 'set up MCP', or wants a hello-world MCP experience. Covers project scaffolding, first tool registration, transport wiring, and host verification.
git clone https://github.com/merceralex397-collab/skilllibrary
T=$(mktemp -d) && git clone --depth=1 https://github.com/merceralex397-collab/skilllibrary "$T" && mkdir -p ~/.claude/skills && cp -r "$T/07-mcp/get-started" ~/.claude/skills/merceralex397-collab-skilllibrary-get-started && rm -rf "$T"
07-mcp/get-started/SKILL.mdPurpose
Get a developer from zero to a working MCP server connected to a host in one pass. This skill produces a runnable server with at least one tool, verified via MCP Inspector or a real host.
When to use this skill
- User says "get started with MCP", "create my first MCP server", "hello world MCP"
- User wants to scaffold a new MCP server project from scratch
- User needs to verify their MCP development environment works end-to-end
Do not use this skill when
- An MCP server already exists and needs improvement → use
ormcp-developmentmcp-tool-design - The task is about building a production MCP server with many tools → use
mcp-builder - The task is about connecting to an existing MCP server as a client → use
mcp-host-integration
Operating procedure
Phase 1 — Choose stack and scaffold
- Ask: TypeScript or Python? (Default to TypeScript for broadest host compatibility.)
- Scaffold the project:
TypeScript (recommended):
npx @anthropic-ai/create-mcp-server my-server cd my-server && npm install
Python:
uv init my-server && cd my-server uv venv && source .venv/bin/activate uv add "mcp[cli]"
- The scaffolder creates the project structure, dependencies, and a starter server file.
Phase 2 — Register a first tool
MCP servers expose three primitives: Tools, Resources, and Prompts. Start with a tool.
TypeScript — using
:@modelcontextprotocol/sdk
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; const server = new McpServer({ name: "my-server", version: "1.0.0" }); server.tool("greet", { name: z.string() }, async ({ name }) => ({ content: [{ type: "text", text: `Hello, ${name}!` }], })); const transport = new StdioServerTransport(); await server.connect(transport);
Python — using FastMCP:
from mcp.server.fastmcp import FastMCP mcp = FastMCP("my-server") @mcp.tool() def greet(name: str) -> str: """Greet someone by name.""" return f"Hello, {name}!" if __name__ == "__main__": mcp.run(transport="stdio")
Phase 3 — Verify with MCP Inspector
The MCP Inspector is the official debugging tool. Run it against your server:
npx @modelcontextprotocol/inspector node dist/index.js # TypeScript npx @modelcontextprotocol/inspector uv run python server.py # Python
In the Inspector UI (opens at
http://localhost:6274):
- Verify
returns your tooltools/list - Call
with test argumentstools/call - Confirm the response content is correct
Phase 4 — Connect to a host
Wire the server into a real MCP host to confirm end-to-end:
Claude Desktop — edit
~/Library/Application Support/Claude/claude_desktop_config.json:
{ "mcpServers": { "my-server": { "command": "node", "args": ["/absolute/path/to/dist/index.js"] } } }
VS Code / GitHub Copilot — add to
.vscode/mcp.json:
{ "servers": { "my-server": { "command": "node", "args": ["dist/index.js"] } } }
OpenCode — add to
.opencode/config.json under mcpServers.
Restart the host. Verify the tool appears in the host's tool list.
Decision rules
- Default to stdio transport for local development. Only use Streamable HTTP if the server must be remote.
- Default to TypeScript unless the user's project is Python-only.
- Register one tool first, verify it works, then expand. Do not build five tools before testing one.
- Use
with Zod (TS) or type hints + docstrings (Python) — the SDK auto-generates JSON Schema from these.inputSchema
Output requirements
A completed get-started pass produces:
- A runnable project directory with dependencies installed
- At least one registered MCP tool with input schema
- Successful
andtools/list
via MCP Inspectortools/call - A working host configuration (Claude Desktop, VS Code, or OpenCode)
Related skills
— full server development guide with phases and evalsmcp-builder
— deep TypeScript SDK patternsmcp-typescript-sdk
— deep Python FastMCP patternsmcp-python-fastmcp
— advanced debugging techniquesmcp-inspector-debugging
Failure handling
- If
fails, fall back to manual project setup withnpx @anthropic-ai/create-mcp-server
+npm initnpm install @modelcontextprotocol/sdk zod - If MCP Inspector shows no tools, check: (a) server compiles without errors, (b) stdio transport is wired, (c) server is not writing non-JSON-RPC to stdout
- If the host does not see tools, verify the config path is absolute and the host was restarted after config change