MCP

Intent Surfaces

A reference manual for people who design and build MCP (Model Context Protocol) ecosystems

MCP

Intent Surfaces

A reference manual for people who design and build MCP (Model Context Protocol) ecosystems

MCP

Intent Surfaces

A reference manual for people who design and build MCP (Model Context Protocol) ecosystems

Your MCP Journey Begins

Your MCP Journey Begins

Your MCP Journey Begins

The tools, the community, the opportunities • Your first server awaits • The future you'll help build

The tools, the community, the opportunities • Your first server awaits • The future you'll help build

The tools, the community, the opportunities • Your first server awaits • The future you'll help build

This Book in Three Commands

This Book in Three Commands

Everything you've learned—the protocol, the patterns, the possibilities—starts with three simple commands:

Everything you've learned—the protocol, the patterns, the possibilities—starts with three simple commands:

1. Install MCP tools

npm install -g @modelcontextprotocol/cli

2. Create your first server

mcp create my-first-server

3. Connect to Claude

mcp connect my-first-server

1. Install MCP tools

npm install -g @modelcontextprotocol/cli

2. Create your first server

mcp create my-first-server

3. Connect to Claude

mcp connect my-first-server

1. Install MCP tools

npm install -g @modelcontextprotocol/cli

2. Create your first server

mcp create my-first-server

3. Connect to Claude

mcp connect my-first-server

In less than five minutes, you'll have joined the thousands building the future of human-AI collaboration.


But before you type that first command, let's talk about what happens next.

In less than five minutes, you'll have joined the thousands building the future of human-AI collaboration.


But before you type that first command, let's talk about what happens next.

The Builder's Checklist

The Builder's Checklist

After helping hundreds of developers build their first MCP servers, the community has discovered what separates successful builders from those who struggle:

After helping hundreds of developers build their first MCP servers, the community has discovered what separates successful builders from those who struggle:

Builder

Builder

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// The MCP Builder's Success Pattern
// Distilled from community experience

const builderChecklist = {
  // Week 1: Foundation
  foundation: {
    ✓ 'Read the MCP specification (really read it)',
    ✓ 'Join the Discord community',
    ✓ 'Build a "hello world" server',
    ✓ 'Connect it to Claude Desktop',
    ✓ 'Experience your first "it works!" moment'
  },
  
  // Week 2: First Real Server
  firstServer: {
    ✓ 'Identify a real problem you have',
    ✓ 'Design simple tools that solve it',
    ✓ 'Implement with proper error handling',
    ✓ 'Add security from the start',
    ✓ 'Share with one other person'
  },
  
  // Week 3: Community Integration
  community: {
    ✓ 'Publish to the MCP registry',
    ✓ 'Get feedback from users',
    ✓ 'Contribute to another server',
    ✓ 'Answer questions in Discord',
    ✓ 'Write about your experience'
  },
  
  // Week 4: Growth
  growth: {
    ✓ 'Add resources to your server',
    ✓ 'Implement caching for performance',
    ✓ 'Create documentation others can follow',
    ✓ 'Consider enterprise features',
    ✓ 'Plan your next server'
  }
};

12.1 Your MCP Roadmap

12.1 Your MCP Roadmap

Choose Your Adventure

Choose Your Adventure

The MCP ecosystem has room for every type of builder. Which path calls to you?

The MCP ecosystem has room for every type of builder. Which path calls to you?

Path 1: The Tool Smith

Path 1: The Tool Smith

You love solving specific problems elegantly.

You love solving specific problems elegantly.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Your first server might look like:
class ProblemSolverMCP extends Server {
  // Remember Chapter 7: Tools should do one thing well
  async listTools() {
    return [{
      name: 'solve_specific_annoyance',
      description: 'Fixes that thing that bugs you daily',
      // Simple, focused, useful
    }];
  }
}

// Success example: @alex built mcp-pr-reviewer
// 50 lines of code, saves 30 minutes per code review
// 10,000+ developers using it daily
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// April 2025: The first "emergent workflow"
// This actually happened at a startup in San Francisco

/*
Developer says: "I need to analyze our customer churn and present findings to the board"

What happens next was not programmed, but emerged from MCP composition:
*/

