发现优秀的 MCP 服务器

通过 MCP 服务器扩展您的代理能力,拥有 16,399 个能力。

全部16,399
Uber Eats MCP Server

Uber Eats MCP Server

一个概念验证服务器,实现了模型上下文协议,使 LLM 应用程序能够与 Uber Eats 功能进行交互。

asana

asana

创建、列出、更新任务 创建、查看项目 项目ID是硬编码的! 哎呀

MCP Doc Server

MCP Doc Server

A document-based MCP server that supports keyword searching and content retrieval from official website documentation.

Anthropic MCP Server

Anthropic MCP Server

镜子 (jìng zi)

Mpesa Daraja MCP Server

Mpesa Daraja MCP Server

Tox Testing MCP Server

Tox Testing MCP Server

一个 MCP 服务器,它执行 tox 命令来运行项目中的 Python 测试(使用 pytest),允许用户运行所有测试或特定的测试组、文件、用例或目录。 **Explanation of terms:** * **MCP Server:** MCP likely refers to a specific type of server or system within a particular context. Without more context, it's difficult to provide a more precise translation. It could stand for "Management Control Panel" or something similar. I've left it as "MCP" in the translation. * **tox:** A generic test automation tool. * **pytest:** A popular Python testing framework. * **Test groups:** Refers to logical groupings of tests, often defined in `tox.ini` or similar configuration files. * **Test files:** Python files containing test functions or classes. * **Test cases:** Individual test functions or methods within a test class. * **Directories:** Folders containing test files.

Foundry MCP Server

Foundry MCP Server

一个为 Solidity 开发者打造的 Foundry 实验性 MCP 服务器

MCP Spec Generator

MCP Spec Generator

Generates project specifications and file structures using Claude AI through MCP integration. Enables users to describe project ideas and automatically create corresponding documentation and project files.

Model Context Protocol .NET Samples

Model Context Protocol .NET Samples

