MCP服务器

一个为EndstoneMC开发设计的模型上下文协议(MCP)服务器,提供模块信息查询、代码搜索、插件模板生成等功能。

  • by Mcayear
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Mcayear/mcp-server-endstone

使用说明

Endstone MCP服务器

为支持EndstoneMC开发而设计的模型上下文协议(MCP)服务器。

特性

  • 模块信息查询:检索Endstone模块的详细信息和导出。
  • 代码搜索:在所有Endstone模块中搜索类、函数和常量。
  • 插件模板生成:根据指定要求生成基本插件模板。
  • 事件处理指南:提供事件处理的详细信息和示例。
  • 开发教程:插件开发、事件处理和命令创建的内置指南。

安装或启动

使用uvx

uvx mcp-server-endstone

来源

git clone https://github.com/Mcayear/mcp-server-endstone
cd mcp-server-endstone
pip install -e .

# Start after installation
mcp-server-endstone

单元测试

python -m tests.test_server

用法

直接启动服务器

mcp-server-endstone [--reference <path_to_reference_files>]

与MCP客户端集成

将以下内容添加到MCP客户端配置中:

示例(与游标、trae等客户端兼容):

{
  "mcpServers": {
    "endstone": {
      "command": "uvx",
      "args": [
        "mcp-server-endstone"
      ]
    }
  }
}

可用工具

1.get_module_info

获取特定Endstone模块的信息。

参数:

  • module_name:模块的名称(例如,“endstone.event”、“endstone-plugin”)。

例子:

Tool: get_module_info
Parameters: {"module_name": "endstone.event"}

2.搜索导出

搜索所有模块中的特定导出。

参数:

  • query:搜索词(类名、函数名等)。

例子:

Tool: search_exports
Parameters: {"query": "Player"}

3.获取符号信息

获取Endstone中特定符号(如类或事件)的详细定义,包括其文档、属性和方法。

参数:

  • symbol_name:符号的名称(例如,“PlayerInteractEvent”、“Plugin”)。

例子:

Tool: get_symbol_info
Parameters: {"symbol_name": "PlayerInteractEvent"}

4.generate_plugin_template

生成具有指定功能的基本插件模板。

参数:

  • plugin_name:插件的名称(必须以“_plugin”结尾)。
  • features:要包含的功能列表(可选:“命令”、“事件”、“权限”)。

例子:

Tool: generate_plugin_template
Parameters: {
  "plugin_name": "example_plugin",
  "features": ["events", "commands"]
}

5.获取事件信息

获取有关事件的信息。如果 event_type 如果提供了,它将返回该事件的详细定义(属性、文档)和使用示例。否则,它将列出所有可用的事件。

参数:

  • event_type:特定事件类型(可选)。

例子:

Tool: get_event_info
Parameters: {"event_type": "PlayerJoinEvent"}

6.阅读教程

获取教程内容。如果没有指定教程名称,它将列出所有可用的教程。

参数:

  • query:教程的名称(可选)。

例子:

Tool: read_tutorials
Parameters: {"query": "register-commands"}

支持的Endstone模块

  • endstone -核心模块
  • endstone.actor -演员相关
  • endstone.ban -禁令制度
  • endstone.block -区块操作
  • endstone.boss -老板酒吧
  • endstone.command -指挥系统
  • endstone.damage -损伤系统
  • endstone.enchantments -魔法
  • endstone.event -事件系统
  • endstone.form -表单用户界面
  • endstone.inventory -库存
  • endstone.lang -语言本地化
  • endstone.level -世界/维度
  • endstone.map -地图
  • endstone.permissions -许可制度
  • endstone.plugin -插件基础知识
  • endstone.scheduler -任务调度器
  • endstone.scoreboard -记分牌
  • endstone.util -公用事业

开发示例

基本插件结构

from endstone.plugin import Plugin
from endstone import Logger

class MyPlugin(Plugin):
    name = "MyPlugin"
    version = "1.0.0"
    api_version = "0.5"
    
    def on_enable(self) -> None:
        self.logger.info(f"{self.name} v{self.version} enabled!")
    
    def on_disable(self) -> None:
        self.logger.info(f"{self.name} disabled!")

事件处理

from endstone.event import event_handler, PlayerJoinEvent

@event_handler
def on_player_join(self, event: PlayerJoinEvent):
    player = event.player
    self.logger.info(f"Welcome {player.name}!")
    player.send_message("Welcome to the server!")

项目结构

mcp-server-endstone/
├── reference/         # Required reference resources
│   ├── endstone/
│   └── tutorials/
├── src/
│   └── mcp_server_endstone/
│       ├── __init__.py
│       ├── server.py  # Core server logic
│       ├── cli.py     # Command-line entry point
│       └── reference/ # Reference files
├── tests/
│   ├── __init__.py
│   └── test_server.py
├── pyproject.toml
└── README.md

故障排除

  1. 参考文件路径问题:服务器首先尝试从 reference 然后从包中的当前工作目录。如果两者都不存在,则某些功能可能不可用。使用 --reference 参数指定路径。

  2. 调试错误:服务器的日志级别设置为INFO。检查日志以诊断问题。

  3. 依赖性问题:确保所有依赖项都已正确安装: mcp>=0.1.0

贡献

欢迎投稿!请随时提交问题和拉取请求以改进此MCP服务器。

鸣谢

EndstoneMC -The reference 内容基于 endstone/docs/reference 和 endstone/docs/tutorials.

许可证

MIT许可证