// 1. The analytics MCP server responds
const churnData = await mcp.analytics.getChurnMetrics({
  timeframe: 'last-quarter',
  segments: 'auto-detect'
});

// 2. The database server notices the query pattern
const enrichedData = await mcp.database.enrichWithContext({
  data: churnData,
  context: ['customer-feedback', 'support-tickets', 'usage-patterns']
});

// 3. The visualization server sees structured data
const visualizations = await mcp.dataviz.createCharts({
  data: enrichedData,
  audience: 'board-level',
  style: await mcp.brandguide.getStyle('presentation')
});

// 4. The document server assembles everything
const presentation = await mcp.docs.createPresentation({
  title: 'Customer Churn Analysis Q1 2025',
  sections: [
    { type: 'executive-summary', data: await mcp.ai.summarize(enrichedData) },
    { type: 'visualizations', charts: visualizations },
    { type: 'recommendations', items: await mcp.ai.suggest(enrichedData) },
    { type: 'appendix', raw: enrichedData }
  ]
});

// 5. The calendar server notices "board" mention
await mcp.calendar.scheduleReview({
  document: presentation,
  attendees: ['ceo', 'cfo', 'vp-sales'],
  duration: '30min',
  ai_note: 'Pre-read attached, focus on recommendations'
});

// Total time: 47 seconds
// Manual process it replaced: 2-3 days

Path 2: The Data Connector

Path 2: The Data Connector

You see valuable data trapped in silos.

You see valuable data trapped in silos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Your first server might look like:
class DataBridgeMCP extends Server {
  // Remember Chapter 8: Resources provide rich context
  async listResources() {
    return [{
      uri: 'yourdata://insights',
      mimeType: 'application/json',
      description: 'Makes hidden data accessible'
    }];
  }
}

// Success example: @maria built mcp-analytics-bridge  
// Connects 5 data sources, provides unified view
// Helped her company make data-driven decisions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// April 2025: The first "emergent workflow"
// This actually happened at a startup in San Francisco

/*
Developer says: "I need to analyze our customer churn and present findings to the board"

What happens next was not programmed, but emerged from MCP composition:
*/

// 1. The analytics MCP server responds
const churnData = await mcp.analytics.getChurnMetrics({
  timeframe: 'last-quarter',
  segments: 'auto-detect'
});

// 2. The database server notices the query pattern
const enrichedData = await mcp.database.enrichWithContext({
  data: churnData,
  context: ['customer-feedback', 'support-tickets', 'usage-patterns']
});

// 3. The visualization server sees structured data
const visualizations = await mcp.dataviz.createCharts({
  data: enrichedData,
  audience: 'board-level',
  style: await mcp.brandguide.getStyle('presentation')
});

// 4. The document server assembles everything
const presentation = await mcp.docs.createPresentation({
  title: 'Customer Churn Analysis Q1 2025',
  sections: [
    { type: 'executive-summary', data: await mcp.ai.summarize(enrichedData) },
    { type: 'visualizations', charts: visualizations },
    { type: 'recommendations', items: await mcp.ai.suggest(enrichedData) },
    { type: 'appendix', raw: enrichedData }
  ]
});

// 5. The calendar server notices "board" mention
await mcp.calendar.scheduleReview({
  document: presentation,
  attendees: ['ceo', 'cfo', 'vp-sales'],
  duration: '30min',
  ai_note: 'Pre-read attached, focus on recommendations'
});

// Total time: 47 seconds
// Manual process it replaced: 2-3 days

Path 3: The Ecosystem Weaver

Path 3: The Ecosystem Weaver

You see connections others miss.

You see connections others miss.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Your first server might look like:
class IntegrationMCP extends Server {
  // Combines existing servers in novel ways
  constructor() {
    this.servers = [
      'mcp-github',
      'mcp-calendar',
      'mcp-slack'
    ];
  }
  
  // Creates emergent workflows
  async orchestrate(goal) {
    // Your magic here
  }
}

// Success example: @sam built mcp-release-coordinator
// Combines 8 MCP servers for seamless releases
// Reduced deployment errors by 90%
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// April 2025: The first "emergent workflow"
// This actually happened at a startup in San Francisco