好的,这是关于使用 .NET 创建和使用 MCP 服务器和客户端的综合示例集: **概述** MCP (Minecraft Protocol) 是 Minecraft 客户端和服务器之间用于通信的协议。 使用 .NET,你可以创建自定义的 MCP 服务器和客户端,以实现各种目的,例如: * **机器人:** 自动执行游戏中的任务。 * **代理:** 修改客户端和服务器之间的流量。 * **服务器插件:** 扩展服务器的功能。 * **自定义客户端:** 创建具有自定义功能的 Minecraft 客户端。 **示例集** 以下示例将涵盖创建和使用 MCP 服务器和客户端的关键方面。 这些示例使用 C# 和一些流行的 .NET 库,例如: * **`System.Net.Sockets`:** 用于网络通信的基础类。 * **`BinaryReader` 和 `BinaryWriter`:** 用于读取和写入二进制数据。 * **`NbtCompound` (来自 `fNbt` 或类似库):** 用于处理 NBT (Named Binary Tag) 数据,Minecraft 使用它来存储世界数据和实体数据。 * **`ZlibStream` (来自 `Ionic.Zlib` 或类似库):** 用于处理数据压缩。 **重要提示:** MCP 协议非常复杂,并且会随着 Minecraft 版本的更新而变化。 这些示例旨在提供一个起点,你需要根据你使用的 Minecraft 版本调整代码。 强烈建议参考官方 Minecraft 协议文档和社区资源。 **1. 建立连接 (客户端)** ```csharp using System; using System.Net.Sockets; using System.IO; public class MinecraftClient { private string _serverAddress; private int _serverPort; private TcpClient _client; private NetworkStream _stream; private BinaryReader _reader; private BinaryWriter _writer; public MinecraftClient(string serverAddress, int serverPort) { _serverAddress = serverAddress; _serverPort = serverPort; } public void Connect() { try { _client = new TcpClient(_serverAddress, _serverPort); _stream = _client.GetStream(); _reader = new BinaryReader(_stream); _writer = new BinaryWriter(_stream); Console.WriteLine("Connected to server!"); } catch (Exception ex) { Console.WriteLine($"Error connecting: {ex.Message}"); } } public void Disconnect() { if (_client != null && _client.Connected) { _reader.Close(); _writer.Close(); _stream.Close(); _client.Close(); Console.WriteLine("Disconnected from server."); } } // 示例:发送握手数据包 public void SendHandshake(int protocolVersion, string serverAddress, int serverPort, int nextState) { // 构建握手数据包 using (MemoryStream packetData = new MemoryStream()) using (BinaryWriter packetWriter = new BinaryWriter(packetData)) { // Packet ID (0x00) packetWriter.Write((byte)0x00); // Protocol Version (VarInt) WriteVarInt(packetWriter, protocolVersion); // Server Address (String) WriteString(packetWriter, serverAddress); // Server Port (Unsigned Short) packetWriter.Write((ushort)serverPort); // Next State (VarInt) WriteVarInt(packetWriter, nextState); // 获取数据包内容 byte[] packetBytes = packetData.ToArray(); // 发送数据包长度 (VarInt) WriteVarInt(_writer, packetBytes.Length); // 发送数据包内容 _writer.Write(packetBytes); _writer.Flush(); } } // 示例:发送请求数据包 (用于获取服务器状态) public void SendRequest() { // 构建请求数据包 using (MemoryStream packetData = new MemoryStream()) using (BinaryWriter packetWriter = new BinaryWriter(packetData)) { // Packet ID (0x00) packetWriter.Write((byte)0x00); // 获取数据包内容 byte[] packetBytes = packetData.ToArray(); // 发送数据包长度 (VarInt) WriteVarInt(_writer, packetBytes.Length); // 发送数据包内容 _writer.Write(packetBytes); _writer.Flush(); } } // 示例:读取响应数据包 (用于获取服务器状态) public string ReadResponse() { // 读取数据包长度 (VarInt) int packetLength = ReadVarInt(_reader); // 读取数据包内容 byte[] packetBytes = _reader.ReadBytes(packetLength); using (MemoryStream packetData = new MemoryStream(packetBytes)) using (BinaryReader packetReader = new BinaryReader(packetData)) { // 读取 Packet ID byte packetId = packetReader.ReadByte(); if (packetId == 0x00) { // 读取 JSON 响应 string jsonResponse = ReadString(packetReader); return jsonResponse; } else { Console.WriteLine($"Unexpected packet ID: 0x{packetId:X2}"); return null; } } } // Helper functions for reading and writing VarInts and Strings private void WriteVarInt(BinaryWriter writer, int value) { while (true) { if ((value & ~0x7F) == 0) { writer.Write((byte)value); return; } writer.Write((byte)((value & 0x7F) | 0x80)); value >>= 7; } } private int ReadVarInt(BinaryReader reader) { int numRead = 0; int result = 0; byte read; do { read = reader.ReadByte(); int value = (read & 0x7f); result |= (value << (7 * numRead)); numRead++; if (numRead > 5) { throw new InvalidOperationException("VarInt is too big"); } } while ((read & 0x80) != 0); return result; } private void WriteString(BinaryWriter writer, string value) { byte[] stringBytes = System.Text.Encoding.UTF8.GetBytes(value); WriteVarInt(writer, stringBytes.Length); writer.Write(stringBytes); } private string ReadString(BinaryReader reader) { int length = ReadVarInt(reader); byte[] stringBytes = reader.ReadBytes(length); return System.Text.Encoding.UTF8.GetString(stringBytes); } public static void Main(string[] args) { MinecraftClient client = new MinecraftClient("localhost", 25565); // 替换为你的服务器地址和端口 client.Connect(); // 获取服务器状态 client.SendHandshake(763, "localhost", 25565, 1); // 763 是 1.17.1 的协议版本,根据你的 Minecraft 版本调整 client.SendRequest(); string response = client.ReadResponse(); if (response != null) { Console.WriteLine($"Server Status: {response}"); } client.Disconnect(); } } ``` **2. 建立连接 (服务器)** ```csharp using System; using System.Net; using System.Net.Sockets; using System.Threading; using System.IO; public class MinecraftServer { private TcpListener _listener; private bool _isRunning; public MinecraftServer(int port) { _listener = new TcpListener(IPAddress.Any, port); } public void Start() { _listener.Start(); _isRunning = true; Console.WriteLine("Server started. Listening for connections..."); while (_isRunning) { try { TcpClient client = _listener.AcceptTcpClient(); Console.WriteLine("Client connected."); // 为每个客户端创建一个新线程 Thread clientThread = new Thread(() => HandleClient(client)); clientThread.Start(); } catch (SocketException ex) { Console.WriteLine($"SocketException: {ex.Message}"); Stop(); } } } public void Stop() { _isRunning = false; _listener.Stop(); Console.WriteLine("Server stopped."); } private void HandleClient(TcpClient client) { using (NetworkStream stream = client.GetStream()) using (BinaryReader reader = new BinaryReader(stream)) using (BinaryWriter writer = new BinaryWriter(stream)) { try { // 处理客户端连接 while (client.Connected) { if (stream.DataAvailable) { // 读取数据包长度 int packetLength = ReadVarInt(reader); // 读取数据包内容 byte[] packetBytes = reader.ReadBytes(packetLength); // 处理数据包 ProcessPacket(packetBytes, writer); } else { // 如果没有数据,则短暂休眠以避免 CPU 占用 Thread.Sleep(10); } } } catch (IOException ex) { Console.WriteLine($"IOException: {ex.Message}"); } catch (Exception ex) { Console.WriteLine($"Exception: {ex.Message}"); } finally { Console.WriteLine("Client disconnected."); client.Close(); } } } private void ProcessPacket(byte[] packetBytes, BinaryWriter writer) { using (MemoryStream packetData = new MemoryStream(packetBytes)) using (BinaryReader packetReader = new BinaryReader(packetData)) { // 读取 Packet ID byte packetId = packetReader.ReadByte(); switch (packetId) { case 0x00: // Handshake HandleHandshake(packetReader, writer); break; // 其他数据包处理逻辑 default: Console.WriteLine($"Unknown packet ID: 0x{packetId:X2}"); break; } } } private void HandleHandshake(BinaryReader reader, BinaryWriter writer) { // 读取协议版本 int protocolVersion = ReadVarInt(reader); // 读取服务器地址 string serverAddress = ReadString(reader); // 读取服务器端口 ushort serverPort = reader.ReadUInt16(); // 读取下一个状态 int nextState = ReadVarInt(reader); Console.WriteLine($"Handshake received: Protocol Version = {protocolVersion}, Server Address = {serverAddress}, Server Port = {serverPort}, Next State = {nextState}"); // 根据下一个状态执行不同的操作 switch (nextState) { case 1: // Status SendStatusResponse(writer); break; case 2: // Login // TODO: 处理登录 break; default: Console.WriteLine($"Unknown next state: {nextState}"); break; } } private void SendStatusResponse(BinaryWriter writer) { // 构建服务器状态 JSON string jsonResponse = @"{ ""version"": { ""name"": ""1.17.1"", ""protocol"": 763 }, ""players"": { ""max"": 100, ""online"": 0, ""sample"": [] }, ""description"": { ""text"": ""A Minecraft Server"" } }"; // 构建响应数据包 using (MemoryStream packetData = new MemoryStream()) using (BinaryWriter packetWriter = new BinaryWriter(packetData)) { // Packet ID (0x00) packetWriter.Write((byte)0x00); // JSON 响应 (String) WriteString(packetWriter, jsonResponse); // 获取数据包内容 byte[] packetBytes = packetData.ToArray(); // 发送数据包长度 (VarInt) WriteVarInt(writer, packetBytes.Length); // 发送数据包内容 writer.Write(packetBytes); writer.Flush(); } } // Helper functions for reading and writing VarInts and Strings private int ReadVarInt(BinaryReader reader) { int numRead = 0; int result = 0; byte read; do { read = reader.ReadByte(); int value = (read & 0x7f); result |= (value << (7 * numRead)); numRead++; if (numRead > 5) { throw new InvalidOperationException("VarInt is too big"); } } while ((read & 0x80) != 0); return result; } private void WriteVarInt(BinaryWriter writer, int value) { while (true) { if ((value & ~0x7F) == 0) { writer.Write((byte)value); return; } writer.Write((byte)((value & 0x7F) | 0x80)); value >>= 7; } } private string ReadString(BinaryReader reader) { int length = ReadVarInt(reader); byte[] stringBytes = reader.ReadBytes(length); return System.Text.Encoding.UTF8.GetString(stringBytes); } private void WriteString(BinaryWriter writer, string value) { byte[] stringBytes = System.Text.Encoding.UTF8.GetBytes(value); WriteVarInt(writer, stringBytes.Length); writer.Write(stringBytes); } public static void Main(string[] args) { MinecraftServer server = new MinecraftServer(25565); // 替换为你想要的端口 server.Start(); } } ``` **3. 处理数据包** MCP 协议定义了许多不同类型的数据包,每个数据包都有特定的 ID 和结构。 你需要根据你想要实现的功能来处理这些数据包。 * **客户端到服务器:** * **握手 (Handshake):** 客户端连接时发送的第一个数据包,用于协商协议版本和指定下一个状态(状态或登录)。 * **登录 (Login):** 用于验证客户端身份。 * **聊天消息 (ChatMessage):** 客户端发送的聊天消息。 * **命令 (Command):** 客户端执行的命令。 * **移动 (Movement):** 客户端的位置和方向。 * **挖掘 (Digging):** 客户端挖掘方块的动作。 * **放置 (Placement):** 客户端放置方块的动作。 * **服务器到客户端:** * **状态响应 (Status Response):** 服务器发送的服务器状态信息。 * **登录成功 (Login Success):** 服务器验证客户端身份后发送。 * **聊天消息 (ChatMessage):** 服务器发送的聊天消息。 * **游戏状态 (GameState):** 服务器发送的游戏状态信息。 * **实体更新 (Entity Update):** 服务器发送的实体位置和属性更新。 * **方块更新 (Block Update):** 服务器发送的方块更新。 * **区块数据 (Chunk Data):** 服务器发送的区块数据。 **示例:处理聊天消息 (服务器)** ```csharp // 在 ProcessPacket 方法中添加以下代码 case 0x03: // Chat Message (客户端 -> 服务器) HandleChatMessage(packetReader, writer); break; // 新的 HandleChatMessage 方法 private void HandleChatMessage(BinaryReader reader, BinaryWriter writer) { string message = ReadString(reader); Console.WriteLine($"Received chat message: {message}"); // 示例:将消息广播给所有连接的客户端 BroadcastChatMessage(message); } // 广播聊天消息 private void BroadcastChatMessage(string message) { // 构建聊天消息数据包 (服务器 -> 客户端) using (MemoryStream packetData = new MemoryStream()) using (BinaryWriter packetWriter = new BinaryWriter(packetData)) { // Packet ID (0x0E for 1.17.1) packetWriter.Write((byte)0x0E); // Message (JSON format) string jsonMessage = $"{{\"text\":\"{message}\"}}"; WriteString(packetWriter, jsonMessage); // Position (0: chat box, 1: system message, 2: above hotbar) packetWriter.Write((byte)0); // Sender UUID (all zeros for now) for (int i = 0; i < 16; i++) { packetWriter.Write((byte)0); } // 获取数据包内容 byte[] packetBytes = packetData.ToArray(); // 发送数据包长度 (VarInt) WriteVarInt(writer, packetBytes.Length); // 发送数据包内容 writer.Write(packetBytes); writer.Flush(); } } ``` **4. 处理 NBT 数据** Minecraft 使用 NBT (Named Binary Tag) 格式来存储世界数据、实体数据和物品数据。 你需要一个 NBT 库来读取和写入 NBT 数据。 `fNbt` 是一个流行的选择。 **示例:读取区块数据 (服务器)** ```csharp // 需要安装 fNbt NuGet 包 using fNbt; // 在 ProcessPacket 方法中添加以下代码 case 0x22: // Chunk Data (服务器 -> 客户端) HandleChunkData(packetReader, writer); break; // 新的 HandleChunkData 方法 private void HandleChunkData(BinaryReader reader, BinaryWriter writer) { // 读取区块坐标 int chunkX = reader.ReadInt32(); int chunkZ = reader.ReadInt32(); // 读取 Primary Bit Mask int primaryBitMask = ReadVarInt(reader); // 读取 NBT 数据长度 int nbtLength = reader.ReadInt32(); // 读取 NBT 数据 byte[] nbtData = reader.ReadBytes(nbtLength); // 使用 Zlib 解压缩 NBT 数据 using (MemoryStream compressedStream = new MemoryStream(nbtData)) using (Ionic.Zlib.ZlibStream decompressedStream = new Ionic.Zlib.ZlibStream(compressedStream, Ionic.Zlib.CompressionMode.Decompress)) { // 从解压缩的流中读取 NBT 数据 NbtCompound rootTag = NbtCompound.ReadFrom(decompressedStream); // 处理 NBT 数据 Console.WriteLine($"Chunk Data received: X = {chunkX}, Z = {chunkZ}, Root Tag = {rootTag.Name}"); // 示例:遍历区块中的所有实体 if (rootTag.Contains("Entities")) { NbtList entities = rootTag["Entities"] as NbtList; if (entities != null) { foreach (NbtCompound entity in entities.OfType<NbtCompound>()) { // 获取实体类型 string entityType = entity["id"].AsString(); Console.WriteLine($" Entity: {entityType}"); } } } } } ``` **5. 数据压缩** Minecraft 使用 Zlib 压缩来减少网络流量。 你需要一个 Zlib 库来压缩和解压缩数据。 `Ionic.Zlib` 是一个流行的选择。 **示例:压缩数据 (服务器)** ```csharp // 需要安装 Ionic.Zlib NuGet 包 using Ionic.Zlib; // 压缩数据 private byte[] CompressData(byte[] data) { using (MemoryStream compressedStream = new MemoryStream()) using (ZlibStream compressionStream = new ZlibStream(compressedStream, CompressionMode.Compress, CompressionLevel.BestCompression)) { compressionStream.Write(data, 0, data.Length); compressionStream.Close(); return compressedStream.ToArray(); } } // 解压缩数据 private byte[] DecompressData(byte[] data) { using (MemoryStream compressedStream = new MemoryStream(data)) using (ZlibStream decompressionStream = new ZlibStream(compressedStream, CompressionMode.Decompress)) using (MemoryStream decompressedStream = new MemoryStream()) { decompressionStream.CopyTo(decompressedStream); return decompressedStream.ToArray(); } } ``` **关键点和注意事项** * **协议版本:** 确保你使用的协议版本与你的 Minecraft 版本匹配。 协议版本会随着 Minecraft 的更新而变化。 * **VarInt:** Minecraft 使用 VarInt (Variable-length Integer) 来表示长度和其他值。 你需要正确地读取和写入 VarInt。 * **字符串:** Minecraft 使用 UTF-8 编码的字符串,并使用 VarInt 来表示字符串的长度。 * **NBT 数据:** 使用 NBT 库来处理 NBT 数据。 * **数据压缩:** 使用 Zlib 库来压缩和解压缩数据。 * **线程:** 在服务器端,为每个客户端创建一个新线程,以避免阻塞主线程。 * **错误处理:** 添加适当的错误处理,以处理网络错误和其他异常。 * **安全性:** 注意安全性,特别是处理登录和身份验证时。 * **异步操作:** 考虑使用异步操作来提高性能,特别是处理网络 I/O 时。 * **资源管理:** 确保正确地释放所有资源,例如流和套接字。 **进一步学习** * **Minecraft 协议文档:** [https://wiki.vg/Protocol](https://wiki.vg/Protocol) (这是最重要的资源) * **fNbt 库:** [https://github.com/fragmer/fNbt](https://github.com/fragmer/fNbt) * **Ionic.Zlib 库:** [https://github.com/rbradley/Ionic.Zlib](https://github.com/rbradley/Ionic.Zlib) * **Minecraft 社区论坛和 Wiki:** 搜索 "Minecraft protocol" 和 "Minecraft API" 可以找到很多有用的信息和示例。 **总结** 这些示例提供了一个使用 .NET 创建和使用 MCP 服务器和客户端的起点。 你需要根据你想要实现的功能来扩展这些示例。 记住,MCP 协议非常复杂,并且会随着 Minecraft 版本的更新而变化。 请务必参考官方 Minecraft 协议文档和社区资源。 **中文翻译:** 好的,这里是一份关于使用 .NET 创建和使用 MCP 服务器和客户端的综合示例集: **概述** MCP (Minecraft 协议) 是 Minecraft 客户端和服务器之间用于通信的协议。 使用 .NET,你可以创建自定义的 MCP 服务器和客户端,以实现各种目的,例如: * **机器人:** 自动执行游戏中的任务。 * **代理:** 修改客户端和服务器之间的流量。 * **服务器插件:** 扩展服务器的功能。 * **自定义客户端:** 创建具有自定义功能的 Minecraft 客户端。 **示例集** 以下示例将涵盖创建和使用 MCP 服务器和客户端的关键方面。 这些示例使用 C# 和一些流行的 .NET 库,例如: * **`System.Net.Sockets`:** 用于网络通信的基础类。 * **`BinaryReader` 和 `BinaryWriter`:** 用于读取和写入二进制数据。 * **`NbtCompound` (来自 `fNbt` 或类似库):** 用于处理 NBT (命名二进制标签) 数据,Minecraft 使用它来存储世界数据和实体数据。 * **`ZlibStream` (来自 `Ionic.Zlib` 或类似库):** 用于处理数据压缩。 **重要提示:** MCP 协议非常复杂,并且会随着 Minecraft 版本的更新而变化。 这些示例旨在提供一个起点,你需要根据你使用的 Minecraft 版本调整代码。 强烈建议参考官方 Minecraft 协议文档和社区资源。 **(以下代码示例的中文翻译,由于篇幅限制,只翻译关键部分,并保留代码中的英文注释)** **1. 建立连接 (客户端)** ```csharp // ... (省略代码) // 示例:发送握手数据包 public void SendHandshake(int protocolVersion, string serverAddress, int serverPort, int nextState) { // 构建握手数据包 // ... (省略代码) } // 示例:发送请求数据包 (用于获取服务器状态) public void SendRequest() { // 构建请求数据包 // ... (省略代码) } // 示例:读取响应数据包 (用于获取服务器状态) public string ReadResponse() { // 读取数据包长度 (VarInt) // ... (省略代码) } // Helper functions for reading and writing VarInts and Strings // 辅助函数,用于读取和写入 VarInt 和字符串 // ... (省略代码) public static void Main(string[] args) { MinecraftClient client = new MinecraftClient("localhost", 25565); // 替换为你的服务器地址和端口 client.Connect(); // 获取服务器状态 // ... (省略代码) client.Disconnect(); } } ``` **2. 建立连接 (服务器)** ```csharp // ... (省略代码) private void HandleClient(TcpClient client) { // ... (省略代码) } private void ProcessPacket(byte[] packetBytes, BinaryWriter writer) { // ... (省略代码) } private void HandleHandshake(BinaryReader reader, BinaryWriter writer) { // ... (省略代码) } private void SendStatusResponse(BinaryWriter writer) { // ... (省略代码) } // Helper functions for reading and writing VarInts and Strings // 辅助函数,用于读取和写入 VarInt 和字符串 // ... (省略代码) public static void Main(string[] args) { MinecraftServer server = new MinecraftServer(25565); // 替换为你想要的端口 server.Start(); } } ``` **3. 处理数据包** MCP 协议定义了许多不同类型的数据包,每个数据包都有特定的 ID 和结构。 你需要根据你想要实现的功能来处理这些数据包。 * **客户端到服务器:** * **握手 (Handshake):** 客户端连接时发送的第一个数据包,用于协商协议版本和指定下一个状态(状态或登录)。 * **登录 (Login):** 用于验证客户端身份。 * **聊天消息 (ChatMessage):** 客户端发送的聊天消息。 * **命令 (Command):** 客户端执行的命令。 * **移动 (Movement):** 客户端的位置和方向。 * **挖掘 (Digging):** 客户端挖掘方块的动作。 * **放置 (Placement):** 客户端放置方块的动作。 * **服务器到客户端:** * **状态响应 (Status Response):** 服务器发送的服务器状态信息。 * **登录成功 (Login Success):** 服务器验证客户端身份后发送。 * **聊天消息 (ChatMessage):** 服务器发送的聊天消息。 * **游戏状态 (GameState):** 服务器发送的游戏状态信息。 * **实体更新 (Entity Update):** 服务器发送的实体位置和属性更新。 * **方块更新 (Block Update):** 服务器发送的方块更新。 * **区块数据 (Chunk Data):** 服务器发送的区块数据。 **示例:处理聊天消息 (服务器)** ```csharp // ... (省略代码) ``` **4. 处理 NBT 数据** Minecraft 使用 NBT (命名二进制标签) 格式来存储世界数据、实体数据和物品数据。 你需要一个 NBT 库来读取和写入 NBT 数据。 `fNbt` 是一个流行的选择。 **示例:读取区块数据 (服务器)** ```csharp // ... (省略代码) ``` **5. 数据压缩** Minecraft 使用 Zlib 压缩来减少网络流量。 你需要一个 Zlib 库来压缩和解压缩数据。 `Ionic.Zlib` 是一个流行的选择。 **示例:压缩数据 (服务器)** ```csharp // ... (省略代码) ``` **关键点和注意事项** * **协议版本:** 确保你使用的协议版本与你的 Minecraft 版本匹配。 协议版本会随着 Minecraft 的更新而变化。 * **VarInt:** Minecraft 使用 VarInt (可变长度整数) 来表示长度和其他值。 你需要正确地读取和写入 VarInt。 * **字符串:** Minecraft 使用 UTF-8 编码的字符串,并使用 VarInt 来表示字符串的长度。 * **NBT 数据:** 使用 NBT 库来处理 NBT 数据。 * **数据压缩:** 使用 Zlib 库来压缩和解压缩数据。 * **线程:** 在服务器端,为每个客户端创建一个新线程,以避免阻塞主线程。 * **错误处理:** 添加适当的错误处理,以处理网络错误和其他异常。 * **安全性:** 注意安全性,特别是处理登录和身份验证时。 * **异步操作:** 考虑使用异步操作来提高性能,特别是处理网络 I/O 时。 * **资源管理:** 确保正确地释放所有资源,例如流和套接字。 **进一步学习** * **Minecraft 协议文档:** [https://wiki.vg/Protocol](https://wiki.vg/Protocol) (这是最重要的资源) * **fNbt 库:** [https://github.com/fragmer/fNbt](https://github.com/fragmer/fNbt) * **Ionic.Zlib 库:** [https://github.com/rbradley/Ionic.Zlib](https://github.com/rbradley/Ionic.Zlib) * **Minecraft 社区论坛和 Wiki:** 搜索 "Minecraft protocol" 和 "Minecraft API" 可以找到很多有用的信息和示例。 **总结** 这些示例提供了一个使用 .NET 创建和使用 MCP 服务器和客户端的起点。 你需要根据你想要实现的功能来扩展这些示例。 记住,MCP 协议非常复杂,并且会随着 Minecraft 版本的更新而变化。 请务必参考官方 Minecraft 协议文档和社区资源。 **重要提示:** 由于代码量巨大,我只翻译了关键部分和注释。 你需要仔细阅读英文代码,并结合 Minecraft 协议文档进行理解和修改。 祝你成功!

You.com MCP Server

You.com MCP Server

Enables AI assistants to search the web, get news, perform research, and retrieve AI-powered answers with citations using the You.com API.

FHIR MCP Server

FHIR MCP Server

Enables seamless integration with FHIR APIs for healthcare applications, allowing users to search, retrieve, create, update, and analyze clinical information through natural language interactions. Supports SMART-on-FHIR authentication and works with various healthcare systems like EPIC and HAPI FHIR servers.

Adjust MCP

Adjust MCP

一个 MCP 服务器,可以与 Adjust API 交互,允许你使用来自任何 MCP 客户端(如 Cursor 或 Claude Desktop)的自然语言查询移动分析报告、指标和性能数据。

MCP MixSearch

MCP MixSearch

Enables advanced web search across multiple search engines (Brave, DuckDuckGo, Google, Bing, Yandex) with intelligent backend selection, full content extraction, and advanced filtering by time, language, geography, and content type.

Integration App MCP Server

Integration App MCP Server

这个 MCP 服务器实现允许用户通过模型上下文协议,从他们的集成应用工作区管理和暴露操作作为工具。

mcp-server-playwright

mcp-server-playwright

PostgreSQL MCP Server

PostgreSQL MCP Server

ThingsBoard MCP Server

ThingsBoard MCP Server

