coreshub-mcp-server


Namecoreshub-mcp-server JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryA lightweight mcp server for coreshub.
upload_time2025-07-28 07:45:38
maintainereddic
docs_urlNone
authoreddic
requires_python>=3.10
licenseMIT
keywords extensible llm mcp plugin
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Coreshub MCP Server

## 1、项目结构

```
src/coreshub_mcp_server/
├── plugins/           # 插件目录,所有工具和提示插件
├── utils/             # 工具函数
│   └── signature.py   # 签名工具函数
├── base_plugin.py     # 工具和提示基类
├── settings.py        # 配置管理
└── server.py          # MCP服务器实现
```

> ##### 开始之前请确保安装好 python 和 uv

## 2、运行

### 场景一:在Cherry Studio中运行

> 注⚠️:为保证工具的正确调用,建议使用32B参数以上的模型服务

#### (1)一键拉取使用

> 在Cherry Studio的设置——MCP服务器——编辑MCP配置

推荐从pypi拉取

```json
{
    "mcpServers": {
        "coreshub-mcp-server-来自pypi包": {
            "type": "stdio",
            "registryUrl": "http://mirrors.aliyun.com/pypi/simple/",
            "command": "uvx",
            "args": [
                "coreshub-mcp-server"
            ],
            "env": {
                "QY_ACCESS_KEY_ID": "基石智算的AK",
                "QY_SECRET_ACCESS_KEY": "基石智算的SK",
                "CORESHUB_USER_ID": "基石智算的账户ID"
            }
        }
    }
}
```

或者从github拉取

```json
{
  "mcpServers": {
    "coreshub-mcp-server": {
      "type": "stdio",
      "registryUrl": "http://mirrors.aliyun.com/pypi/simple/",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/coreshub/mcp-server-coreshub",
        "coreshub-mcp-server"
      ],
      "env": {
        "QY_ACCESS_KEY_ID": "基石智算的AK",
        "QY_SECRET_ACCESS_KEY": "基石智算的SK",
        "CORESHUB_USER_ID": "基石智算的账户ID"
      }
    }
  }
}
```

#### (2)从github下载到本地后使用

> 在Cherry Studio的设置——MCP服务器——添加服务器,进入编辑模式

##### 对于macOS系统:

类型选择:

```
stdio
```

命令填写:

```bash
sh
```

参数填写:

```bash
-c
cd 项目根目录路径 && uv run coreshub-mcp-server
```

环境变量填写:

```bash
QY_ACCESS_KEY_ID=基石智算的AK
QY_SECRET_ACCESS_KEY=基石智算的SK
CORESHUB_USER_ID=基石智算的账户ID
```

##### 对于windows系统:

类型选择:

```
stdio
```

命令填写:

```bash
cmd
```

参数填写:

```bash
/c
cd 项目根目录路径 && uv run coreshub-mcp-server
```

环境变量填写:

```bash
QY_ACCESS_KEY_ID=基石智算的AK
QY_SECRET_ACCESS_KEY=基石智算的SK
CORESHUB_USER_ID=基石智算的账户ID
```

### 场景二:命令行操作(需实现client)

#### (1)首先配置环境变量

可以在代码中配置,在settings.py中配置

```python
class Settings:
    access_key = os.getenv("QY_ACCESS_KEY_ID", "基石智算的AK")
    secret_key = os.getenv("QY_SECRET_ACCESS_KEY", "基石智算的SK")
    user_id = os.getenv("CORESHUB_USER_ID", "基石智算的账户ID")
```

或者在本机系统环境变量配置

```bash
export QY_ACCESS_KEY_ID="基石智算的AK"
export QY_SECRET_ACCESS_KEY="基石智算的SK"
export CORESHUB_USER_ID="基石智算的账户ID"
```

#### (2)在项目根目录使用 [`uv`](https://docs.astral.sh/uv/)检查服务状态

```bash
uv run src/coreshub_mcp_server
```

##### 	命令行参数

- `--debug`: 启用调试模式,输出详细日志
- `--list-plugins`: 列出所有已加载的插件
- `--log-file`: 指定日志文件路径

## 3、开发

### 1、添加新工具

在 `src/coreshub_mcp_server/plugins` 目录下创建新的Python文件,然后实现 `BaseTool` 和/或 `BasePrompt`
的子类。工具和提示现在是分离的概念,可以根据需要只实现其中一种或两种。

#### (1)工具实现示例:

