MCP Reference Server

MCP Reference Server

A comprehensive reference implementation demonstrating all features of the Model Context Protocol (MCP) specification, serving as documentation, learning resource, and testing tool for MCP implementations.

Category
Visit Server

README

MCP Reference Server

A comprehensive reference implementation demonstrating all features of the Model Context Protocol (MCP) specification using chuk-mcp-server.

MCP Compliance Tests Python

🎉 Certified 100% MCP Specification Compliant - See COMPLIANCE.md

Overview

This repository provides complete, working examples of every MCP feature defined in the official specification. It serves as:

  • 📚 Reference Documentation - See how each MCP feature works
  • Spec Compliance Examples - Validate MCP implementations
  • 🎓 Learning Resource - Understand the MCP protocol
  • 🧪 Testing Tool - Test MCP clients against spec features

Specification Versions

Version Status Features
2025-06-18 100% Implemented & Tested Core spec: Tools, Resources, Prompts, Sampling, Logging
2025-11-25 📚 Reference Examples Only Tasks (experimental), Enhanced Auth, Tool Calling in Sampling, Icons, Enhanced Elicitation
2024-11-05 📚 Documented Initial specification (superseded by 2025-06-18)

⚠️ Important: MCP 2025-11-25 examples (12, 13, 14) are reference implementations showing how the spec SHOULD work. The features are not yet implemented in chuk-mcp-server. Icons are embedded as text/emojis, and elicitation features are documented in docstrings.

Current Testing: All compliance tests validate against MCP 2025-06-18 (core specification)

MCP Features Demonstrated

✅ Core Protocol (JSON-RPC 2.0)

All examples use proper JSON-RPC 2.0 message formatting implemented by chuk-mcp-server.

✅ Lifecycle

  • initialize - Connection and capability negotiation
  • initialized notification
  • ping - Health check (bidirectional)

✅ Server Capabilities

Tools (tools/list, tools/call)

  • Basic tools with various parameter types
  • Tools with complex schemas
  • Tools with progress reporting
  • Tools with error handling
  • Dynamic tool registration
  • notifications/tools/list_changed