/*
Developer says: "I need to analyze our customer churn and present findings to the board"

What happens next was not programmed, but emerged from MCP composition:
*/

// 1. The analytics MCP server responds
const churnData = await mcp.analytics.getChurnMetrics({
  timeframe: 'last-quarter',
  segments: 'auto-detect'
});

// 2. The database server notices the query pattern
const enrichedData = await mcp.database.enrichWithContext({
  data: churnData,
  context: ['customer-feedback', 'support-tickets', 'usage-patterns']
});

// 3. The visualization server sees structured data
const visualizations = await mcp.dataviz.createCharts({
  data: enrichedData,
  audience: 'board-level',
  style: await mcp.brandguide.getStyle('presentation')
});

// 4. The document server assembles everything
const presentation = await mcp.docs.createPresentation({
  title: 'Customer Churn Analysis Q1 2025',
  sections: [
    { type: 'executive-summary', data: await mcp.ai.summarize(enrichedData) },
    { type: 'visualizations', charts: visualizations },
    { type: 'recommendations', items: await mcp.ai.suggest(enrichedData) },
    { type: 'appendix', raw: enrichedData }
  ]
});

// 5. The calendar server notices "board" mention
await mcp.calendar.scheduleReview({
  document: presentation,
  attendees: ['ceo', 'cfo', 'vp-sales'],
  duration: '30min',
  ai_note: 'Pre-read attached, focus on recommendations'
});

// Total time: 47 seconds
// Manual process it replaced: 2-3 days

Path 4: The Pioneer

Path 4: The Pioneer

You're drawn to unexplored territory.

You're drawn to unexplored territory.

1
2
3
4
5
6
7
8
9
10
// Your first server might be:
// - MCP for IoT devices
// - MCP for creative tools
// - MCP for scientific instruments
// - MCP for [your domain expertise]

// Success example: @dr_chen built mcp-lab-equipment
// First MCP server for laboratory automation
// Started a whole new category of scientific MCP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// April 2025: The first "emergent workflow"
// This actually happened at a startup in San Francisco

/*
Developer says: "I need to analyze our customer churn and present findings to the board"

What happens next was not programmed, but emerged from MCP composition:
*/

// 1. The analytics MCP server responds
const churnData = await mcp.analytics.getChurnMetrics({
  timeframe: 'last-quarter',
  segments: 'auto-detect'
});

// 2. The database server notices the query pattern
const enrichedData = await mcp.database.enrichWithContext({
  data: churnData,
  context: ['customer-feedback', 'support-tickets', 'usage-patterns']
});

// 3. The visualization server sees structured data
const visualizations = await mcp.dataviz.createCharts({
  data: enrichedData,
  audience: 'board-level',
  style: await mcp.brandguide.getStyle('presentation')
});

// 4. The document server assembles everything
const presentation = await mcp.docs.createPresentation({
  title: 'Customer Churn Analysis Q1 2025',
  sections: [
    { type: 'executive-summary', data: await mcp.ai.summarize(enrichedData) },
    { type: 'visualizations', charts: visualizations },
    { type: 'recommendations', items: await mcp.ai.suggest(enrichedData) },
    { type: 'appendix', raw: enrichedData }
  ]
});

// 5. The calendar server notices "board" mention
await mcp.calendar.scheduleReview({
  document: presentation,
  attendees: ['ceo', 'cfo', 'vp-sales'],
  duration: '30min',
  ai_note: 'Pre-read attached, focus on recommendations'
});

// Total time: 47 seconds
// Manual process it replaced: 2-3 days

12.2 Path Selector Quiz

12.2 Path Selector Quiz

The Problems Worth Solving

The Problems Worth Solving

Here's exactly what to do in your first day as an MCP builder:

Here's exactly what to do in your first day as an MCP builder:

Path 4: The Pioneer

1. Install Node.js (if needed)

Download from https://nodejs.org

2. Install MCP CLI

npm install -g @modelcontextprotocol/cli

3. Verify installation

mcp --version

4. Install Claude Desktop

Download from https://claude.ai/desktop

5. Create workspace

mkdir my-mcp-servers

cd my-mcp-servers

1. Install Node.js (if needed)