```python
from coreshub_mcp_server.base_plugin import BaseTool


class MyTool(BaseTool):
    tool_name = "my_tool"
    tool_description = "我的自定义工具"

    @staticmethod
    def model_json_schema():
        return {
            "type": "object",
            "properties": {
                "param": {
                    "type": "string",
                    "description": "参数描述"
                }
            }
        }

    async def execute_tool(self, arguments):
        # 实现工具逻辑
        pass


# 注册工具
MyTool.register()
```

#### (2)提示实现示例:

```python
from coreshub_mcp_server.base_plugin import BasePrompt
from mcp.types import PromptArgument


class MyPrompt(BasePrompt):
    prompt_name = "my_prompt"
    prompt_description = "我的自定义提示"
    prompt_arguments = [
        PromptArgument(
            name="param",
            description="参数描述",
            required=False
        )
    ]

    async def execute_prompt(self, arguments=None):
        # 实现提示逻辑
        pass


# 注册提示
MyPrompt.register()
```

## 4、可用工具

### 1、get_epfs_filesystem   返回已经创建的epfs文件系统

- zone
    - type: string
    - description: 区域标识,从上下文获取,选项:xb3,xb2,hb2
    - default: xb3
    - required: True
- owner
    - type: string
    - description: 用户名
    - default: 基石智算的账户ID
    - required: True
- user_id
    - type: string
    - description: 容器实例的拥有者ID,可以从上下文字段user_id获取
    - default: 基石智算的账户ID
    - required: True

### 2、get_epfs_bill_info   返回epfs文件系统的账单信息

- resource_id
    - type: string
    - description: 资源ID,从上下文resource_id字段获取
    - required: True
- zone
    - type: string
    - description: 区域标识,从上下文获取,选项:xb3,xb2,hb2
    - default: xb3
    - required: True
- owner
    - type: string
    - description: 用户名
    - default: 基石智算的账户ID
    - required: True
- user_id
    - type: string
    - description: 容器实例的拥有者ID,从上下文字段user_id获取
    - default: 基石智算的账户ID
    - required: True

### 3、get_container_info   返回已经创建的容器实例,也可根据参数进行查询

- limit
    - type: integer
    - description: 返回结果的最大数量
    - default: 10
    - required: False
- offset
    - type: integer
    - description: 分页偏移量
    - default: 0
    - required: False
- zone
    - type: string
    - description: 区域标识,从上下文获取,选项:xb3,xb2,hb2
    - default: xb3
    - required: True
- name
    - type: string
    - description: 按照实例名字进行模糊搜索
    - default: ""
    - required: False

### 4、get_ssh_info   返回特定实例的SSH信息

- namespace
    - type: string
    - description: 容器实例的命名空间,从上下文字段namespace获取
    - default: 小写的基石智算账户ID
    - required: True
- uuid
    - type: string
    - description: 容器实例的uuid,可以从上下文uuid中获取
    - required: True
- zone
    - type: string
    - description: 区域标识,从上下文获取
    - default: xb3
    - required: True
- owner
    - type: string
    - description: 容器实例的拥有者,可以从上下文字段user_id获取
    - default: 基石智算的账户ID
    - required: True
- user_id
    - type: string
    - description: 容器实例的拥有者ID,可以从上下文字段user_id获取
    - required: True
- services
    - type: array
    - description: 要开启的服务列表
    - default: ["ssh", "custom", "node_port"]
    - required: True

### 5、get_distributed_training   返回已经创建的分布式训练任务

- end_at
    - type: string
    - description: 结束时间,格式为%Y-%m-%d %H:%M:%S
    - default: 当前时间
    - required: True
- start_at
    - type: string
    - description: 开始时间,格式为%Y-%m-%d %H:%M:%S
    - default: 默认为一周前时间
    - required: True
- limit
    - type: integer
    - description: 每页显示的条数
    - default: 10
    - required: True
- offset
    - type: integer
    - description: 偏移量
    - default: 0
    - required: True
- zone
    - type: string
    - description: 区域
    - default: 默认为xb3,可选xb2,hb2
    - required: True
- owner
    - type: string
    - description: 所有者
    - default: 基石智算的账户ID
    - required: True
- user_id
    - type: string
    - description: 用户ID
    - default: 基石智算的账户ID
    - required: True

### 6、get_distributed_training_detail_log   返回分布式训练任务的详细日志

- end_time
    - type: string
    - description: 结束时间,格式为纳秒时间戳1745304819402256896
    - default: 当前时间
    - required: True
- start_time
    - type: string
    - description: 开始时间,格式为纳秒时间戳1745283219402259200
    - default: 默认为12小时前
    - required: True
