Discover Awesome MCP Servers

Extend your agent with 27,288 capabilities via MCP servers.

All27,288
build-simple-mcp

build-simple-mcp

Okay, here's a breakdown of how to build a simple Minecraft Protocol (MCP) server in Python. This will be a very basic server, focusing on the handshake and status phases. It won't handle actual gameplay. It's designed to be a starting point for learning the protocol. **Important Considerations:** * **Complexity:** The Minecraft Protocol is complex. This example simplifies things significantly. A full-fledged server requires handling many more packets, game logic, and world data. * **Security:** This example is *not* secure. It doesn't include encryption or authentication. Do not expose this to the internet without adding proper security measures. * **Libraries:** We'll use the `struct` module for packing and unpacking data, and `socket` for network communication. No external libraries are strictly required for this basic example, but libraries like `nbt` (for handling NBT data) and `cryptography` (for encryption) would be essential for a more complete server. * **Minecraft Version:** The Minecraft protocol changes with each version. This example is based on a relatively recent version (e.g., 1.19+), but you'll need to adjust the protocol version and packet IDs if you're targeting a different version. Refer to the Minecraft Protocol documentation for your target version. [https://wiki.vg/Protocol](https://wiki.vg/Protocol) is an excellent resource. **Python Code (Simple MCP Server):** ```python import socket import struct import json # Configuration HOST = 'localhost' # Listen on all interfaces PORT = 25565 PROTOCOL_VERSION = 762 # Example: Minecraft 1.19.2 SERVER_VERSION_NAME = "My Simple Server" MAX_PLAYERS = 20 MOTD = "§aA Simple Minecraft Server\n§bWelcome!" # Supports Minecraft color codes def create_varint(data): """Encodes an integer as a Minecraft VarInt.""" out = bytearray() while True: byte = data & 0x7F data >>= 7 if data != 0: byte |= 0x80 out.append(byte) if data == 0: break return bytes(out) def read_varint(sock): """Reads a Minecraft VarInt from the socket.""" result = 0 shift = 0 while True: byte = sock.recv(1)[0] result |= (byte & 0x7F) << shift shift += 7 if not byte & 0x80: break if shift > 35: raise ValueError("VarInt is too big") # Prevent infinite loop return result def create_string(data): """Creates a Minecraft string (VarInt length + UTF-8 encoded string).""" encoded_string = data.encode('utf-8') length = create_varint(len(encoded_string)) return length + encoded_string def create_packet(packet_id, data): """Creates a Minecraft packet (VarInt length + VarInt packet ID + data).""" packet_id_bytes = create_varint(packet_id) packet_data = packet_id_bytes + data packet_length = create_varint(len(packet_data)) return packet_length + packet_data def handle_handshake(sock): """Handles the Handshake phase.""" protocol_version = read_varint(sock) server_address_length = read_varint(sock) server_address = sock.recv(server_address_length).decode('utf-8') server_port = struct.unpack('>H', sock.recv(2))[0] # Unpack unsigned short (big endian) next_state = read_varint(sock) print(f"Handshake: Protocol {protocol_version}, Address {server_address}:{server_port}, Next State {next_state}") return next_state def handle_status_request(sock): """Handles the Status Request and Response.""" # Status Request (empty packet) packet_length = read_varint(sock) packet_id = read_varint(sock) if packet_id != 0x00: print(f"Unexpected packet ID in status request: {packet_id}") return # Create Status Response status = { "version": { "name": SERVER_VERSION_NAME, "protocol": PROTOCOL_VERSION }, "players": { "max": MAX_PLAYERS, "online": 0, "sample": [] # Can add player samples here }, "description": { "text": MOTD } } status_json = json.dumps(status, ensure_ascii=False).encode('utf-8') # Ensure proper UTF-8 encoding status_string = create_string(status_json.decode('utf-8')) # Decode back to string for create_string status_packet = create_packet(0x00, status_string) sock.sendall(status_packet) def handle_ping(sock): """Handles the Ping Request and Response.""" # Ping Request (payload) packet_length = read_varint(sock) packet_id = read_varint(sock) payload = sock.recv(8) # 8-byte payload if packet_id != 0x01: print(f"Unexpected packet ID in ping request: {packet_id}") return # Create Ping Response (same payload) ping_packet = create_packet(0x01, payload) sock.sendall(ping_packet) def handle_client(sock, address): """Handles a single client connection.""" print(f"Accepted connection from {address}") try: # Handshake next_state = handle_handshake(sock) if next_state == 1: # Status handle_status_request(sock) handle_ping(sock) # Client expects a ping after status elif next_state == 2: # Login (not implemented in this example) print("Login requested, but not implemented.") # In a real server, you'd handle login here else: print(f"Unknown next state: {next_state}") except Exception as e: print(f"Error handling client: {e}") finally: sock.close() print(f"Connection from {address} closed.") def main(): """Main server loop.""" server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # Allow address reuse server_socket.bind((HOST, PORT)) server_socket.listen(5) # Listen for up to 5 incoming connections print(f"Server listening on {HOST}:{PORT}") try: while True: client_socket, client_address = server_socket.accept() handle_client(client_socket, client_address) except KeyboardInterrupt: print("Server shutting down...") finally: server_socket.close() if __name__ == "__main__": main() ``` **Explanation:** 1. **Imports:** Imports necessary modules (`socket`, `struct`, `json`). 2. **Configuration:** Sets server parameters like host, port, protocol version, MOTD, etc. Adjust these to your liking. The `PROTOCOL_VERSION` is *critical* and must match the Minecraft client version you're using. 3. **`create_varint(data)`:** Encodes an integer into a Minecraft VarInt. VarInts are used for variable-length integer representation in the protocol. 4. **`read_varint(sock)`:** Reads a VarInt from the socket. 5. **`create_string(data)`:** Creates a Minecraft string, which is a VarInt representing the string length followed by the UTF-8 encoded string. 6. **`create_packet(packet_id, data)`:** Creates a complete Minecraft packet. A packet consists of a VarInt representing the packet length, a VarInt representing the packet ID, and the packet data. 7. **`handle_handshake(sock)`:** Handles the Handshake phase. This is the first phase of the protocol. The client sends a handshake packet containing the protocol version, server address, port, and the "next state" (1 for Status, 2 for Login). 8. **`handle_status_request(sock)`:** Handles the Status Request and Response. The client sends an empty status request packet. The server responds with a JSON string containing server information (version, player count, MOTD). 9. **`handle_ping(sock)`:** Handles the Ping Request and Response. The client sends a ping packet with a payload. The server responds with a pong packet containing the same payload. This is used to measure latency. 10. **`handle_client(sock, address)`:** Handles a single client connection. It calls the appropriate handler functions based on the "next state" received in the handshake. 11. **`main()`:** The main server loop. It creates a socket, binds it to the specified host and port, listens for incoming connections, and spawns a new thread (or process, in a more robust implementation) to handle each client. **How to Run:** 1. **Save:** Save the code as a Python file (e.g., `mcp_server.py`). 2. **Run:** Execute the script from your terminal: `python mcp_server.py` 3. **Connect:** Start your Minecraft client. In the multiplayer menu, add a server with the address `localhost:25565` (or the host and port you configured). *Make sure the Minecraft client version matches the `PROTOCOL_VERSION` in the code.* 4. **Observe:** You should see the server in the server list. When you hover over it, you should see the MOTD. You won't be able to join the server because the login phase is not implemented. The server's console output will show the handshake and status requests. **Chinese Translation of Key Concepts:** * **Minecraft Protocol (MCP):** Minecraft 协议 (Minecraft Xiéyì) * **Handshake:** 握手 (Wòshǒu) * **Status:** 状态 (Zhuàngtài) * **Login:** 登录 (Dēnglù) * **Packet:** 数据包 (Shùjù bāo) * **VarInt:** 变长整数 (Biàn cháng zhěngshù) * **MOTD (Message of the Day):** 每日消息 (Měi rì xiāoxī) / 服务器标语 (Fúwùqì biāoyǔ) * **Protocol Version:** 协议版本 (Xiéyì bǎnběn) * **Server Address:** 服务器地址 (Fúwùqì dìzhǐ) * **Port:** 端口 (Duānkǒu) * **Payload:** 载荷 (Zàihè) **Further Development:** * **Login Phase:** Implement the login phase to handle player authentication. This involves encryption and communication with Mojang's authentication servers. * **Gameplay:** Implement the gameplay loop, including handling player movement, chunk loading, entity management, and game logic. * **World Generation:** Generate or load a Minecraft world. You'll need to use an NBT library to read and write world data. * **Multi-threading/Asynchronous I/O:** Use threads or asynchronous I/O to handle multiple clients concurrently. * **Error Handling:** Add more robust error handling to gracefully handle unexpected events. * **Security:** Implement encryption and authentication to protect the server from attacks. This example provides a basic foundation. Building a complete Minecraft server is a significant undertaking. Good luck!

