Skip to main content
Glama

MCP Learning Server

A comprehensive educational Model Context Protocol (MCP) server built with JavaScript that demonstrates all three main MCP capabilities: Tools, Resources, and Prompts.

๐ŸŽฏ What is MCP?

Model Context Protocol (MCP) is a protocol that allows AI assistants to connect to external data sources and tools. It provides three main capabilities:

1. ๐Ÿ”ง Tools

Functions that the AI can call to perform actions:

  • API calls

  • Calculations

  • Data manipulation

  • External system interactions

2. ๐Ÿ“š Resources

Data sources that the AI can read from:

  • Files and documents

  • Database content

  • Web pages

  • System information

3. ๐Ÿ“ Prompts

Template prompts with variables:

  • Reusable prompt templates

  • Customizable with parameters

  • Consistent AI interactions

Related MCP server: RL-MCP

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 18+

  • Yarn package manager

Installation

# Clone or create the project
yarn install

# Run the server
yarn start

# Or run in development mode with auto-reload
yarn dev

๐Ÿ› ๏ธ Features Demonstrated

Tools Available:

  • calculate - Perform mathematical calculations

  • get_weather - Get weather information (mock data)

  • generate_uuid - Generate unique identifiers

Resources Available:

  • file://project-info - Information about this project

  • file://sample-data - Sample JSON data

  • file://system-status - System status and statistics

Prompts Available:

  • code-review - Generate code reviews

  • explain-concept - Explain technical concepts

  • project-documentation - Generate project documentation

๐Ÿ“– Step-by-Step Learning Guide

Step 1: Understanding the Basic Structure

The MCP server is built using the @modelcontextprotocol/sdk package:

import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

Step 2: Server Initialization

const server = new Server(
  {
    name: 'learning-mcp-server',
    version: '1.0.0',
  },
  {
    capabilities: {
      tools: {},      // Enable tools
      resources: {},  // Enable resources
      prompts: {},    // Enable prompts
    },
  }
);

Step 3: Implementing Tools

Tools are functions the AI can call. Each tool needs:

  • A name and description

  • An input schema (JSON Schema)

  • A handler function

// List available tools
server.setRequestHandler(ListToolsRequestSchema, async () => {
  return {
    tools: [
      {
        name: 'calculate',
        description: 'Perform basic mathematical calculations',
        inputSchema: {
          type: 'object',
          properties: {
            expression: {
              type: 'string',
              description: 'Mathematical expression to evaluate',
            },
          },
          required: ['expression'],
        },
      },
    ],
  };
});

// Handle tool execution
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  const { name, arguments: args } = request.params;
  // Execute the tool based on name and arguments
});

Step 4: Implementing Resources

Resources provide data that the AI can read:

// List available resources
server.setRequestHandler(ListResourcesRequestSchema, async () => {
  return {
    resources: [
      {
        uri: 'file://project-info',
        name: 'Project Information',
        description: 'Information about this MCP server project',
        mimeType: 'text/plain',
      },
    ],
  };
});

// Handle resource reading
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
  const { uri } = request.params;
  // Return resource content based on URI
});

Step 5: Implementing Prompts

Prompts are reusable templates with variables:

// List available prompts
server.setRequestHandler(ListPromptsRequestSchema, async () => {
  return {
    prompts: [
      {
        name: 'code-review',
        description: 'Generate a code review',
        arguments: [
          {
            name: 'code',
            description: 'The code to review',
            required: true,
          },
        ],
      },
    ],
  };
});

// Handle prompt requests
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
  const { name, arguments: args } = request.params;
  // Return formatted prompt with variables filled in
});

๐Ÿงช Testing Your Server

Manual Testing

You can test the server by running it and sending MCP protocol messages via stdin/stdout:

yarn start

Using with MCP Clients

MCP servers typically run as stdio processes that communicate with AI assistants or other MCP clients through JSON-RPC messages.

๐Ÿ” Key Learning Points

  1. Protocol Structure: MCP uses JSON-RPC 2.0 over stdio

  2. Capability Declaration: Servers declare what they can do (tools, resources, prompts)

  3. Schema Validation: All inputs use JSON Schema for validation

  4. Error Handling: Proper error codes and messages are crucial

  5. Transport Layer: StdioServerTransport handles communication

๐Ÿ›ก๏ธ Error Handling

The server includes comprehensive error handling:

import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';

// Throw MCP-specific errors
throw new McpError(
  ErrorCode.InvalidRequest,
  `Unknown resource: ${uri}`
);

๐Ÿ“š Next Steps

  1. Extend Tools: Add more sophisticated tools that call real APIs

  2. Dynamic Resources: Connect to databases or file systems

  3. Advanced Prompts: Create more complex prompt templates

  4. Authentication: Add security for production use

  5. Logging: Implement comprehensive logging

  6. Testing: Add unit and integration tests

๐Ÿ”— Resources

๐Ÿ“„ License

MIT License - feel free to use this code for learning and building your own MCP servers!

F
license - not found
-
quality - not tested
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    A comprehensive Model Context Protocol server implementation that enables AI assistants to interact with file systems, databases, GitHub repositories, web resources, and system tools while maintaining security and control.
    49
    2
    MIT
  • F
    license
    -
    quality
    D
    maintenance
    A Model Context Protocol server that provides AI models with structured access to external data and services, acting as a bridge between AI assistants and applications, databases, and APIs in a standardized, secure way.
    2
  • A
    license
    -
    quality
    D
    maintenance
    A comprehensive Model Context Protocol server providing educational resources and curriculum planning support with intelligent filtering across multiple educational APIs.
    10
    MIT

View all related MCP servers

Related MCP Connectors

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoโ€ฆ

  • A Model Context Protocol server for Wix AI tools

  • Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/thanhtn2902/mcp-playground'

If you have feedback or need assistance with the MCP directory API, please join our Discord server