Name | coreshub-mcp-server JSON |
Version |
0.2.0
JSON |
| download |
home_page | None |
Summary | A lightweight mcp server for coreshub. |
upload_time | 2025-07-28 07:45:38 |
maintainer | eddic |
docs_url | None |
author | eddic |
requires_python | >=3.10 |
license | MIT |
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"
}