CHUK Music MCP Server

CHUK Music MCP Server

Enables AI-assisted music composition through copyable pattern templates, style constraints, and arrangement tools that compile to MIDI files. Provides 30+ tools for managing musical structures, layers, patterns, and styles with deterministic compilation from YAML arrangements.

Slack MCP Server

Slack MCP Server

A server implementing Model Context Protocol that enables AI assistants to interact with Slack API through a standardized interface, providing tools for messaging, channel management, user information retrieval, and more.

semantic-code-mcp

semantic-code-mcp

A local MCP server that provides semantic code search for Python codebases using tree-sitter for chunking and LanceDB for vector storage. It enables natural language queries to find relevant code snippets based on meaning rather than just text matching.

Oracle MCP Server by CData

Oracle MCP Server by CData

Oracle MCP Server by CData

mcp-confluence

mcp-confluence

一个模型上下文服务器,它提供可以用作 Zed Editor 等客户端的斜杠命令的提示,以便将页面内容作为上下文添加到 AI 助手中。

AgentFund MCP Server

AgentFund MCP Server

Enables AI agents to fundraise for projects on the Base chain using milestone-based escrow management. It allows agents to create proposals, track funding progress, and generate payment release requests upon completing work.

BullMQ MCP Server

BullMQ MCP Server