Resources (resources/*)

  • Static resources
  • Dynamic resources with URI templates
  • Resource subscriptions
  • Binary resources (images, audio)
  • Text resources (markdown, JSON, code)
  • notifications/resources/updated
  • notifications/resources/list_changed

Prompts (prompts/list, prompts/get)

  • Static prompts
  • Prompts with arguments
  • Multi-message prompts
  • Prompt templates
  • notifications/prompts/list_changed

✅ Client Capabilities

Sampling (sampling/createMessage)

  • Server-initiated LLM requests
  • Multi-turn conversations
  • System prompts
  • Model preferences

Roots (roots/list)

  • Filesystem root queries
  • notifications/roots/list_changed

✅ Utilities

Logging (logging/setLevel)

  • Debug, info, warning, error levels
  • notifications/message - Log output

Progress

  • notifications/progress - Long-running operation updates
  • Progress tokens

Completion (completion/complete)

  • Argument autocompletion
  • Context-aware suggestions

Cancellation

  • notifications/cancelled - Request cancellation

Project Structure

chuk-mcp-server-reference/
├── README.md
├── pyproject.toml
├── examples/
│   ├── 01_minimal.py              # Simplest possible MCP server
│   ├── 02_tools_basic.py          # Basic tool examples (all parameter types)
│   ├── 11_full_server.py          # Complete 2025-06-18 reference
│   ├── 12_icons_metadata.py       # Icons and metadata (2025-11-25)
│   ├── 13_enhanced_elicitation.py # Enhanced elicitation (2025-11-25)
│   ├── 14_spec_2025_11_25.py      # Complete 2025-11-25 reference
│   └── README.md
├── specs/
│   ├── 2024-11-05/
│   │   ├── README.md              # Spec version details
│   │   └── features.md            # Feature checklist
│   ├── 2025-06-18/
│   │   ├── README.md
│   │   └── features.md
│   └── 2025-11-25/
│       ├── README.md
│       └── features.md
└── tests/
    ├── test_tools.py              # Tool examples tests
    ├── test_resources.py          # Resource examples tests
    ├── test_prompts.py            # Prompt examples tests
    └── test_integration.py        # Full integration tests

Quick Start

Installation

cd chuk-mcp-server-reference
pip install -r requirements.txt

Run Examples

# MCP 2025-06-18 (Core Specification - 100% Compliant)
python examples/01_minimal.py              # Start here - simplest server
python examples/02_tools_basic.py          # All tool parameter types
python examples/11_full_server.py          # Complete 2025-06-18 reference

# MCP 2025-11-25 (Latest Specification - Reference Examples)
# ⚠️  These are reference examples only - features not yet in chuk-mcp-server
python examples/12_icons_metadata.py       # Icons reference (emoji-based)
python examples/13_enhanced_elicitation.py # Enhanced elicitation reference
python examples/14_spec_2025_11_25.py      # Complete 2025-11-25 reference

Example Catalog

1. Minimal Server

The simplest possible MCP server with one tool.

2. Basic Tools

Demonstrates all tool parameter types:

  • String, integer, number, boolean
  • Arrays and objects
  • Optional and required parameters
  • Default values

3. Advanced Tools

  • Complex nested schemas
  • Progress reporting during execution
  • Error handling patterns
  • Tool result content types (text, images, embedded resources)

4. Basic Resources

  • Static resources with various MIME types
  • List resources
  • Read resource content
  • Text and binary resources

5. Advanced Resources

  • URI templates (file://logs/{date})
  • Resource subscriptions
  • Resource update notifications
  • Dynamic resource generation

6. Basic Prompts

  • Simple prompts
  • Prompts with arguments
  • Multi-message prompts

7. Advanced Prompts

  • Parameterized prompt templates
  • Dynamic prompt generation
  • Prompt argument validation

8. Sampling

  • Server requests LLM completion from client
  • Multi-turn conversations
  • System prompts and preferences

9. Logging & Progress

  • Log level configuration
  • Progress notifications for long operations
  • Progress tokens

10. Completion

  • Argument autocompletion
  • Context-aware suggestions

11. Full Server

Complete server with ALL features enabled - the ultimate reference.

Testing with MCP Inspector

All examples work with MCP Inspector:

# Run any example
python examples/11_full_server.py

# In another terminal, use MCP Inspector
npx @modelcontextprotocol/inspector

Configure Inspector:

  • Transport: HTTP or STDIO
  • URL: http://localhost:8000/mcp (for HTTP)
  • Command: python examples/11_full_server.py (for STDIO)

Specification Mapping

Each example includes comments mapping features to the official MCP specification:

# MCP Spec: tools/list
# Version: 2025-06-18
# Reference: https://modelcontextprotocol.io/specification/2025-06-18/server/tools

@mcp.tool
def example_tool(param: str) -> str:
    """Tool description per spec."""
    return result

Spec Compliance

This reference server aims for 100% compliance with the MCP specification:

  • ✅ Proper JSON-RPC 2.0 formatting
  • ✅ Capability negotiation
  • ✅ Content type support (text, image, audio, embedded resources)
  • ✅ Error codes and handling
  • ✅ Notifications
  • ✅ Pagination
  • ✅ Progress reporting
  • ✅ Cancellation

Testing

Run Compliance Demo

Interactive demo that tests full MCP spec compliance:

# Auto-start server and test
python examples/spec_compliance_demo.py --start-server

# Against a running server
python examples/spec_compliance_demo.py

# Against a different server
python examples/spec_compliance_demo.py --url http://localhost:3000/mcp

Run Test Suite

# Run all tests
pytest

# Run protocol compliance tests (2025-06-18)
pytest tests/test_protocol_compliance.py -v

# Run example validation tests
pytest tests/test_examples.py -v

# Run 2025-11-25 feature tests (shows what's not implemented)
pytest tests/test_2025_11_25_features.py -v

# Run with coverage
pytest --cov=examples --cov-report=html

MCP 2025-11-25 Feature Status

Test the implementation status of new features:

# Run feature tests - shows passing and expected failures
pytest tests/test_2025_11_25_features.py -v

# See summary of what works and what doesn't
pytest tests/test_2025_11_25_features.py::test_summary_report -v -s

Results: 3 passed (description, defaults), 5 xfailed (icons, elicitation modes)

Documentation

  • specs/ - Detailed documentation for each spec version
  • examples/README.md - Guide to all examples
  • Each example file contains extensive inline documentation

Contributing

Contributions should:

  1. Map to specific MCP specification sections
  2. Include spec version and reference URLs
  3. Add tests
  4. Update documentation

Resources

License

MIT License


Built with chuk-mcp-server - The protocol implementation is already done, this repo just demonstrates all the features! 🚀

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured