发现优秀的 MCP 服务器
通过 MCP 服务器扩展您的代理能力,拥有 34,829 个能力。
Github
three-js-mcp
用于控制 ThreeJs 源代码的 MCP 服务器,仅包含基本功能。
Unreal Engine MCP Server for Claude Desktop
用于 Claude Desktop 的虚幻引擎 MCP 服务器(早期 Alpha 预览版)
Chrome Extension Bridge MCP
一个 Chrome 扩展桥梁,允许您连接到 MCP 服务器以使用全局 window 对象。
mcpterm
一个 MCP 工具服务器,提供有状态的、兼容 TUI 的终端会话。
Books Mcp Server
这是一个用于查询书籍的 MCP 服务器,它可以应用于常见的 MCP 客户端,例如 Cherry Studio。
Tailscale MCP Server
一个实验性的 Tailscale MCP 服务器
MCP Server Example
GitBook 的 MCP 服务器
MCP Server Demo - ClienteDB
MCP-server
MCP 服务器 (MCP fúwùqì)
MySQL MCP Server
mcp-test
好的,以下是一些关于将 MCP (Minecraft Protocol) 服务器与 LLM (大型语言模型) 应用集成的教程方向,以及一些相关的资源和思路: **核心概念:** * **MCP (Minecraft Protocol):** Minecraft 客户端和服务器之间通信的协议。你需要理解如何解析和生成 MCP 数据包,才能与 Minecraft 服务器进行交互。 * **LLM (Large Language Model):** 大型语言模型,例如 GPT-3、LLaMA、文心一言等。你需要使用 LLM 来理解用户的自然语言指令,并将其转化为 Minecraft 服务器可以理解的命令。 * **中间件/桥梁:** 你需要一个中间件或桥梁来连接 MCP 服务器和 LLM 应用。这个中间件负责: * 接收来自 Minecraft 服务器的数据 (例如,玩家聊天信息)。 * 将数据传递给 LLM 进行处理。 * 接收来自 LLM 的指令。 * 将指令转化为 MCP 数据包,发送给 Minecraft 服务器。 **教程方向和思路:** 1. **基础:MCP 协议理解和数据包解析** * **目标:** 学习如何读取和写入 Minecraft 服务器的数据包。 * **内容:** * MCP 协议的结构和数据类型。 * 使用 Python (例如,`mcstatus`, `nbt`) 或 Java (例如,`netty`) 等编程语言解析和生成 MCP 数据包。 * 监听 Minecraft 服务器的特定事件 (例如,聊天消息、玩家加入/离开)。 * **资源:** * **Wiki.vg:** Minecraft 协议的官方文档:[https://wiki.vg/Protocol](https://wiki.vg/Protocol) * **Python `mcstatus` 库:** 用于查询 Minecraft 服务器状态的 Python 库,可以作为学习 MCP 协议的起点:[https://pypi.org/project/mcstatus/](https://pypi.org/project/mcstatus/) * **Python `nbt` 库:** 用于读取和写入 Minecraft 的 NBT 数据格式,例如玩家数据和世界数据:[https://pypi.org/project/nbt/](https://pypi.org/project/nbt/) * **Netty:** 一个流行的 Java 网络框架,常用于 Minecraft 服务器开发和协议处理。 2. **LLM 集成:自然语言指令处理** * **目标:** 使用 LLM 将自然语言指令转化为 Minecraft 命令。 * **内容:** * 选择一个合适的 LLM (例如,GPT-3, LLaMA, 文心一言)。 * 设计一个 prompt 工程方案,让 LLM 能够理解 Minecraft 相关的指令。 * 使用 LLM 的 API (例如,OpenAI API) 将用户指令发送给 LLM。 * 解析 LLM 的输出,提取 Minecraft 命令。 * **示例 Prompt:** ``` 你是一个 Minecraft 助手。你的任务是将用户的自然语言指令转化为 Minecraft 命令。 用户指令: "帮我挖一个 10x10 的坑。" Minecraft 命令: "/fill ~ ~ ~ ~10 ~ ~10 air replace stone" 用户指令: "在我的位置放一个红色的羊毛方块。" Minecraft 命令: "/setblock ~ ~ ~ minecraft:red_wool" 用户指令: "{用户指令}" Minecraft 命令: ``` * **资源:** * **OpenAI API 文档:** [https://platform.openai.com/docs/api-reference](https://platform.openai.com/docs/api-reference) * **LLaMA 文档:** (取决于你选择的 LLaMA 版本和部署方式) * **文心一言 API 文档:** (取决于你选择的文心一言版本和部署方式) * **Prompt Engineering 指南:** 搜索 "prompt engineering guide" 可以找到很多关于如何设计有效 prompt 的资源。 3. **中间件开发:连接 MCP 和 LLM** * **目标:** 创建一个中间件,负责 MCP 数据包的接收和发送,以及与 LLM 的通信。 * **内容:** * 使用 Python, Java, 或 Node.js 等编程语言开发中间件。 * 中间件需要监听 Minecraft 服务器的聊天消息。 * 将聊天消息发送给 LLM 进行处理。 * 接收 LLM 返回的 Minecraft 命令。 * 将 Minecraft 命令转化为 MCP 数据包,发送给 Minecraft 服务器。 * 处理错误和异常情况。 * **架构示例:** ``` [Minecraft Client] <--> [Minecraft Server] <--> [中间件] <--> [LLM API] ``` * **技术选型:** * **Python:** 易于使用,有很多相关的库 (例如,`mcstatus`, `requests`)。 * **Java:** 性能更好,适合处理高并发的场景。 * **Node.js:** 适合构建实时应用。 4. **进阶:更复杂的功能和优化** * **目标:** 实现更复杂的功能,例如: * 根据玩家的位置和状态,生成更智能的指令。 * 使用 LLM 生成 Minecraft 的故事或对话。 * 优化性能,减少延迟。 * **内容:** * 使用 Minecraft 的 API (例如,Bukkit API, Spigot API) 获取更多关于玩家和世界的信息。 * 使用 LLM 进行文本生成和对话。 * 使用缓存和异步处理来提高性能。 * 添加错误处理和日志记录。 **示例代码 (Python):** 这是一个非常简化的示例,展示了如何监听 Minecraft 服务器的聊天消息,并将消息发送给 LLM。 ```python import mcstatus import requests import json # Minecraft 服务器信息 SERVER_ADDRESS = "your_server_address" SERVER_PORT = 25565 # OpenAI API 密钥 OPENAI_API_KEY = "your_openai_api_key" def get_chat_messages(): """ 监听 Minecraft 服务器的聊天消息。 (需要使用 Minecraft 服务器插件或修改服务器代码来实现) """ # 这是一个占位符,你需要根据你的服务器设置来实现 # 例如,你可以使用 RCON 或 WebSocket 来获取聊天消息 # 这里假设你已经获取到了聊天消息列表 chat_messages = ["Player1: Hello!", "Player2: Can you help me build a house?"] return chat_messages def generate_minecraft_command(user_message): """ 使用 OpenAI API 将用户消息转化为 Minecraft 命令。 """ url = "https://api.openai.com/v1/completions" headers = { "Content-Type": "application/json", "Authorization": f"Bearer {OPENAI_API_KEY}" } prompt = f""" 你是一个 Minecraft 助手。你的任务是将用户的自然语言指令转化为 Minecraft 命令。 用户指令: "帮我挖一个 10x10 的坑。" Minecraft 命令: "/fill ~ ~ ~ ~10 ~ ~10 air replace stone" 用户指令: "在我的位置放一个红色的羊毛方块。" Minecraft 命令: "/setblock ~ ~ ~ minecraft:red_wool" 用户指令: "{user_message}" Minecraft 命令: """ data = { "model": "text-davinci-003", # 选择合适的模型 "prompt": prompt, "max_tokens": 100, "n": 1, "stop": None, "temperature": 0.5, } response = requests.post(url, headers=headers, data=json.dumps(data)) response_json = response.json() if "choices" in response_json: return response_json["choices"][0]["text"].strip() else: print(f"Error: {response_json}") return None def send_minecraft_command(command): """ 将 Minecraft 命令发送给服务器。 (需要使用 Minecraft 服务器插件或修改服务器代码来实现) """ # 这是一个占位符,你需要根据你的服务器设置来实现 # 例如,你可以使用 RCON 或 WebSocket 来发送命令 print(f"Sending command: {command}") if __name__ == "__main__": while True: chat_messages = get_chat_messages() for message in chat_messages: print(f"Received message: {message}") minecraft_command = generate_minecraft_command(message) if minecraft_command: print(f"Generated command: {minecraft_command}") send_minecraft_command(minecraft_command) # 暂停一段时间,避免过度请求 import time time.sleep(5) ``` **重要提示:** * **安全性:** 在生产环境中,务必注意安全性。不要将 API 密钥硬编码到代码中。使用环境变量或配置文件来存储敏感信息。 * **服务器插件/修改:** 你需要使用 Minecraft 服务器插件 (例如,Bukkit, Spigot, Paper) 或修改服务器代码,才能监听聊天消息和发送命令。 * **错误处理:** 添加完善的错误处理机制,以应对各种异常情况。 * **速率限制:** 注意 LLM API 的速率限制,避免过度请求。 **总结:** 将 MCP 服务器与 LLM 应用集成是一个复杂但有趣的项目。你需要理解 MCP 协议,掌握 LLM 的使用方法,并开发一个可靠的中间件。希望这些教程方向和资源能够帮助你入门。 祝你成功! --- **中文翻译:** 好的,以下是一些关于将 MCP (Minecraft 协议) 服务器与 LLM (大型语言模型) 应用集成的教程方向,以及一些相关的资源和思路: **核心概念:** * **MCP (Minecraft Protocol):** Minecraft 客户端和服务器之间通信的协议。你需要理解如何解析和生成 MCP 数据包,才能与 Minecraft 服务器进行交互。 * **LLM (Large Language Model):** 大型语言模型,例如 GPT-3、LLaMA、文心一言等。你需要使用 LLM 来理解用户的自然语言指令,并将其转化为 Minecraft 服务器可以理解的命令。 * **中间件/桥梁:** 你需要一个中间件或桥梁来连接 MCP 服务器和 LLM 应用。这个中间件负责: * 接收来自 Minecraft 服务器的数据 (例如,玩家聊天信息)。 * 将数据传递给 LLM 进行处理。 * 接收来自 LLM 的指令。 * 将指令转化为 MCP 数据包,发送给 Minecraft 服务器。 **教程方向和思路:** 1. **基础:MCP 协议理解和数据包解析** * **目标:** 学习如何读取和写入 Minecraft 服务器的数据包。 * **内容:** * MCP 协议的结构和数据类型。 * 使用 Python (例如,`mcstatus`, `nbt`) 或 Java (例如,`netty`) 等编程语言解析和生成 MCP 数据包。 * 监听 Minecraft 服务器的特定事件 (例如,聊天消息、玩家加入/离开)。 * **资源:** * **Wiki.vg:** Minecraft 协议的官方文档:[https://wiki.vg/Protocol](https://wiki.vg/Protocol) * **Python `mcstatus` 库:** 用于查询 Minecraft 服务器状态的 Python 库,可以作为学习 MCP 协议的起点:[https://pypi.org/project/mcstatus/](https://pypi.org/project/mcstatus/) * **Python `nbt` 库:** 用于读取和写入 Minecraft 的 NBT 数据格式,例如玩家数据和世界数据:[https://pypi.org/project/nbt/](https://pypi.org/project/nbt/) * **Netty:** 一个流行的 Java 网络框架,常用于 Minecraft 服务器开发和协议处理。 2. **LLM 集成:自然语言指令处理** * **目标:** 使用 LLM 将自然语言指令转化为 Minecraft 命令。 * **内容:** * 选择一个合适的 LLM (例如,GPT-3, LLaMA, 文心一言)。 * 设计一个 prompt 工程方案,让 LLM 能够理解 Minecraft 相关的指令。 * 使用 LLM 的 API (例如,OpenAI API) 将用户指令发送给 LLM。 * 解析 LLM 的输出,提取 Minecraft 命令。 * **示例 Prompt:** ``` 你是一个 Minecraft 助手。你的任务是将用户的自然语言指令转化为 Minecraft 命令。 用户指令: "帮我挖一个 10x10 的坑。" Minecraft 命令: "/fill ~ ~ ~ ~10 ~ ~10 air replace stone" 用户指令: "在我的位置放一个红色的羊毛方块。" Minecraft 命令: "/setblock ~ ~ ~ minecraft:red_wool" 用户指令: "{用户指令}" Minecraft 命令: ``` * **资源:** * **OpenAI API 文档:** [https://platform.openai.com/docs/api-reference](https://platform.openai.com/docs/api-reference) * **LLaMA 文档:** (取决于你选择的 LLaMA 版本和部署方式) * **文心一言 API 文档:** (取决于你选择的文心一言版本和部署方式) * **Prompt Engineering 指南:** 搜索 "prompt engineering guide" 可以找到很多关于如何设计有效 prompt 的资源。 3. **中间件开发:连接 MCP 和 LLM** * **目标:** 创建一个中间件,负责 MCP 数据包的接收和发送,以及与 LLM 的通信。 * **内容:** * 使用 Python, Java, 或 Node.js 等编程语言开发中间件。 * 中间件需要监听 Minecraft 服务器的聊天消息。 * 将聊天消息发送给 LLM 进行处理。 * 接收 LLM 返回的 Minecraft 命令。 * 将 Minecraft 命令转化为 MCP 数据包,发送给 Minecraft 服务器。 * 处理错误和异常情况。 * **架构示例:** ``` [Minecraft Client] <--> [Minecraft Server] <--> [中间件] <--> [LLM API] ``` * **技术选型:** * **Python:** 易于使用,有很多相关的库 (例如,`mcstatus`, `requests`)。 * **Java:** 性能更好,适合处理高并发的场景。 * **Node.js:** 适合构建实时应用。 4. **进阶:更复杂的功能和优化** * **目标:** 实现更复杂的功能,例如: * 根据玩家的位置和状态,生成更智能的指令。 * 使用 LLM 生成 Minecraft 的故事或对话。 * 优化性能,减少延迟。 * **内容:** * 使用 Minecraft 的 API (例如,Bukkit API, Spigot API) 获取更多关于玩家和世界的信息。 * 使用 LLM 进行文本生成和对话。 * 使用缓存和异步处理来提高性能。 * 添加错误处理和日志记录。 **示例代码 (Python):** 这是一个非常简化的示例,展示了如何监听 Minecraft 服务器的聊天消息,并将消息发送给 LLM。 ```python import mcstatus import requests import json # Minecraft 服务器信息 SERVER_ADDRESS = "你的服务器地址" SERVER_PORT = 25565 # OpenAI API 密钥 OPENAI_API_KEY = "你的 OpenAI API 密钥" def get_chat_messages(): """ 监听 Minecraft 服务器的聊天消息。 (需要使用 Minecraft 服务器插件或修改服务器代码来实现) """ # 这是一个占位符,你需要根据你的服务器设置来实现 # 例如,你可以使用 RCON 或 WebSocket 来获取聊天消息 # 这里假设你已经获取到了聊天消息列表 chat_messages = ["Player1: Hello!", "Player2: Can you help me build a house?"] return chat_messages def generate_minecraft_command(user_message): """ 使用 OpenAI API 将用户消息转化为 Minecraft 命令。 """ url = "https://api.openai.com/v1/completions" headers = { "Content-Type": "application/json", "Authorization": f"Bearer {OPENAI_API_KEY}" } prompt = f""" 你是一个 Minecraft 助手。你的任务是将用户的自然语言指令转化为 Minecraft 命令。 用户指令: "帮我挖一个 10x10 的坑。" Minecraft 命令: "/fill ~ ~ ~ ~10 ~ ~10 air replace stone" 用户指令: "在我的位置放一个红色的羊毛方块。" Minecraft 命令: "/setblock ~ ~ ~ minecraft:red_wool" 用户指令: "{user_message}" Minecraft 命令: """ data = { "model": "text-davinci-003", # 选择合适的模型 "prompt": prompt, "max_tokens": 100, "n": 1, "stop": None, "temperature": 0.5, } response = requests.post(url, headers=headers, data=json.dumps(data)) response_json = response.json() if "choices" in response_json: return response_json["choices"][0]["text"].strip() else: print(f"Error: {response_json}") return None def send_minecraft_command(command): """ 将 Minecraft 命令发送给服务器。 (需要使用 Minecraft 服务器插件或修改服务器代码来实现) """ # 这是一个占位符,你需要根据你的服务器设置来实现 # 例如,你可以使用 RCON 或 WebSocket 来发送命令 print(f"Sending command: {command}") if __name__ == "__main__": while True: chat_messages = get_chat_messages() for message in chat_messages: print(f"Received message: {message}") minecraft_command = generate_minecraft_command(message) if minecraft_command: print(f"Generated command: {minecraft_command}") send_minecraft_command(minecraft_command) # 暂停一段时间,避免过度请求 import time time.sleep(5) ``` **重要提示:** * **安全性:** 在生产环境中,务必注意安全性。不要将 API 密钥硬编码到代码中。使用环境变量或配置文件来存储敏感信息。 * **服务器插件/修改:** 你需要使用 Minecraft 服务器插件 (例如,Bukkit, Spigot, Paper) 或修改服务器代码,才能监听聊天消息和发送命令。 * **错误处理:** 添加完善的错误处理机制,以应对各种异常情况。 * **速率限制:** 注意 LLM API 的速率限制,避免过度请求。 **总结:** 将 MCP 服务器与 LLM 应用集成是一个复杂但有趣的项目。你需要理解 MCP 协议,掌握 LLM 的使用方法,并开发一个可靠的中间件。希望这些教程方向和资源能够帮助你入门。 祝你成功!
Automated-Webflow
将 MCP 服务器连接到 Webflow 项目
MCP Server com SSE e Autenticação Bearer
MCP 服务器,带有 SSE 和 Bearer 身份验证。 (MCP 服务器,带有服务器发送事件 (SSE) 和 Bearer 令牌身份验证。)
Blender
X API AI Agent – Personal Learning Project
Okay, here's a translation of "AI agent that can post on X(twitter) with the help of MCP(Model Text Protocol) Server" into Chinese, along with a few options depending on the nuance you want to convey: **Option 1 (Most Literal):** * **使用 MCP (模型文本协议) 服务器,可以在 X (Twitter) 上发帖的 AI 代理** * (Shǐyòng MCP (Móxíng Wénběn Xiéyì) fúwùqì, kěyǐ zài X (Twitter) shàng fā tiě de AI dàilǐ) * This is a direct translation, emphasizing the technical aspects. **Option 2 (Slightly More Natural):** * **一个可以借助 MCP (模型文本协议) 服务器在 X (Twitter) 上发布内容的 AI 代理** * (Yīgè kěyǐ jièzhù MCP (Móxíng Wénběn Xiéyì) fúwùqì zài X (Twitter) shàng fābù nèiróng de AI dàilǐ) * This emphasizes the AI agent's ability to *publish content* on X. **Option 3 (Focus on Functionality):** * **能够通过 MCP (模型文本协议) 服务器在 X (Twitter) 上发帖的 AI 代理** * (Nénggòu tōngguò MCP (Móxíng Wénběn Xiéyì) fúwùqì zài X (Twitter) shàng fā tiě de AI dàilǐ) * This highlights the *capability* of the AI agent to post. **Breakdown of the terms:** * **AI agent:** AI 代理 (AI dàilǐ) * **can post:** 可以发帖 (kěyǐ fā tiě) or 可以发布内容 (kěyǐ fābù nèiróng) * **on X (Twitter):** 在 X (Twitter) 上 (zài X (Twitter) shàng) * **with the help of:** 借助 (jièzhù) or 通过 (tōngguò) * **MCP (Model Text Protocol) Server:** MCP (模型文本协议) 服务器 (MCP (Móxíng Wénběn Xiéyì) fúwùqì) * 模型文本协议 (Móxíng Wénběn Xiéyì) = Model Text Protocol * 服务器 (fúwùqì) = Server **Which option is best?** It depends on the context. If you're writing technical documentation, Option 1 is fine. If you're describing the AI agent's functionality to a broader audience, Option 2 or 3 might be better.
MySQL MCP Server
NATS MCP Server
使用 NATS CLI 的 NATS 消息系统的 MCP 服务器 - 启用 AI 代理与 NATS 消息传递进行交互。
MCP Server Configuration
使用正确的依赖项修复了模型上下文协议服务器的固定配置。
Demo MCP server
n8n-server MCP Server
Solana Web3.js MCP Server
用于 Solana web3.js 开发和智能合约部署的 MCP 服务器
MCP Servers
MCP服务器配置和设置的仓库
Webscraper MCP
MCP 服务器,通过向 LLM 提供 URL 来转录网页,供 LLM 使用。 (MCP fúwùqì, tōngguò xiàng LLM tígōng URL lái zhuǎnlù wǎngyè, gōng LLM shǐyòng.)
echo-mcp-server
MCP SSE Sample
好的,这是 MCP 服务器的 SSE(Server-Sent Events)实现的示例,包含代码和解释: **概念解释** * **SSE (Server-Sent Events):** 一种服务器向客户端推送数据的单向通信协议。客户端通过 HTTP 连接到服务器,服务器可以随时向客户端发送更新,而无需客户端发起新的请求。这非常适合实时更新,例如股票行情、新闻提要、聊天应用等。 * **MCP Server:** 我假设你指的是一个基于 Minecraft 协议 (MCP) 的服务器。虽然 MCP 本身不直接涉及 SSE,但你可以将 SSE 集成到你的服务器中,以向连接的客户端发送游戏状态或其他信息。 **示例代码 (Python + Flask)** 这个例子使用 Python 和 Flask 框架来创建一个简单的 SSE 服务器。 ```python from flask import Flask, Response, render_template import time import random app = Flask(__name__) # 模拟游戏状态数据 game_state = { "player_count": 0, "server_load": 0.0, "latest_news": "Server is online!" } def update_game_state(): """模拟更新游戏状态""" global game_state game_state["player_count"] = random.randint(0, 100) game_state["server_load"] = round(random.uniform(0.0, 1.0), 2) game_state["latest_news"] = f"Player joined! (Current: {game_state['player_count']})" def event_stream(): """生成 SSE 事件流""" while True: update_game_state() yield f"data: {game_state}\n\n" # 构建 SSE 格式的数据 time.sleep(1) # 每秒更新一次 @app.route('/') def index(): return render_template('index.html') # 渲染一个简单的 HTML 页面 @app.route('/stream') def stream(): return Response(event_stream(), mimetype="text/event-stream") if __name__ == '__main__': app.run(debug=True) ``` **解释:** 1. **导入必要的库:** * `flask`: 用于创建 Web 应用。 * `Response`: 用于构建 SSE 响应。 * `time`: 用于控制更新频率。 * `random`: 用于模拟游戏状态变化。 2. **`game_state` 字典:** * 存储模拟的游戏状态数据。你可以根据你的 MCP 服务器的需求修改这些数据。 3. **`update_game_state()` 函数:** * 模拟更新游戏状态。 在实际应用中,你需要从你的 MCP 服务器获取真实的数据。 4. **`event_stream()` 函数:** * **关键部分:** 这是一个生成器函数,它无限循环并产生 SSE 事件。 * `yield f"data: {game_state}\n\n"`: 这行代码构建了 SSE 格式的数据。 * `data:` 是 SSE 协议要求的字段,表示要发送的数据。 * `{game_state}`: 将 `game_state` 字典转换为字符串。 **重要:** 你可能需要使用 `json.dumps(game_state)` 将字典转换为 JSON 字符串,以便客户端更容易解析。 * `\n\n`: 两个换行符表示一个 SSE 事件的结束。 * `time.sleep(1)`: 暂停 1 秒,控制更新频率。 5. **`@app.route('/stream')` 路由:** * 当客户端访问 `/stream` 路径时,这个路由会被调用。 * `Response(event_stream(), mimetype="text/event-stream")`: 创建一个 `Response` 对象,将 `event_stream()` 生成器作为数据源,并将 `mimetype` 设置为 `text/event-stream`。 **`text/event-stream` 是 SSE 协议要求的 MIME 类型。** 6. **`index()` 函数和 `index.html` (可选):** * 提供一个简单的 HTML 页面,用于测试 SSE 连接。 **客户端代码 (JavaScript)** ```html <!DOCTYPE html> <html> <head> <title>SSE Example</title> </head> <body> <h1>Game State</h1> <div id="game-state"></div> <script> var eventSource = new EventSource('/stream'); // 连接到 SSE 端点 eventSource.onmessage = function(event) { var gameState = JSON.parse(event.data); // 解析 JSON 数据 document.getElementById('game-state').innerText = JSON.stringify(gameState, null, 2); // 显示格式化的 JSON }; eventSource.onerror = function(error) { console.error("SSE error:", error); }; </script> </body> </html> ``` **解释:** 1. **`new EventSource('/stream')`:** 创建一个 `EventSource` 对象,连接到服务器的 `/stream` 端点。 2. **`eventSource.onmessage`:** 定义一个事件处理函数,当服务器发送新数据时,这个函数会被调用。 * `event.data`: 包含服务器发送的数据。 * `JSON.parse(event.data)`: 将 JSON 字符串解析为 JavaScript 对象。 * `document.getElementById('game-state').innerText = JSON.stringify(gameState, null, 2)`: 将游戏状态数据显示在页面上。 `JSON.stringify(gameState, null, 2)` 用于格式化 JSON 输出,使其更易于阅读。 3. **`eventSource.onerror`:** 定义一个错误处理函数,当发生错误时,这个函数会被调用。 **如何运行:** 1. **安装 Flask:** `pip install flask` 2. **保存代码:** 将 Python 代码保存为 `app.py`,将 HTML 代码保存为 `templates/index.html` (需要在 `app.py` 所在的目录下创建一个名为 `templates` 的文件夹)。 3. **运行服务器:** `python app.py` 4. **在浏览器中打开:** `http://127.0.0.1:5000/` **重要注意事项:** * **JSON 序列化:** 在实际应用中,强烈建议使用 `json.dumps()` 将 Python 字典转换为 JSON 字符串,以便客户端更容易解析。 修改 `event_stream()` 函数如下: ```python import json def event_stream(): while True: update_game_state() yield f"data: {json.dumps(game_state)}\n\n" time.sleep(1) ``` * **错误处理:** 在客户端和服务器端添加适当的错误处理代码。 * **数据格式:** 根据你的 MCP 服务器的需求,调整 `game_state` 字典中的数据。 * **身份验证:** 如果需要,可以添加身份验证机制来保护 SSE 端点。 * **性能:** 对于高并发的场景,可能需要考虑使用更高效的异步框架,例如 `asyncio` 和 `aiohttp`。 * **MCP 集成:** 将 `update_game_state()` 函数修改为从你的 MCP 服务器获取真实的游戏状态数据。 这可能需要你使用 MCP 协议库来与服务器通信。 **总结:** 这个例子提供了一个基本的 SSE 实现,你可以根据你的 MCP 服务器的需求进行修改和扩展。 记住要使用 JSON 序列化,添加错误处理,并根据你的数据格式进行调整。 希望这个例子能帮助你理解如何在 MCP 服务器中实现 SSE。 **中文总结:** 这个例子展示了如何使用 Python 和 Flask 创建一个简单的服务器推送事件 (SSE) 服务器。 服务器模拟游戏状态数据,并通过 `/stream` 端点以 SSE 格式发送给客户端。 客户端使用 JavaScript 的 `EventSource` API 连接到服务器,接收并显示游戏状态数据。 关键点包括:使用 `text/event-stream` 作为 MIME 类型,使用 `data:` 字段格式化 SSE 数据,以及使用 `json.dumps()` 将 Python 字典转换为 JSON 字符串。 你需要根据你的 MCP 服务器的实际情况修改代码,例如从 MCP 服务器获取真实数据,并添加错误处理和身份验证。
CSharpMCP
一个基于 Roslyn 的 mcp 服务器,用于动态执行 C# 代码片段。 Or, a slightly more formal translation: 一个基于 Roslyn 的 MCP 服务器,用于动态执行 C# 代码片段。
Browser-use MCP Client
浏览器使用的MCP客户端
MCPML Browser Recorder
浏览会话记录器 MCP 服务器 (由 MCPML 和 playwright 驱动)
Babashka MCP Server
镜子 (jìng zi)