Enables AI assistants to manage BullMQ Redis-based job queues through natural language, supporting operations like job monitoring, queue control, and multi-instance Redis connections. Users can add, retry, promote, and clean jobs while accessing detailed job logs and queue statistics directly within the assistant.

Morning Notification

Morning Notification

MCP Document Server

MCP Document Server

一个简单的服务器,实现了用于文档搜索的模型上下文协议。

KHU Notebook Research Assistant

KHU Notebook Research Assistant

An MCP server that interfaces with Google NotebookLM to enable autonomous academic research and systematic knowledge management. It allows users to perform deep web searches and automatically generate study artifacts like research reports, presentation slides, and audio overviews.

mcp-meupc

mcp-meupc

An MCP server for searching PC components and comparing prices across Brazilian stores via meupc.net. It enables users to explore community builds, track deals, and access detailed hardware specifications and compatibility information.

Knowledge Graph Memory Server

Knowledge Graph Memory Server

A persistent memory system using a local knowledge graph that enables Claude to remember information about users across chats, with advanced search, graph traversal, and filtering capabilities for entities, relations, and observations.

MNEE MCP Server

MNEE MCP Server

Enables AI agents to interact with MNEE stablecoin on Bitcoin SV, including checking balances, transferring tokens, and querying transaction history in both sandbox and production environments.

DNDzgz MCP Server

DNDzgz MCP Server

An MCP server that provides real-time information about the Zaragoza tram system, including arrival estimations and station details through the DNDzgz API.

AI Cognitive Nexus

AI Cognitive Nexus

Enables dynamic creation and orchestration of hierarchical AI agent teams with role-based personas and domain knowledge injection. Supports multi-agent collaboration, session management, and complex task execution through structured team workflows.

Trilogy AI MCP Server

Trilogy AI MCP Server

An MCP server that analyzes Trilogy AI Center of Excellence Substack publications, allowing users to list, search, and analyze trends in the AI content.

HeFeng Weather MCP Server

HeFeng Weather MCP Server

Provides weather forecast data for locations in China through HeFeng Weather API, supporting real-time, hourly, and daily forecasts with full Chinese weather descriptions.

WSB Analyst MCP Server

WSB Analyst MCP Server

A Model Context Protocol server that enables LLM clients to fetch, analyze, and extract insights from real-time WallStreetBets posts, comments, and shared links for market analysis.

Azure Container Apps Weather MCP Server

Azure Container Apps Weather MCP Server

A server-sent events (SSE) MCP server that runs on Azure Container Apps with API key authentication, likely providing weather-related functionality based on the configuration.

Seamless Sign-ups MCP Server

Seamless Sign-ups MCP Server

A demonstration project that uses Google Gemini 2.0 Flash to interact with a locally hosted Model Calling Protocol server for managing user registration data stored in CSV files.

BooksAPI-MCP

BooksAPI-MCP

A Model Context Protocol (MCP) server implementation built with Python and FastAPI for educational purposes. Demonstrates MCP server functionality through a books API interface.

weather-mcp

weather-mcp

一个获取天气的测试 MCP 服务器 (Yī gè huòqǔ tiānqì de cèshì MCP fúwùqì) This translates to: "A test MCP server for getting weather information."

Postman MCP Generator

Postman MCP Generator

Automatically converts Postman API collections into MCP-compatible tools for AI assistants. Enables users to interact with any API through natural language by generating JavaScript tools from Postman requests.

MSPaint MCP Server with AI-based Planning Algorithms

MSPaint MCP Server with AI-based Planning Algorithms

使用高级 AI 提示来增强 LLM 规划,以解决复杂的数学问题并在画图画布上绘制答案。 (Shǐyòng gāojí AI tíshì lái zēngqiáng LLM guīhuà, yǐ jiějué fùzá de shùxué wèntí bìng zài huàtú huàbù shàng huìzhì dá'àn.)

Gumroad MCP Server

Gumroad MCP Server

Gumroad API 的模型上下文协议 (MCP) 服务器实现

COTI MCP Server

COTI MCP Server

Enables AI applications to interact with the COTI blockchain for private token operations, including deployment and management of private ERC20 tokens and ERC721 NFTs using COTI's Multi-Party Computation (MPC) technology.

Apple Find My MCP Server

Apple Find My MCP Server

Enables interaction with Apple's Find My network to track devices, check battery status, and manage device information. Provides secure authentication and caching for efficient access to your Apple devices' location and status data.

Genai Toolbox

Genai Toolbox

开源的 MCP 服务器,专注于为数据库提供简单、快速且安全的工具。

Browser MCP Server (Anchor)

Browser MCP Server (Anchor)

Enables browser automation through Anchor Browser's cloud infrastructure with built-in proxies, stealth features, and anti-detection capabilities. Allows LLMs to navigate, click, type, take screenshots, and interact with web pages using Playwright's accessibility tree without requiring local browser installations.