- fuzzy
    - type: boolean
    - description: 是否模糊
    - default: True
    - required: False
- reverse
    - type: boolean
    - description: 是否反转
    - default: True
    - required: True
- size
    - type: integer
    - description: 每页显示的条数
    - default: 100
    - required: True
- train_uuid
    - type: string
    - description: 训练ID
    - default: 来自上下文train_uuid,如果上下文没有,则需要询问,从get_distributed_training获取
    - required: True
- zone
    - type: string
    - description: 区域
    - default: 默认为xb3,可选xb2、hb2
    - required: True
- owner
    - type: string
    - description: 所有者
    - default: 基石智算的账户ID
    - required: True
- user_id
    - type: string
    - description: 用户ID
    - default: 基石智算的账户ID
    - required: True

### 7、get_inference_service   返回已经创建的推理服务

- zone
    - type: string
    - description: 区域标识,从上下文获取,选项:xb3,xb2,hb2
    - default: xb3
    - required: True
- owner
    - type: string
    - description: 用户名
    - default: 基石智算的账户ID
    - required: True
- key_words
    - type: string
    - description: 关键字
    - default: ""
    - required: False
- page
    - type: integer
    - description: 页码
    - default: 1
    - required: False
- size
    - type: integer
    - description: 每页数量
    - default: 10
    - required: False

### 8、get_inference_service_log   返回推理服务日志

- zone
    - type: string
    - description: 区域标识,从上下文获取,选项:xb3,xb2,hb2
    - default: xb3
    - required: True
- owner
    - type: string
    - description: 用户名
    - default: 基石智算的账户ID
    - required: True
- service_id
    - type: string
    - description: 服务ID
    - default: 来自上下文service_id,如果上下文没有,则需要询问,从get_inference_service获取
    - required: True
- size
    - type: integer
    - description: 每页数量
    - default: 100
    - required: True
- reverse
    - type: boolean
    - description: 是否反转
    - default: True
    - required: True
- start_time
    - type: string
    - description: 开始UTC时间
    - default: 默认为24小时前时间,格式为%Y-%m-%dT%H:%M:%S.000Z
    - required: False