Download from https://nodejs.org

2. Install MCP CLI

npm install -g @modelcontextprotocol/cli

3. Verify installation

mcp --version

4. Install Claude Desktop

Download from https://claude.ai/desktop

5. Create workspace

mkdir my-mcp-servers

cd my-mcp-servers

1. Install Node.js (if needed)

Download from https://nodejs.org

2. Install MCP CLI

npm install -g @modelcontextprotocol/cli

3. Verify installation

mcp --version

4. Install Claude Desktop

Download from https://claude.ai/desktop

5. Create workspace

mkdir my-mcp-servers

cd my-mcp-servers

Hour 3-4: First Server

Hour 3-4: First Server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// hello-mcp/index.js
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

const server = new Server({
  name: 'hello-mcp',
  version: '1.0.0'
});

server.setRequestHandler('tools/list', async () => ({
  tools: [{
    name: 'say_hello',
    description: 'Says hello to someone',
    inputSchema: {
      type: 'object',
      properties: {
        name: { type: 'string' }
      },
      required: ['name']
    }
  }]
}));

server.setRequestHandler('tools/call', async (request) => {
  if (request.params.name === 'say_hello') {
    return {
      content: [{
        type: 'text',
        text: `Hello, ${request.params.arguments.name}! Welcome to MCP!`
      }]
    };
  }
});

const transport = new StdioServerTransport();
await server.connect(transport);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// April 2025: The first "emergent workflow"
// This actually happened at a startup in San Francisco

/*
Developer says: "I need to analyze our customer churn and present findings to the board"

What happens next was not programmed, but emerged from MCP composition:
*/

// 1. The analytics MCP server responds
const churnData = await mcp.analytics.getChurnMetrics({
  timeframe: 'last-quarter',
  segments: 'auto-detect'
});

// 2. The database server notices the query pattern
const enrichedData = await mcp.database.enrichWithContext({
  data: churnData,
  context: ['customer-feedback', 'support-tickets', 'usage-patterns']
});

// 3. The visualization server sees structured data
const visualizations = await mcp.dataviz.createCharts({
  data: enrichedData,
  audience: 'board-level',
  style: await mcp.brandguide.getStyle('presentation')
});

// 4. The document server assembles everything
const presentation = await mcp.docs.createPresentation({
  title: 'Customer Churn Analysis Q1 2025',
  sections: [
    { type: 'executive-summary', data: await mcp.ai.summarize(enrichedData) },
    { type: 'visualizations', charts: visualizations },
    { type: 'recommendations', items: await mcp.ai.suggest(enrichedData) },
    { type: 'appendix', raw: enrichedData }
  ]
});

// 5. The calendar server notices "board" mention
await mcp.calendar.scheduleReview({
  document: presentation,
  attendees: ['ceo', 'cfo', 'vp-sales'],
  duration: '30min',
  ai_note: 'Pre-read attached, focus on recommendations'
});

// Total time: 47 seconds
// Manual process it replaced: 2-3 days

Hour 5-6: Connect to Claude

Hour 5-6: Connect to Claude

