MCP Servers

模型上下文协议服务器、框架、SDK 和模板的综合目录。

This educational demo teaches the Model Context Protocol (MCP) - a protocol for AI assistants to interact with external tools and data sources.

创建于 10/28/2025
更新于 about 2 months ago
Repository documentation and setup instructions

From Curl to Context: Mastering MCP

📚 Overview

This educational demo teaches the Model Context Protocol (MCP) - a protocol for AI assistants to interact with external tools and data sources.

What You'll Learn

By working through this demo, you'll understand:

  • MCP Protocol Basics - How tools are defined, listed, and called
  • JSON-RPC 2.0 - Request/response format used by MCP
  • Transport Methods - stdio (local) vs HTTP (remote) communication
  • Error Handling - Proper error codes and messages
  • TypeScript Development - Building and compiling MCP servers/clients
  • Real-world Testing - Using curl, Postman, and programmatic clients

🎯 Contents

CURL_TO_CONTEXT/
├── README.md                          # This file - Full documentation
├── CHEATSHEET.md                      # Quick reference (print this!)
├── mcp-server/                        # Simple MCP Server Implementation
│   ├── src/
│   │   └── index.ts                   # Math operations MCP server
│   ├── package.json
│   ├── tsconfig.json
│   └── README.md
├── mcp-client-stdio/                  # Client using stdio transport
│   ├── src/
│   │   └── client.ts                  # stdio client implementation
│   ├── package.json
│   ├── tsconfig.json
│   └── README.md
├── mcp-client-remote/                 # Client using HTTP transport
│   ├── src/
│   │   └── client.ts                  # HTTP client implementation
│   ├── package.json
│   ├── tsconfig.json
│   └── README.md
└── examples/                          # JSON-RPC request examples
    ├── tools-list-request.json        # List all tools
    ├── add-request.json               # Addition example
    ├── subtract-request.json          # Subtraction example
    ├── multiply-request.json          # Multiplication example
    ├── divide-request.json            # Division example
    └── README.md                      # Usage guide

🚀 Quick Start

Prerequisites

Before starting, ensure you have Node.js 18+ installed:

node --version  # Should show v18.x.x or higher

If not installed, download from nodejs.org

💡 Tip: Print or bookmark CHEATSHEET.md for quick reference while working through the demo!


Option A: stdio Transport (Recommended First)

Best for: Learning local MCP communication

Step 1: Build the MCP Server

cd mcp-server
npm install
npm run build

What this does: Compiles the TypeScript server to JavaScript

Step 2: Run the stdio Client Demo

cd ../mcp-client-stdio
npm install
npm run build
npm start

Expected output:

  • ✅ Server starts via stdio
  • ✅ Lists 4 math tools (add, subtract, multiply, divide)
  • ✅ Executes calculations automatically
  • ✅ Demonstrates error handling

Duration: ~2 minutes


Option B: HTTP Transport (Remote Connection)

Best for: Understanding networked MCP servers

Terminal 1 - Start HTTP Server:

cd mcp-server
npm install       # If not already done
npm run build     # If not already done
npm run start:http

Expected output:

🚀 Starting MCP Math Server in HTTP mode
✅ HTTP Server running on http://localhost:5001

Keep this terminal running!

Terminal 2 - Run HTTP Client:

cd mcp-client-remote
npm install
npm run build
npm start

What you'll see:

  • 📤 JSON-RPC requests
  • 📥 Server responses
  • ✅ Math operations over HTTP
  • ✅ Error handling examples

Duration: ~3 minutes


Quick Manual Test (HTTP Server Running)

Try these curl commands to test the server directly:

List available tools:

curl -X POST http://localhost:5001/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

Calculate 10 + 5:

curl -X POST http://localhost:5001/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"add","arguments":{"a":10,"b":5}},"id":2}'

Test error (divide by zero):

curl -X POST http://localhost:5001/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"divide","arguments":{"a":10,"b":0}},"id":3}'

Troubleshooting

"Server not found" error?

# Make sure you built the server first:
cd mcp-server
npm run build

"Connection refused" error?

# Start the HTTP server in another terminal:
cd mcp-server
npm run start:http

Port 5001 already in use?

# Use a different port:
PORT=3000 npm run start:http
# Then update client:
MCP_SERVER_URL=http://localhost:3000/mcp npm start

📖 Key Concepts

JSON-RPC 2.0 Format

Every MCP message follows this structure:

{
  "jsonrpc": "2.0",        // Always "2.0"
  "method": "tools/call",   // MCP method name
  "params": {               // Optional parameters
    "name": "add",
    "arguments": {
      "a": 10,
      "b": 5
    }
  },
  "id": 1                   // Unique request ID
}

MCP Protocol Methods

| Method | Purpose | When to Use | |--------|---------|-------------| | initialize | Handshake between client and server | First connection | | tools/list | Discover available tools | Before calling tools | | tools/call | Execute a specific tool | Perform operations | | resources/list | Get available resources | Access data sources | | prompts/list | Get available prompts | Template management | | notifications/ | Server-to-client updates | Real-time events |

Error Codes (JSON-RPC 2.0)

| Code | Name | Meaning | |------|------|---------| | -32700 | Parse error | Invalid JSON | | -32600 | Invalid Request | Malformed JSON-RPC | | -32601 | Method not found | Unknown method | | -32602 | Invalid params | Wrong parameters | | -32603 | Internal error | Server error |

🎯 Quick Reference

Common Commands

List available tools:

curl -X POST http://localhost:5001/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

Call a tool:

curl -X POST http://localhost:5001/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"add","arguments":{"a":10,"b":5}},"id":2}'

Using example files:

cd examples
curl -X POST http://localhost:5001/mcp \
  -H "Content-Type: application/json" \
  -d @add-request.json

Project Commands

| Command | Location | Purpose | |---------|----------|---------| | npm install | Any directory | Install dependencies | | npm run build | Any directory | Compile TypeScript | | npm start | mcp-server | Run in stdio mode | | npm run start:http | mcp-server | Run HTTP server | | npm start | mcp-client-stdio | Run stdio demo | | npm start | mcp-client-remote | Run HTTP demo | | npm run dev | Any directory | Build + run | | npm run watch | mcp-server | Auto-rebuild on changes |

Environment Variables

# Change server port
PORT=3000 npm run start:http

# Change client server URL
MCP_SERVER_URL=http://localhost:3000/mcp npm start

📚 Learning Path

Immediate Next Steps

  1. Review CHEATSHEET.md - Keep this handy for quick reference
  2. Modify the examples - Change values in examples/*.json files and test
  3. Add error handling - Try invalid inputs and see responses
  4. Explore the code - Read through src/index.ts files to understand implementation

After Completing This Demo

  1. Official MCP Documentation - modelcontextprotocol.io
  2. Build Your Own Tools - Add new operations (modulo, power, square root)
  3. Add Resources - Learn MCP resource management
  4. Implement Prompts - Add prompt templates
  5. Real Integration - Connect MCP to Claude, GPT, or other AI systems

🔗 Additional Resources

MCP Protocol & Specification

JSON-RPC 2.0

TypeScript & Node.js

Express.js (HTTP Server)

Testing Tools

  • curl Documentation - curl.se/docs
    • Command-line tool for testing HTTP endpoints
  • Postman Learning - learning.postman.com
    • API testing and documentation platform
  • HTTPie - httpie.io
    • User-friendly alternative to curl

AI & LLM Integration

Community & Examples

  • Awesome MCP - Search for "awesome-mcp" on GitHub
    • Curated list of MCP resources and projects
  • MCP Community Servers - github.com/modelcontextprotocol/servers
    • Official collection of MCP server implementations
  • Discord/Slack Communities - Check MCP documentation for links
    • Get help and share your projects

Related Concepts

Video Tutorials

  • YouTube - MCP Tutorials - Search for "Model Context Protocol"
    • Video walkthroughs and explanations
  • Anthropic's YouTube Channel - youtube.com/@AnthropicAI
    • Official videos about MCP and Claude

Books & Articles

  • "Designing Data-Intensive Applications" by Martin Kleppmann
    • Understanding distributed systems and protocols
  • "RESTful Web APIs" by Leonard Richardson & Mike Amundsen
    • API design principles
  • MDN Web Docs - developer.mozilla.org
    • Web development reference

🤝 Contributing

This is an educational resource. Contributions welcome:

  • Add more math operations (power, square root, etc.)
  • Improve error messages and validation
  • Add more detailed examples
  • Create video tutorials or blog posts
  • Translate documentation

📝 License

MIT License - Free for educational purposes


Questions or Issues? Open an issue or check the individual README files in each directory for more detailed information.

快速设置
此服务器的安装指南

安装包 (如果需要)

npx @modelcontextprotocol/server-curl_to_context

Cursor 配置 (mcp.json)

{ "mcpServers": { "mehdibukhari-curl-to-context": { "command": "npx", "args": [ "mehdibukhari-curl-to-context" ] } } }