Connect your AI workflows to the ThingsBoard IoT Platform through this MCP server. Enables LLMs to query device telemetry, manage IoT entities (devices, assets, customers), and analyze sensor data - all through natural language. Perfect for building AI-powered IoT monitoring, predictive maintenance,

TailscaleMCP

TailscaleMCP

Enables comprehensive management of Tailscale networks including device management, DNS configuration, file sharing via Taildrop, security monitoring, and network automation with built-in Grafana/Prometheus observability stack.

Tapp Exchange MCP Server

Tapp Exchange MCP Server

Enables AI agents to interact with Tapp Exchange, a decentralized exchange on Aptos blockchain. Supports pool management, trading operations across AMM/CLMM/Stable pools, liquidity provision, and position tracking through natural language.

Notion Prompts MCP Server

Notion Prompts MCP Server

SOAR MCP Server

SOAR MCP Server

Integrates SOAR (Security Orchestration, Automation and Response) capabilities into AI clients, enabling security playbook execution, event management, and threat intelligence queries. Provides a complete security incident response platform through natural language interactions.

ToolHive - making MCP servers easy and secure

ToolHive - making MCP servers easy and secure

轻松安全地运行和管理 MCP 服务器

DP-MCP Server

DP-MCP Server

A comprehensive Data Platform server that enables seamless integration between PostgreSQL databases and MinIO object storage, with AI-powered natural language query capabilities.

🚀 NexusHub

🚀 NexusHub

NexusHub 是一个强大的模型上下文协议 (MCP) 服务器,它充当 AI 工作流程和工具集成的中心连接点。

Up Banking MCP Server

Up Banking MCP Server

Enables integration with Up Banking API to query account balances, transaction history, and spending categories. Supports filtering transactions by date, category, tags, and account type for comprehensive banking insights.

file-system-mcp-server

file-system-mcp-server

一个全面的 MCP (模型上下文协议) 服务器,用于文件系统操作,为 Claude 和其他 AI 助手提供访问本地文件和目录的能力。

Ankr Advanced API MCP Server ⚡

Ankr Advanced API MCP Server ⚡

高级 API MCP 服务器 (Gāojí API MCP Fúwùqì)

SAP HANA MCP Server by CData

SAP HANA MCP Server by CData

SAP HANA MCP Server by CData

FastAPI MCP Server

FastAPI MCP Server

A high-performance Model Context Protocol (MCP) server designed for large language models, enabling real-time communication between AI models and applications with support for session management and intelligent tool registration.

MCP Server Test Projesi

MCP Server Test Projesi

使用 Next.js 开发的 MCP 服务器测试项目