- end_time
    - type: string
    - description: 结束UTC时间
    - default: 默认为当前时间,格式为%Y-%m-%dT%H:%M:%S.000Z
    - required: False

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "coreshub-mcp-server",
    "maintainer": "eddic",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "extensible, llm, mcp, plugin",
    "author": "eddic",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/fa/cf/d3ce0bcfb2d720d9af21ca10526220fdba96fe55d06e8683dbc9eb0a8a76/coreshub_mcp_server-0.2.0.tar.gz",
    "platform": null,
    "description": "# Coreshub MCP Server\n\n## 1\u3001\u9879\u76ee\u7ed3\u6784\n\n```\nsrc/coreshub_mcp_server/\n\u251c\u2500\u2500 plugins/           # \u63d2\u4ef6\u76ee\u5f55\uff0c\u6240\u6709\u5de5\u5177\u548c\u63d0\u793a\u63d2\u4ef6\n\u251c\u2500\u2500 utils/             # \u5de5\u5177\u51fd\u6570\n\u2502   \u2514\u2500\u2500 signature.py   # \u7b7e\u540d\u5de5\u5177\u51fd\u6570\n\u251c\u2500\u2500 base_plugin.py     # \u5de5\u5177\u548c\u63d0\u793a\u57fa\u7c7b\n\u251c\u2500\u2500 settings.py        # \u914d\u7f6e\u7ba1\u7406\n\u2514\u2500\u2500 server.py          # MCP\u670d\u52a1\u5668\u5b9e\u73b0\n```\n\n> ##### \u5f00\u59cb\u4e4b\u524d\u8bf7\u786e\u4fdd\u5b89\u88c5\u597d python \u548c uv\n\n## 2\u3001\u8fd0\u884c\n\n### \u573a\u666f\u4e00\uff1a\u5728Cherry Studio\u4e2d\u8fd0\u884c\n\n> \u6ce8\u26a0\ufe0f\uff1a\u4e3a\u4fdd\u8bc1\u5de5\u5177\u7684\u6b63\u786e\u8c03\u7528\uff0c\u5efa\u8bae\u4f7f\u752832B\u53c2\u6570\u4ee5\u4e0a\u7684\u6a21\u578b\u670d\u52a1\n\n#### \uff081\uff09\u4e00\u952e\u62c9\u53d6\u4f7f\u7528\n\n> \u5728Cherry Studio\u7684\u8bbe\u7f6e\u2014\u2014MCP\u670d\u52a1\u5668\u2014\u2014\u7f16\u8f91MCP\u914d\u7f6e\n\n\u63a8\u8350\u4ecepypi\u62c9\u53d6\n\n```json\n{\n    \"mcpServers\": {\n        \"coreshub-mcp-server-\u6765\u81eapypi\u5305\": {\n            \"type\": \"stdio\",\n            \"registryUrl\": \"http://mirrors.aliyun.com/pypi/simple/\",\n            \"command\": \"uvx\",\n            \"args\": [\n                \"coreshub-mcp-server\"\n            ],\n            \"env\": {\n                \"QY_ACCESS_KEY_ID\": \"\u57fa\u77f3\u667a\u7b97\u7684AK\",\n                \"QY_SECRET_ACCESS_KEY\": \"\u57fa\u77f3\u667a\u7b97\u7684SK\",\n                \"CORESHUB_USER_ID\": \"\u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\"\n            }\n        }\n    }\n}\n```\n\n\u6216\u8005\u4ecegithub\u62c9\u53d6\n\n```json\n{\n  \"mcpServers\": {\n    \"coreshub-mcp-server\": {\n      \"type\": \"stdio\",\n      \"registryUrl\": \"http://mirrors.aliyun.com/pypi/simple/\",\n      \"command\": \"uvx\",\n      \"args\": [\n        \"--from\",\n        \"git+https://github.com/coreshub/mcp-server-coreshub\",\n        \"coreshub-mcp-server\"\n      ],\n      \"env\": {\n        \"QY_ACCESS_KEY_ID\": \"\u57fa\u77f3\u667a\u7b97\u7684AK\",\n        \"QY_SECRET_ACCESS_KEY\": \"\u57fa\u77f3\u667a\u7b97\u7684SK\",\n        \"CORESHUB_USER_ID\": \"\u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\"\n      }\n    }\n  }\n}\n```\n\n#### \uff082\uff09\u4ecegithub\u4e0b\u8f7d\u5230\u672c\u5730\u540e\u4f7f\u7528\n\n> \u5728Cherry Studio\u7684\u8bbe\u7f6e\u2014\u2014MCP\u670d\u52a1\u5668\u2014\u2014\u6dfb\u52a0\u670d\u52a1\u5668\uff0c\u8fdb\u5165\u7f16\u8f91\u6a21\u5f0f\n\n##### \u5bf9\u4e8emacOS\u7cfb\u7edf:\n\n\u7c7b\u578b\u9009\u62e9\uff1a\n\n```\nstdio\n```\n\n\u547d\u4ee4\u586b\u5199:\n\n```bash\nsh\n```\n\n\u53c2\u6570\u586b\u5199:\n\n```bash\n-c\ncd \u9879\u76ee\u6839\u76ee\u5f55\u8def\u5f84 && uv run coreshub-mcp-server\n```\n\n\u73af\u5883\u53d8\u91cf\u586b\u5199:\n\n```bash\nQY_ACCESS_KEY_ID=\u57fa\u77f3\u667a\u7b97\u7684AK\nQY_SECRET_ACCESS_KEY=\u57fa\u77f3\u667a\u7b97\u7684SK\nCORESHUB_USER_ID=\u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n```\n\n##### \u5bf9\u4e8ewindows\u7cfb\u7edf:\n\n\u7c7b\u578b\u9009\u62e9\uff1a\n\n```\nstdio\n```\n\n\u547d\u4ee4\u586b\u5199:\n\n```bash\ncmd\n```\n\n\u53c2\u6570\u586b\u5199:\n\n```bash\n/c\ncd \u9879\u76ee\u6839\u76ee\u5f55\u8def\u5f84 && uv run coreshub-mcp-server\n```\n\n\u73af\u5883\u53d8\u91cf\u586b\u5199:\n\n```bash\nQY_ACCESS_KEY_ID=\u57fa\u77f3\u667a\u7b97\u7684AK\nQY_SECRET_ACCESS_KEY=\u57fa\u77f3\u667a\u7b97\u7684SK\nCORESHUB_USER_ID=\u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n```\n\n### \u573a\u666f\u4e8c\uff1a\u547d\u4ee4\u884c\u64cd\u4f5c\uff08\u9700\u5b9e\u73b0client\uff09\n\n#### \uff081\uff09\u9996\u5148\u914d\u7f6e\u73af\u5883\u53d8\u91cf\n\n\u53ef\u4ee5\u5728\u4ee3\u7801\u4e2d\u914d\u7f6e\uff0c\u5728settings.py\u4e2d\u914d\u7f6e\n\n```python\nclass Settings:\n    access_key = os.getenv(\"QY_ACCESS_KEY_ID\", \"\u57fa\u77f3\u667a\u7b97\u7684AK\")\n    secret_key = os.getenv(\"QY_SECRET_ACCESS_KEY\", \"\u57fa\u77f3\u667a\u7b97\u7684SK\")\n    user_id = os.getenv(\"CORESHUB_USER_ID\", \"\u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\")\n```\n\n\u6216\u8005\u5728\u672c\u673a\u7cfb\u7edf\u73af\u5883\u53d8\u91cf\u914d\u7f6e\n\n```bash\nexport QY_ACCESS_KEY_ID=\"\u57fa\u77f3\u667a\u7b97\u7684AK\"\nexport QY_SECRET_ACCESS_KEY=\"\u57fa\u77f3\u667a\u7b97\u7684SK\"\nexport CORESHUB_USER_ID=\"\u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\"\n```\n\n#### \uff082\uff09\u5728\u9879\u76ee\u6839\u76ee\u5f55\u4f7f\u7528 [`uv`](https://docs.astral.sh/uv/)\u68c0\u67e5\u670d\u52a1\u72b6\u6001\n\n```bash\nuv run src/coreshub_mcp_server\n```\n\n##### \t\u547d\u4ee4\u884c\u53c2\u6570\n\n- `--debug`: \u542f\u7528\u8c03\u8bd5\u6a21\u5f0f\uff0c\u8f93\u51fa\u8be6\u7ec6\u65e5\u5fd7\n- `--list-plugins`: \u5217\u51fa\u6240\u6709\u5df2\u52a0\u8f7d\u7684\u63d2\u4ef6\n- `--log-file`: \u6307\u5b9a\u65e5\u5fd7\u6587\u4ef6\u8def\u5f84\n\n## 3\u3001\u5f00\u53d1\n\n### 1\u3001\u6dfb\u52a0\u65b0\u5de5\u5177\n\n\u5728 `src/coreshub_mcp_server/plugins` \u76ee\u5f55\u4e0b\u521b\u5efa\u65b0\u7684Python\u6587\u4ef6\uff0c\u7136\u540e\u5b9e\u73b0 `BaseTool` \u548c/\u6216 `BasePrompt`\n\u7684\u5b50\u7c7b\u3002\u5de5\u5177\u548c\u63d0\u793a\u73b0\u5728\u662f\u5206\u79bb\u7684\u6982\u5ff5\uff0c\u53ef\u4ee5\u6839\u636e\u9700\u8981\u53ea\u5b9e\u73b0\u5176\u4e2d\u4e00\u79cd\u6216\u4e24\u79cd\u3002\n\n#### \uff081\uff09\u5de5\u5177\u5b9e\u73b0\u793a\u4f8b:\n\n```python\nfrom coreshub_mcp_server.base_plugin import BaseTool\n\n\nclass MyTool(BaseTool):\n    tool_name = \"my_tool\"\n    tool_description = \"\u6211\u7684\u81ea\u5b9a\u4e49\u5de5\u5177\"\n\n    @staticmethod\n    def model_json_schema():\n        return {\n            \"type\": \"object\",\n            \"properties\": {\n                \"param\": {\n                    \"type\": \"string\",\n                    \"description\": \"\u53c2\u6570\u63cf\u8ff0\"\n                }\n            }\n        }\n\n    async def execute_tool(self, arguments):\n        # \u5b9e\u73b0\u5de5\u5177\u903b\u8f91\n        pass\n\n\n# \u6ce8\u518c\u5de5\u5177\nMyTool.register()\n```\n\n#### \uff082\uff09\u63d0\u793a\u5b9e\u73b0\u793a\u4f8b:\n\n```python\nfrom coreshub_mcp_server.base_plugin import BasePrompt\nfrom mcp.types import PromptArgument\n\n\nclass MyPrompt(BasePrompt):\n    prompt_name = \"my_prompt\"\n    prompt_description = \"\u6211\u7684\u81ea\u5b9a\u4e49\u63d0\u793a\"\n    prompt_arguments = [\n        PromptArgument(\n            name=\"param\",\n            description=\"\u53c2\u6570\u63cf\u8ff0\",\n            required=False\n        )\n    ]\n\n    async def execute_prompt(self, arguments=None):\n        # \u5b9e\u73b0\u63d0\u793a\u903b\u8f91\n        pass\n\n\n# \u6ce8\u518c\u63d0\u793a\nMyPrompt.register()\n```\n\n## 4\u3001\u53ef\u7528\u5de5\u5177\n\n### 1\u3001get_epfs_filesystem   \u8fd4\u56de\u5df2\u7ecf\u521b\u5efa\u7684epfs\u6587\u4ef6\u7cfb\u7edf\n\n- zone\n    - type: string\n    - description: \u533a\u57df\u6807\u8bc6\uff0c\u4ece\u4e0a\u4e0b\u6587\u83b7\u53d6\uff0c\u9009\u9879\uff1axb3,xb2,hb2\n    - default: xb3\n    - required: True\n- owner\n    - type: string\n    - description: \u7528\u6237\u540d\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n- user_id\n    - type: string\n    - description: \u5bb9\u5668\u5b9e\u4f8b\u7684\u62e5\u6709\u8005ID\uff0c\u53ef\u4ee5\u4ece\u4e0a\u4e0b\u6587\u5b57\u6bb5user_id\u83b7\u53d6\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n\n### 2\u3001get_epfs_bill_info   \u8fd4\u56deepfs\u6587\u4ef6\u7cfb\u7edf\u7684\u8d26\u5355\u4fe1\u606f\n\n- resource_id\n    - type: string\n    - description: \u8d44\u6e90ID,\u4ece\u4e0a\u4e0b\u6587resource_id\u5b57\u6bb5\u83b7\u53d6\n    - required: True\n- zone\n    - type: string\n    - description: \u533a\u57df\u6807\u8bc6\uff0c\u4ece\u4e0a\u4e0b\u6587\u83b7\u53d6\uff0c\u9009\u9879\uff1axb3,xb2,hb2\n    - default: xb3\n    - required: True\n- owner\n    - type: string\n    - description: \u7528\u6237\u540d\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n- user_id\n    - type: string\n    - description: \u5bb9\u5668\u5b9e\u4f8b\u7684\u62e5\u6709\u8005ID\uff0c\u4ece\u4e0a\u4e0b\u6587\u5b57\u6bb5user_id\u83b7\u53d6\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n\n### 3\u3001get_container_info   \u8fd4\u56de\u5df2\u7ecf\u521b\u5efa\u7684\u5bb9\u5668\u5b9e\u4f8b\uff0c\u4e5f\u53ef\u6839\u636e\u53c2\u6570\u8fdb\u884c\u67e5\u8be2\n\n- limit\n    - type: integer\n    - description: \u8fd4\u56de\u7ed3\u679c\u7684\u6700\u5927\u6570\u91cf\n    - default: 10\n    - required: False\n- offset\n    - type: integer\n    - description: \u5206\u9875\u504f\u79fb\u91cf\n    - default: 0\n    - required: False\n- zone\n    - type: string\n    - description: \u533a\u57df\u6807\u8bc6\uff0c\u4ece\u4e0a\u4e0b\u6587\u83b7\u53d6\uff0c\u9009\u9879\uff1axb3,xb2,hb2\n    - default: xb3\n    - required: True\n- name\n    - type: string\n    - description: \u6309\u7167\u5b9e\u4f8b\u540d\u5b57\u8fdb\u884c\u6a21\u7cca\u641c\u7d22\n    - default: \"\"\n    - required: False\n\n### 4\u3001get_ssh_info   \u8fd4\u56de\u7279\u5b9a\u5b9e\u4f8b\u7684SSH\u4fe1\u606f\n\n- namespace\n    - type: string\n    - description: \u5bb9\u5668\u5b9e\u4f8b\u7684\u547d\u540d\u7a7a\u95f4,\u4ece\u4e0a\u4e0b\u6587\u5b57\u6bb5namespace\u83b7\u53d6\n    - default: \u5c0f\u5199\u7684\u57fa\u77f3\u667a\u7b97\u8d26\u6237ID\n    - required: True\n- uuid\n    - type: string\n    - description: \u5bb9\u5668\u5b9e\u4f8b\u7684uuid\uff0c\u53ef\u4ee5\u4ece\u4e0a\u4e0b\u6587uuid\u4e2d\u83b7\u53d6\n    - required: True\n- zone\n    - type: string\n    - description: \u533a\u57df\u6807\u8bc6,\u4ece\u4e0a\u4e0b\u6587\u83b7\u53d6\n    - default: xb3\n    - required: True\n- owner\n    - type: string\n    - description: \u5bb9\u5668\u5b9e\u4f8b\u7684\u62e5\u6709\u8005\uff0c\u53ef\u4ee5\u4ece\u4e0a\u4e0b\u6587\u5b57\u6bb5user_id\u83b7\u53d6\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n- user_id\n    - type: string\n    - description: \u5bb9\u5668\u5b9e\u4f8b\u7684\u62e5\u6709\u8005ID\uff0c\u53ef\u4ee5\u4ece\u4e0a\u4e0b\u6587\u5b57\u6bb5user_id\u83b7\u53d6\n    - required: True\n- services\n    - type: array\n    - description: \u8981\u5f00\u542f\u7684\u670d\u52a1\u5217\u8868\n    - default: [\"ssh\", \"custom\", \"node_port\"]\n    - required: True\n\n### 5\u3001get_distributed_training   \u8fd4\u56de\u5df2\u7ecf\u521b\u5efa\u7684\u5206\u5e03\u5f0f\u8bad\u7ec3\u4efb\u52a1\n\n- end_at\n    - type: string\n    - description: \u7ed3\u675f\u65f6\u95f4\uff0c\u683c\u5f0f\u4e3a%Y-%m-%d %H:%M:%S\n    - default: \u5f53\u524d\u65f6\u95f4\n    - required: True\n- start_at\n    - type: string\n    - description: \u5f00\u59cb\u65f6\u95f4\uff0c\u683c\u5f0f\u4e3a%Y-%m-%d %H:%M:%S\n    - default: \u9ed8\u8ba4\u4e3a\u4e00\u5468\u524d\u65f6\u95f4\n    - required: True\n- limit\n    - type: integer\n    - description: \u6bcf\u9875\u663e\u793a\u7684\u6761\u6570\n    - default: 10\n    - required: True\n- offset\n    - type: integer\n    - description: \u504f\u79fb\u91cf\n    - default: 0\n    - required: True\n- zone\n    - type: string\n    - description: \u533a\u57df\n    - default: \u9ed8\u8ba4\u4e3axb3\uff0c\u53ef\u9009xb2,hb2\n    - required: True\n- owner\n    - type: string\n    - description: \u6240\u6709\u8005\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n- user_id\n    - type: string\n    - description: \u7528\u6237ID\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n\n### 6\u3001get_distributed_training_detail_log   \u8fd4\u56de\u5206\u5e03\u5f0f\u8bad\u7ec3\u4efb\u52a1\u7684\u8be6\u7ec6\u65e5\u5fd7\n\n- end_time\n    - type: string\n    - description: \u7ed3\u675f\u65f6\u95f4\uff0c\u683c\u5f0f\u4e3a\u7eb3\u79d2\u65f6\u95f4\u62331745304819402256896\n    - default: \u5f53\u524d\u65f6\u95f4\n    - required: True\n- start_time\n    - type: string\n    - description: \u5f00\u59cb\u65f6\u95f4\uff0c\u683c\u5f0f\u4e3a\u7eb3\u79d2\u65f6\u95f4\u62331745283219402259200\n    - default: \u9ed8\u8ba4\u4e3a12\u5c0f\u65f6\u524d\n    - required: True\n- fuzzy\n    - type: boolean\n    - description: \u662f\u5426\u6a21\u7cca\n    - default: True\n    - required: False\n- reverse\n    - type: boolean\n    - description: \u662f\u5426\u53cd\u8f6c\n    - default: True\n    - required: True\n- size\n    - type: integer\n    - description: \u6bcf\u9875\u663e\u793a\u7684\u6761\u6570\n    - default: 100\n    - required: True\n- train_uuid\n    - type: string\n    - description: \u8bad\u7ec3ID\n    - default: \u6765\u81ea\u4e0a\u4e0b\u6587train_uuid\uff0c\u5982\u679c\u4e0a\u4e0b\u6587\u6ca1\u6709\uff0c\u5219\u9700\u8981\u8be2\u95ee\uff0c\u4eceget_distributed_training\u83b7\u53d6\n    - required: True\n- zone\n    - type: string\n    - description: \u533a\u57df\n    - default: \u9ed8\u8ba4\u4e3axb3\uff0c\u53ef\u9009xb2\u3001hb2\n    - required: True\n- owner\n    - type: string\n    - description: \u6240\u6709\u8005\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n- user_id\n    - type: string\n    - description: \u7528\u6237ID\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n\n### 7\u3001get_inference_service   \u8fd4\u56de\u5df2\u7ecf\u521b\u5efa\u7684\u63a8\u7406\u670d\u52a1\n\n- zone\n    - type: string\n    - description: \u533a\u57df\u6807\u8bc6\uff0c\u4ece\u4e0a\u4e0b\u6587\u83b7\u53d6\uff0c\u9009\u9879\uff1axb3,xb2,hb2\n    - default: xb3\n    - required: True\n- owner\n    - type: string\n    - description: \u7528\u6237\u540d\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n- key_words\n    - type: string\n    - description: \u5173\u952e\u5b57\n    - default: \"\"\n    - required: False\n- page\n    - type: integer\n    - description: \u9875\u7801\n    - default: 1\n    - required: False\n- size\n    - type: integer\n    - description: \u6bcf\u9875\u6570\u91cf\n    - default: 10\n    - required: False\n\n### 8\u3001get_inference_service_log   \u8fd4\u56de\u63a8\u7406\u670d\u52a1\u65e5\u5fd7\n\n- zone\n    - type: string\n    - description: \u533a\u57df\u6807\u8bc6\uff0c\u4ece\u4e0a\u4e0b\u6587\u83b7\u53d6\uff0c\u9009\u9879\uff1axb3,xb2,hb2\n    - default: xb3\n    - required: True\n- owner\n    - type: string\n    - description: \u7528\u6237\u540d\n    - default: \u57fa\u77f3\u667a\u7b97\u7684\u8d26\u6237ID\n    - required: True\n- service_id\n    - type: string\n    - description: \u670d\u52a1ID\n    - default: \u6765\u81ea\u4e0a\u4e0b\u6587service_id\uff0c\u5982\u679c\u4e0a\u4e0b\u6587\u6ca1\u6709\uff0c\u5219\u9700\u8981\u8be2\u95ee\uff0c\u4eceget_inference_service\u83b7\u53d6\n    - required: True\n- size\n    - type: integer\n    - description: \u6bcf\u9875\u6570\u91cf\n    - default: 100\n    - required: True\n- reverse\n    - type: boolean\n    - description: \u662f\u5426\u53cd\u8f6c\n    - default: True\n    - required: True\n- start_time\n    - type: string\n    - description: \u5f00\u59cbUTC\u65f6\u95f4\n    - default: \u9ed8\u8ba4\u4e3a24\u5c0f\u65f6\u524d\u65f6\u95f4\uff0c\u683c\u5f0f\u4e3a%Y-%m-%dT%H:%M:%S.000Z\n    - required: False\n- end_time\n    - type: string\n    - description: \u7ed3\u675fUTC\u65f6\u95f4\n    - default: \u9ed8\u8ba4\u4e3a\u5f53\u524d\u65f6\u95f4\uff0c\u683c\u5f0f\u4e3a%Y-%m-%dT%H:%M:%S.000Z\n    - required: False\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A lightweight mcp server for coreshub.",
    "version": "0.2.0",
    "project_urls": null,
    "split_keywords": [
        "extensible",
        " llm",
        " mcp",
        " plugin"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0fd64ac98401979cb1eaea1af9939bf29a15524ae96e2a4b0d03a1d79fd46783",
                "md5": "20c47b64d951128fd76093e310f83dec",
                "sha256": "2a94a570e823063500052fa21b259f10b8b0849cec2de2e47d507bf90ec6c176"
            },
            "downloads": -1,
            "filename": "coreshub_mcp_server-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "20c47b64d951128fd76093e310f83dec",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 19304,
            "upload_time": "2025-07-28T07:45:36",
            "upload_time_iso_8601": "2025-07-28T07:45:36.911804Z",
            "url": "https://files.pythonhosted.org/packages/0f/d6/4ac98401979cb1eaea1af9939bf29a15524ae96e2a4b0d03a1d79fd46783/coreshub_mcp_server-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "facfd3ce0bcfb2d720d9af21ca10526220fdba96fe55d06e8683dbc9eb0a8a76",
                "md5": "d65498402d4018ae3d849f90bfa15586",
                "sha256": "def8396731c2ccabcab85cfec8756d2db1fb87c1e5e542d40dd94439996dc459"
            },
            "downloads": -1,
            "filename": "coreshub_mcp_server-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "d65498402d4018ae3d849f90bfa15586",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 11776,
            "upload_time": "2025-07-28T07:45:38",
            "upload_time_iso_8601": "2025-07-28T07:45:38.454523Z",
            "url": "https://files.pythonhosted.org/packages/fa/cf/d3ce0bcfb2d720d9af21ca10526220fdba96fe55d06e8683dbc9eb0a8a76/coreshub_mcp_server-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-28 07:45:38",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "coreshub-mcp-server"
}
        
Elapsed time: 0.41334s