1
2
3
4
5
6
7
8
9
// Add to Claude Desktop config:
{
  "mcpServers": {
    "hello-mcp": {
      "command": "node",
      "args": ["/path/to/hello-mcp/index.js"]
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// April 2025: The first "emergent workflow"
// This actually happened at a startup in San Francisco

/*
Developer says: "I need to analyze our customer churn and present findings to the board"

What happens next was not programmed, but emerged from MCP composition:
*/

// 1. The analytics MCP server responds
const churnData = await mcp.analytics.getChurnMetrics({
  timeframe: 'last-quarter',
  segments: 'auto-detect'
});

// 2. The database server notices the query pattern
const enrichedData = await mcp.database.enrichWithContext({
  data: churnData,
  context: ['customer-feedback', 'support-tickets', 'usage-patterns']
});

// 3. The visualization server sees structured data
const visualizations = await mcp.dataviz.createCharts({
  data: enrichedData,
  audience: 'board-level',
  style: await mcp.brandguide.getStyle('presentation')
});

// 4. The document server assembles everything
const presentation = await mcp.docs.createPresentation({
  title: 'Customer Churn Analysis Q1 2025',
  sections: [
    { type: 'executive-summary', data: await mcp.ai.summarize(enrichedData) },
    { type: 'visualizations', charts: visualizations },
    { type: 'recommendations', items: await mcp.ai.suggest(enrichedData) },
    { type: 'appendix', raw: enrichedData }
  ]
});

// 5. The calendar server notices "board" mention
await mcp.calendar.scheduleReview({
  document: presentation,
  attendees: ['ceo', 'cfo', 'vp-sales'],
  duration: '30min',
  ai_note: 'Pre-read attached, focus on recommendations'
});

// Total time: 47 seconds
// Manual process it replaced: 2-3 days

Hour 7-8: First Conversation

Hour 7-8: First Conversation

You

Can you say hello to the MCP community?

Claude

I'll say hello to the MCP community for you!

[Calling say_hello tool]

Hello, MCP community! Welcome to MCP!

You

🎉 IT WORKS!

You

Can you say hello to the MCP community?

Claude

I'll say hello to the MCP community for you!

[Calling say_hello tool]

Hello, MCP community! Welcome to MCP!

You

🎉 IT WORKS!

You

Can you say hello to the MCP community?

Claude

I'll say hello to the MCP community for you!

[Calling say_hello tool]

Hello, MCP community! Welcome to MCP!

You

🎉 IT WORKS!

Hour 9-24: Dream and Plan

Hour 9-24: Dream and Plan

Think about problems you want to solve

Browse existing MCP servers for inspiration

Join the Discord and introduce yourself

Start sketching your first real server

Think about problems you want to solve

Browse existing MCP servers for inspiration

Join the Discord and introduce yourself

Start sketching your first real server

Think about problems you want to solve

Browse existing MCP servers for inspiration

Join the Discord and introduce yourself

Start sketching your first real server

12.3 24-Hour Sprint Timer

12.3 24-Hour Sprint Timer

The Community Awaits

The Community Awaits

You're not building alone. The MCP community is one of the most welcoming in tech:

You're not building alone. The MCP community is one of the most welcoming in tech:

Discord Channels You'll Love

Discord Channels You'll Love

#welcome - Introduce yourself (we're friendly!)

#help - No question too basic

#showcase - Share what you build

#ideas - Find inspiration

#jobs - Yes, already hiring MCP developers

#memes - Because why not

#welcome - Introduce yourself (we're friendly!)

#help - No question too basic

#showcase - Share what you build

#ideas - Find inspiration

#jobs - Yes, already hiring MCP developers

#memes - Because why not

#welcome - Introduce yourself (we're friendly!)

#help - No question too basic

#showcase - Share what you build

#ideas - Find inspiration

#jobs - Yes, already hiring MCP developers

#memes - Because why not

Weekly Community Events

Weekly Community Events

  • Monday: Office hours with core team

  • Wednesday: Show and tell

  • Friday: Hack sessions

  • Saturday: Beginner workshops

  • Monday: Office hours with core team

  • Wednesday: Show and tell

  • Friday: Hack sessions

  • Saturday: Beginner workshops

  • Monday: Office hours with core team

  • Wednesday: Show and tell

  • Friday: Hack sessions

  • Saturday: Beginner workshops

Finding Your Tribe

Finding Your Tribe

1
2
3
4
5
6
7
8
9
10
11
// Community matching based on interests
const findYourPeople = {
  interests: ['productivity', 'data', 'creative', 'enterprise'],
  experience: ['beginner', 'intermediate', 'advanced'],
  timezone: 'auto-detect',
  
  // You'll be matched with:
  mentors: '1-2 experienced builders',
  peers: '3-5 at your level',
  mentees: 'Pay it forward when ready'
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// April 2025: The first "emergent workflow"
// This actually happened at a startup in San Francisco

/*
Developer says: "I need to analyze our customer churn and present findings to the board"

What happens next was not programmed, but emerged from MCP composition:
*/

// 1. The analytics MCP server responds
const churnData = await mcp.analytics.getChurnMetrics({
  timeframe: 'last-quarter',
  segments: 'auto-detect'
});

// 2. The database server notices the query pattern
const enrichedData = await mcp.database.enrichWithContext({
  data: churnData,
  context: ['customer-feedback', 'support-tickets', 'usage-patterns']
});

// 3. The visualization server sees structured data
const visualizations = await mcp.dataviz.createCharts({
  data: enrichedData,
  audience: 'board-level',
  style: await mcp.brandguide.getStyle('presentation')
});

// 4. The document server assembles everything
const presentation = await mcp.docs.createPresentation({
  title: 'Customer Churn Analysis Q1 2025',
  sections: [
    { type: 'executive-summary', data: await mcp.ai.summarize(enrichedData) },
    { type: 'visualizations', charts: visualizations },
    { type: 'recommendations', items: await mcp.ai.suggest(enrichedData) },
    { type: 'appendix', raw: enrichedData }
  ]
});

// 5. The calendar server notices "board" mention
await mcp.calendar.scheduleReview({
  document: presentation,
  attendees: ['ceo', 'cfo', 'vp-sales'],
  duration: '30min',
  ai_note: 'Pre-read attached, focus on recommendations'
});

// Total time: 47 seconds
// Manual process it replaced: 2-3 days

12.4 Community Portal

12.4 Community Portal

From Zero to Production

From Zero to Production

Based on community data, here's the realistic timeline for your MCP journey:

Based on community data, here's the realistic timeline for your MCP journey:

Days 1-7: Learning

Days 1-7: Learning

  • Build hello world

  • Understand the protocol

  • Connect to Claude

  • Join community

  • Build hello world

  • Understand the protocol

  • Connect to Claude

  • Join community

  • Build hello world

  • Understand the protocol

  • Connect to Claude

  • Join community

Days 8-30: Building

Days 8-30: Building

  • Create first useful server

  • Get feedback

  • Iterate and improve

  • Share with others

  • Create first useful server

  • Get feedback

  • Iterate and improve

  • Share with others

  • Create first useful server

  • Get feedback

  • Iterate and improve

  • Share with others

Days 91+: Contributing

Days 91+: Contributing

  • Help newcomers

  • Contribute to core

  • Build ecosystem tools

  • Shape the future

  • Help newcomers

  • Contribute to core

  • Build ecosystem tools

  • Shape the future

  • Help newcomers

  • Contribute to core

  • Build ecosystem tools

  • Shape the future

Days 91+: Contributing

Days 91+: Contributing

  • Help newcomers

  • Contribute to core

  • Build ecosystem tools

  • Shape the future

  • Help newcomers

  • Contribute to core

  • Build ecosystem tools

  • Shape the future

  • Help newcomers

  • Contribute to core

  • Build ecosystem tools

  • Shape the future

Real examples from the community:

Real examples from the community:

@jennifer - Day 92

"Built mcp-invoice-generator to scratch my own itch. Now processing $2M/month in invoices for other freelancers."

@jennifer - Day 92

"Built mcp-invoice-generator to scratch my own itch. Now processing $2M/month in invoices for other freelancers."

@jennifer - Day 92

"Built mcp-invoice-generator to scratch my own itch. Now processing $2M/month in invoices for other freelancers."

@kumar - Day 45

"My mcp-k8s-helper is used by our entire DevOps team. Deployment errors down 75%."

@kumar - Day 45

"My mcp-k8s-helper is used by our entire DevOps team. Deployment errors down 75%."

@kumar - Day 45

"My mcp-k8s-helper is used by our entire DevOps team. Deployment errors down 75%."

@sophie - Day 128

"Quit my job to work on MCP tools full-time. Best decision ever."

@sophie - Day 128

"Quit my job to work on MCP tools full-time. Best decision ever."

@sophie - Day 128

"Quit my job to work on MCP tools full-time. Best decision ever."

Future impact

Future impact

Future impact

12.5 Timeline Visualizer

12.5 Timeline Visualizer

The Problems Worth Solving

The Problems Worth Solving

As you plan your first real MCP server, consider these unsolved challenges from the community wishlist:

As you plan your first real MCP server, consider these unsolved challenges from the community wishlist:

Immediate Needs (Start Here)

Immediate Needs (Start Here)

1
2
3
4
5
6
7
8
9
const immediateOpportunities = {
  'mcp-email-organizer': 'Smart email categorization and response',
  'mcp-code-documenter': 'Automatic documentation from code',
  'mcp-meeting-assistant': 'Real-time meeting help',
  'mcp-learning-companion': 'Personalized education support',
  'mcp-habit-tracker': 'Behavior change assistant'
};

// Community bounties available for these!

Growing Needs (Next Level)

Growing Needs (Next Level)

1
2
3
4
5
6
7
const growingOpportunities = {
  'mcp-health-monitor': 'Personal health data integration',
  'mcp-financial-advisor': 'Real-time financial guidance',
  'mcp-home-automation': 'Natural language home control',
  'mcp-creative-tools': 'AI-assisted creative workflows',
  'mcp-research-assistant': 'Academic research support'
};

Future Frontiers (For Pioneers)

Future Frontiers (For Pioneers)

1
2
3
4
5
6
7
const frontierOpportunities = {
  'mcp-quantum': 'Quantum computing access',
  'mcp-biodata': 'Biological data processing',
  'mcp-robotics': 'Physical world interaction',
  'mcp-ar-vr': 'Spatial computing integration',
  'mcp-mesh': 'Decentralized MCP networks'
};

Your background
& Interest

Matched

Opportunities

Connect

with others

Claim

Opportunity

Your background
& Interest

Matched

Opportunities

Connect

with others

Claim

Opportunity

Your background
& Interest

Matched

Opportunities

Connect

with others

Claim

Opportunity

Your background
& Interest

Matched

Opportunities

Connect

with others

Claim

Opportunity

Your background
& Interest

Matched

Opportunities

Connect

with others

Claim

Opportunity

12.6 Opportunity Matcher

12.6 Opportunity Matcher

Your MCP Toolkit

Your MCP Toolkit

Everything you need to succeed, curated by the community:

Everything you need to succeed, curated by the community:

Essential Resources

Essential Resources

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const essentialResources = {
  // Documentation
  docs: 'https://modelcontextprotocol.io/docs',
  
  // Interactive learning
  playground: 'https://playground.mcp.dev',
  tutorials: 'https://learn.mcp.dev',
  
  // Code examples
  examples: 'https://github.com/modelcontextprotocol/servers',
  patterns: 'https://patterns.mcp.dev',
  
  // Community
  discord: 'https://discord.gg/mcp',
  forum: 'https://forum.mcp.dev',
  
  // Tools
  validator: 'https://validator.mcp.dev',
  registry: 'https://registry.mcp.dev'
};

Recommended Learning Path

Recommended Learning Path

Official Tutorial (2 hours)

Build Note Server (Chapter 6)

Add Security (Chapter 10)

Study Successful Servers

Build Your Solution

Official Tutorial (2 hours)

Build Note Server (Chapter 6)

Add Security (Chapter 10)

Study Successful Servers

Build Your Solution

Official Tutorial (2 hours)

Build Note Server (Chapter 6)

Add Security (Chapter 10)

Study Successful Servers

Build Your Solution

Development Environment

Development Environment

1
2
3
4
5
6
7
8
9
10
# Recommended VS Code extensions
code --install-extension mcp.mcp-developer-tools
code --install-extension mcp.schema-validator
code --install-extension mcp.debugger

# Testing tools
npm install --save-dev @modelcontextprotocol/test-utils

# Monitoring
npm install @modelcontextprotocol/monitor

11.7 Code Evolution Visualizer

11.7 Code Evolution Visualizer

The First Line of Code

The First Line of Code

Remember, every MCP server that's transforming how people work started with someone typing that first line:

Remember, every MCP server that's transforming how people work started with someone typing that first line:

1
2
3
import { Server } from '@modelcontextprotocol/sdk/server/index.js';

// Your journey begins here

What follows that line is up to you. Will it be:

What follows that line is up to you. Will it be:

  • A tool that saves you time every day?

  • A connection that makes data accessible?

  • An integration that helps your team?

  • Something nobody has imagined yet?

  • A tool that saves you time every day?

  • A connection that makes data accessible?

  • An integration that helps your team?

  • Something nobody has imagined yet?

  • A tool that saves you time every day?

  • A connection that makes data accessible?

  • An integration that helps your team?

  • Something nobody has imagined yet?

Your Impact Multiplier

Your Impact Multiplier

Here's the beautiful truth about MCP: your impact multiplies far beyond your code:

Here's the beautiful truth about MCP: your impact multiplies far beyond your code:

Your Impact

Your Impact

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const yourImpact = {
  // Direct impact
  directUsers: 'People who use your server',
  timeSaved: 'Hours returned to humans',
  problemsSolved: 'Frustrations eliminated',
  
  // Indirect impact
  inspired: 'Others who build because of you',
  composed: 'Servers that build on yours',
  evolved: 'Patterns others learn from you',
  
  // Ecosystem impact
  standardsAdvanced: 'Your feedback improves MCP',
  communityStrengthened: 'Your presence helps others',
  futureEnabled: 'What becomes possible because of you'
};

// Real example: Sarah's mcp-markdown-helper
// Direct: 5,000 users, 50,000 hours saved
// Indirect: Inspired 12 similar tools
// Ecosystem: Her pattern became official best practice

TIME SAVED

120 hours saved/mo

adoption

+35% faster onboarding

Cost reduction

$250K annual savings

TIME SAVED

120 hours saved/mo

adoption

+35% faster onboarding

Cost reduction

$250K annual savings

TIME SAVED

120 hours saved/mo

adoption

+35% faster onboarding

Cost reduction

$250K annual savings

12.8 Impact Calculator

12.8 Impact Calculator

The Promise and the Challenge

The Promise and the Challenge

As you close this book and open your code editor, remember:

As you close this book and open your code editor, remember:

Promise

Promise

  • Every problem you solve helps thousands

  • Every connection you build enables more

  • Every pattern you share teaches others

  • Every question you ask helps newcomers

  • Every line of code shapes the future

  • Every problem you solve helps thousands

  • Every connection you build enables more

  • Every pattern you share teaches others

  • Every question you ask helps newcomers

  • Every line of code shapes the future

  • Every problem you solve helps thousands

  • Every connection you build enables more

  • Every pattern you share teaches others

  • Every question you ask helps newcomers

  • Every line of code shapes the future

Challenge

Challenge

  • Start today, not tomorrow

  • Build something real, not perfect

  • Share early, iterate often

  • Help others as you learn

  • Stay curious, stay building

  • Start today, not tomorrow

  • Build something real, not perfect

  • Share early, iterate often

  • Help others as you learn

  • Stay curious, stay building

  • Start today, not tomorrow

  • Build something real, not perfect

  • Share early, iterate often

  • Help others as you learn

  • Stay curious, stay building

Your Day One Begins Now

Your Day One Begins Now

Decision

Decision

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Your journey starts with one decision
const yourDecision = {
  when: 'now',
  what: 'that problem that's been bugging you',
  how: 'one tool at a time',
  why: 'because you can',
  
  // The community believes in you
  support: 'always available',
  
  // The future is waiting
  impact: 'immeasurable'
};

// Type this now:
// npm install -g @modelcontextprotocol/cli
// mcp create my-first-server

// Welcome to MCP
// Welcome to the future you're building

12.9 Launch pad

12.9 Launch pad

The Never-Ending Story

The Never-Ending Story

This book ends, but your story is just beginning. In six months, you might be:

This book ends, but your story is just beginning. In six months, you might be:

Maintaining servers used by thousands

Contributing to MCP core

Speaking at MCP conferences

Building a business on MCP

Teaching others what you've learned

Creating things we can't yet imagine

Maintaining servers used by thousands

Contributing to MCP core

Speaking at MCP conferences

Building a business on MCP

Teaching others what you've learned

Creating things we can't yet imagine

Maintaining servers used by thousands

Contributing to MCP core

Speaking at MCP conferences

Building a business on MCP

Teaching others what you've learned

Creating things we can't yet imagine

The protocol is written. The patterns are proven. The community is waiting.
Your first server awaits.
What will you build?

The protocol is written. The patterns are proven. The community is waiting.
Your first server awaits.
What will you build?

12.10 Sign the Builder's Log

12.10 Sign the Builder's Log