x-pages-mcp


Namex-pages-mcp JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryMCP server for X-Pages HTML deployment service
upload_time2025-08-10 09:16:24
maintainerNone
docs_urlNone
authorX-Pages Team
requires_python>=3.10
licenseMIT License Copyright (c) 2024 X-Pages Team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords ai claude deployment html mcp model-context-protocol
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # X-Pages MCP Server

基于Model Context Protocol (MCP) 的X-Pages HTML部署服务器,让大模型可以直接部署HTML内容并获取网站地址。

## 🚀 功能特性

- 🤖 **AI友好** - 通过MCP协议让大模型直接部署HTML内容
- 🔧 **简单易用** - 几个命令即可完成部署和管理
- 🛡️ **安全认证** - 支持x-token认证,保护API访问
- 🌐 **即时访问** - 部署后立即获得可访问的网站URL
- 📝 **模板生成** - 内置HTML模板生成工具
- 🔄 **完整管理** - 支持部署、删除、URL获取等完整操作

## 📦 安装

### 前置要求

- Python 3.9+
- uv (推荐) 或 pip
- 已部署的X-Pages服务

### 安装步骤

```bash
# 克隆项目
git clone <repository-url>
cd X-Pages/mcp

# 使用uv安装 (推荐)
uv sync

# 或使用pip安装
pip install -e .
```

## ⚙️ 配置

### 环境变量

创建 `.env` 文件或设置环境变量:

```bash
# 必需配置
export X_PAGES_BASE_URL=https://your-domain.com
export X_PAGES_API_TOKEN=your-secret-token

# 可选配置
export X_PAGES_TIMEOUT=30.0
```

### Claude Desktop 配置

在Claude Desktop的配置文件中添加MCP服务器:

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "x-pages-html-deployment": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/X-Pages/mcp",
        "run", "x-pages-mcp"
      ],
      "env": {
        "X_PAGES_BASE_URL": "https://your-domain.com",
        "X_PAGES_API_TOKEN": "your-secret-token"
      }
    }
  }
}
```

## 🚀 传输模式

X-Pages MCP服务器支持三种传输模式:

### STDIO 模式 (默认)
标准输入输出模式,适合Claude Desktop等本地客户端:
```bash
# 使用Python启动器
python3 start_server.py --transport stdio

# 使用脚本
./scripts/start_stdio.sh

# 直接使用uv
uv run x-pages-mcp --transport stdio
```

### SSE 模式 (Server-Sent Events)
基于HTTP的实时通信模式,适合Web应用:
```bash
# 使用Python启动器
python3 start_server.py --transport sse --port 3001

# 使用脚本
./scripts/start_sse.sh localhost 3001

# 直接使用uv
uv run x-pages-mcp --transport sse --port 3001
```

访问地址: `http://localhost:3001/sse`

### Streamable HTTP 模式
可流式HTTP模式,支持长连接和流式响应:
```bash
# 使用Python启动器
python3 start_server.py --transport streamable-http --port 3002

# 使用脚本
./scripts/start_streamable.sh localhost 3002

# 直接使用uv
uv run x-pages-mcp --transport streamable-http --port 3002
```

访问地址: `http://localhost:3002/mcp`

## 🛠 可用工具

### 1. deploy_html
部署HTML内容到X-Pages服务

**参数:**
- `site_name` (string): 站点名称,用于生成访问URL
- `html_content` (string): 完整的HTML内容
- `title` (string, 可选): 站点标题
- `description` (string, 可选): 站点描述

**返回:**
```json
{
  "success": true,
  "site_name": "my-site",
  "deploy_url": "https://your-domain.com/my-site",
  "deployed_at": "2024-01-01T00:00:00Z",
  "content_length": 1024,
  "message": "HTML site 'my-site' deployed successfully"
}
```

### 2. delete_html
从X-Pages服务删除HTML站点

**参数:**
- `site_name` (string): 要删除的站点名称

**返回:**
```json
{
  "success": true,
  "site_name": "my-site",
  "deleted_at": "2024-01-01T00:00:00Z",
  "message": "HTML site 'my-site' deleted successfully"
}
```

### 3. get_site_url
获取站点的访问URL

**参数:**
- `site_name` (string): 站点名称

**返回:** `"https://your-domain.com/my-site"`

### 4. create_sample_html
创建示例HTML页面内容

**参数:**
- `site_name` (string): 站点名称
- `title` (string, 可选): HTML页面标题,默认"示例页面"
- `heading` (string, 可选): 页面主标题,默认"Hello World!"
- `content` (string, 可选): 页面内容

**返回:** 完整的HTML内容字符串

## 💡 使用示例

### 与Claude Desktop一起使用

配置完成后,你可以在Claude Desktop中直接使用自然语言进行HTML部署:

```
用户: 帮我创建一个名为"hello-world"的简单网站,标题是"我的第一个网站"

Claude: 我来为你创建并部署一个简单的网站。

1. 首先创建HTML内容:
```

Claude会自动调用MCP工具来:
1. 生成HTML内容
2. 部署到X-Pages服务
3. 返回可访问的网站URL

### 命令行使用

```bash
# 启动MCP服务器 (用于测试)
uv run x-pages-mcp

# 或直接运行
python -m x_pages_mcp.server
```

### 编程方式使用

```python
import asyncio
from x_pages_mcp.server import deploy_html, create_sample_html

async def main():
    # 创建示例HTML
    html = await create_sample_html(
        site_name="test-site",
        title="测试网站",
        heading="欢迎访问",
        content="这是通过MCP部署的测试网站"
    )
    
    # 部署HTML
    result = await deploy_html("test-site", html, "测试网站", "MCP部署示例")
    print(f"网站部署成功!访问地址: {result.deploy_url}")

asyncio.run(main())
```

## 🧪 测试

```bash
# 运行测试
uv run pytest

# 运行测试并显示覆盖率
uv run pytest --cov=x_pages_mcp
```

## 🛡️ 安全注意事项

1. **保护API Token** - 不要在代码中硬编码token,使用环境变量
2. **网络安全** - 确保X-Pages服务使用HTTPS
3. **输入验证** - 对HTML内容进行适当的安全检查
4. **访问控制** - 限制MCP服务器的访问权限

## 🔧 开发

### 项目结构

```
mcp/
├── src/x_pages_mcp/
│   ├── __init__.py
│   └── server.py          # MCP服务器主要实现
├── tests/
│   ├── __init__.py
│   └── test_server.py     # 测试文件
├── pyproject.toml         # 项目配置
├── .env.example          # 环境变量示例
├── claude_desktop_config.json  # Claude Desktop配置示例
└── README.md             # 使用文档
```

### 贡献指南

1. Fork 项目
2. 创建功能分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 创建Pull Request

## 📄 许可证

MIT License

## 🆘 故障排除

### 常见问题

**Q: 配置错误 "X_PAGES_BASE_URL environment variable is required"**
A: 确保设置了正确的环境变量,参考配置部分

**Q: 部署失败 "Invalid x-token"**
A: 检查X_PAGES_API_TOKEN是否与X-Pages服务中配置的token一致

**Q: 网络请求失败**
A: 检查X_PAGES_BASE_URL是否正确,网络连接是否正常

**Q: Claude Desktop中看不到MCP工具**
A: 检查配置文件路径和格式,重启Claude Desktop

### 调试模式

```bash
# 启用调试日志
export MCP_LOG_LEVEL=DEBUG
uv run x-pages-mcp
```

## 🔗 相关链接

- [X-Pages 项目](../README.md)
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [Claude Desktop MCP 配置](https://claude.ai/docs)
- [腾讯云 EdgeOne](https://cloud.tencent.com/product/edgeone)
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "x-pages-mcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "ai, claude, deployment, html, mcp, model-context-protocol",
    "author": "X-Pages Team",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/6d/c7/56a36ff6559d8dca658a9aa1498e1866bbf492628a45739baa5410c496ff/x_pages_mcp-0.1.0.tar.gz",
    "platform": null,
    "description": "# X-Pages MCP Server\n\n\u57fa\u4e8eModel Context Protocol (MCP) \u7684X-Pages HTML\u90e8\u7f72\u670d\u52a1\u5668\uff0c\u8ba9\u5927\u6a21\u578b\u53ef\u4ee5\u76f4\u63a5\u90e8\u7f72HTML\u5185\u5bb9\u5e76\u83b7\u53d6\u7f51\u7ad9\u5730\u5740\u3002\n\n## \ud83d\ude80 \u529f\u80fd\u7279\u6027\n\n- \ud83e\udd16 **AI\u53cb\u597d** - \u901a\u8fc7MCP\u534f\u8bae\u8ba9\u5927\u6a21\u578b\u76f4\u63a5\u90e8\u7f72HTML\u5185\u5bb9\n- \ud83d\udd27 **\u7b80\u5355\u6613\u7528** - \u51e0\u4e2a\u547d\u4ee4\u5373\u53ef\u5b8c\u6210\u90e8\u7f72\u548c\u7ba1\u7406\n- \ud83d\udee1\ufe0f **\u5b89\u5168\u8ba4\u8bc1** - \u652f\u6301x-token\u8ba4\u8bc1\uff0c\u4fdd\u62a4API\u8bbf\u95ee\n- \ud83c\udf10 **\u5373\u65f6\u8bbf\u95ee** - \u90e8\u7f72\u540e\u7acb\u5373\u83b7\u5f97\u53ef\u8bbf\u95ee\u7684\u7f51\u7ad9URL\n- \ud83d\udcdd **\u6a21\u677f\u751f\u6210** - \u5185\u7f6eHTML\u6a21\u677f\u751f\u6210\u5de5\u5177\n- \ud83d\udd04 **\u5b8c\u6574\u7ba1\u7406** - \u652f\u6301\u90e8\u7f72\u3001\u5220\u9664\u3001URL\u83b7\u53d6\u7b49\u5b8c\u6574\u64cd\u4f5c\n\n## \ud83d\udce6 \u5b89\u88c5\n\n### \u524d\u7f6e\u8981\u6c42\n\n- Python 3.9+\n- uv (\u63a8\u8350) \u6216 pip\n- \u5df2\u90e8\u7f72\u7684X-Pages\u670d\u52a1\n\n### \u5b89\u88c5\u6b65\u9aa4\n\n```bash\n# \u514b\u9686\u9879\u76ee\ngit clone <repository-url>\ncd X-Pages/mcp\n\n# \u4f7f\u7528uv\u5b89\u88c5 (\u63a8\u8350)\nuv sync\n\n# \u6216\u4f7f\u7528pip\u5b89\u88c5\npip install -e .\n```\n\n## \u2699\ufe0f \u914d\u7f6e\n\n### \u73af\u5883\u53d8\u91cf\n\n\u521b\u5efa `.env` \u6587\u4ef6\u6216\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\uff1a\n\n```bash\n# \u5fc5\u9700\u914d\u7f6e\nexport X_PAGES_BASE_URL=https://your-domain.com\nexport X_PAGES_API_TOKEN=your-secret-token\n\n# \u53ef\u9009\u914d\u7f6e\nexport X_PAGES_TIMEOUT=30.0\n```\n\n### Claude Desktop \u914d\u7f6e\n\n\u5728Claude Desktop\u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u6dfb\u52a0MCP\u670d\u52a1\u5668\uff1a\n\n**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows**: `%APPDATA%\\\\Claude\\\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"x-pages-html-deployment\": {\n      \"command\": \"uv\",\n      \"args\": [\n        \"--directory\", \"/path/to/X-Pages/mcp\",\n        \"run\", \"x-pages-mcp\"\n      ],\n      \"env\": {\n        \"X_PAGES_BASE_URL\": \"https://your-domain.com\",\n        \"X_PAGES_API_TOKEN\": \"your-secret-token\"\n      }\n    }\n  }\n}\n```\n\n## \ud83d\ude80 \u4f20\u8f93\u6a21\u5f0f\n\nX-Pages MCP\u670d\u52a1\u5668\u652f\u6301\u4e09\u79cd\u4f20\u8f93\u6a21\u5f0f\uff1a\n\n### STDIO \u6a21\u5f0f (\u9ed8\u8ba4)\n\u6807\u51c6\u8f93\u5165\u8f93\u51fa\u6a21\u5f0f\uff0c\u9002\u5408Claude Desktop\u7b49\u672c\u5730\u5ba2\u6237\u7aef\uff1a\n```bash\n# \u4f7f\u7528Python\u542f\u52a8\u5668\npython3 start_server.py --transport stdio\n\n# \u4f7f\u7528\u811a\u672c\n./scripts/start_stdio.sh\n\n# \u76f4\u63a5\u4f7f\u7528uv\nuv run x-pages-mcp --transport stdio\n```\n\n### SSE \u6a21\u5f0f (Server-Sent Events)\n\u57fa\u4e8eHTTP\u7684\u5b9e\u65f6\u901a\u4fe1\u6a21\u5f0f\uff0c\u9002\u5408Web\u5e94\u7528\uff1a\n```bash\n# \u4f7f\u7528Python\u542f\u52a8\u5668\npython3 start_server.py --transport sse --port 3001\n\n# \u4f7f\u7528\u811a\u672c\n./scripts/start_sse.sh localhost 3001\n\n# \u76f4\u63a5\u4f7f\u7528uv\nuv run x-pages-mcp --transport sse --port 3001\n```\n\n\u8bbf\u95ee\u5730\u5740: `http://localhost:3001/sse`\n\n### Streamable HTTP \u6a21\u5f0f\n\u53ef\u6d41\u5f0fHTTP\u6a21\u5f0f\uff0c\u652f\u6301\u957f\u8fde\u63a5\u548c\u6d41\u5f0f\u54cd\u5e94\uff1a\n```bash\n# \u4f7f\u7528Python\u542f\u52a8\u5668\npython3 start_server.py --transport streamable-http --port 3002\n\n# \u4f7f\u7528\u811a\u672c\n./scripts/start_streamable.sh localhost 3002\n\n# \u76f4\u63a5\u4f7f\u7528uv\nuv run x-pages-mcp --transport streamable-http --port 3002\n```\n\n\u8bbf\u95ee\u5730\u5740: `http://localhost:3002/mcp`\n\n## \ud83d\udee0 \u53ef\u7528\u5de5\u5177\n\n### 1. deploy_html\n\u90e8\u7f72HTML\u5185\u5bb9\u5230X-Pages\u670d\u52a1\n\n**\u53c2\u6570\uff1a**\n- `site_name` (string): \u7ad9\u70b9\u540d\u79f0\uff0c\u7528\u4e8e\u751f\u6210\u8bbf\u95eeURL\n- `html_content` (string): \u5b8c\u6574\u7684HTML\u5185\u5bb9\n- `title` (string, \u53ef\u9009): \u7ad9\u70b9\u6807\u9898\n- `description` (string, \u53ef\u9009): \u7ad9\u70b9\u63cf\u8ff0\n\n**\u8fd4\u56de\uff1a**\n```json\n{\n  \"success\": true,\n  \"site_name\": \"my-site\",\n  \"deploy_url\": \"https://your-domain.com/my-site\",\n  \"deployed_at\": \"2024-01-01T00:00:00Z\",\n  \"content_length\": 1024,\n  \"message\": \"HTML site 'my-site' deployed successfully\"\n}\n```\n\n### 2. delete_html\n\u4eceX-Pages\u670d\u52a1\u5220\u9664HTML\u7ad9\u70b9\n\n**\u53c2\u6570\uff1a**\n- `site_name` (string): \u8981\u5220\u9664\u7684\u7ad9\u70b9\u540d\u79f0\n\n**\u8fd4\u56de\uff1a**\n```json\n{\n  \"success\": true,\n  \"site_name\": \"my-site\",\n  \"deleted_at\": \"2024-01-01T00:00:00Z\",\n  \"message\": \"HTML site 'my-site' deleted successfully\"\n}\n```\n\n### 3. get_site_url\n\u83b7\u53d6\u7ad9\u70b9\u7684\u8bbf\u95eeURL\n\n**\u53c2\u6570\uff1a**\n- `site_name` (string): \u7ad9\u70b9\u540d\u79f0\n\n**\u8fd4\u56de\uff1a** `\"https://your-domain.com/my-site\"`\n\n### 4. create_sample_html\n\u521b\u5efa\u793a\u4f8bHTML\u9875\u9762\u5185\u5bb9\n\n**\u53c2\u6570\uff1a**\n- `site_name` (string): \u7ad9\u70b9\u540d\u79f0\n- `title` (string, \u53ef\u9009): HTML\u9875\u9762\u6807\u9898\uff0c\u9ed8\u8ba4\"\u793a\u4f8b\u9875\u9762\"\n- `heading` (string, \u53ef\u9009): \u9875\u9762\u4e3b\u6807\u9898\uff0c\u9ed8\u8ba4\"Hello World!\"\n- `content` (string, \u53ef\u9009): \u9875\u9762\u5185\u5bb9\n\n**\u8fd4\u56de\uff1a** \u5b8c\u6574\u7684HTML\u5185\u5bb9\u5b57\u7b26\u4e32\n\n## \ud83d\udca1 \u4f7f\u7528\u793a\u4f8b\n\n### \u4e0eClaude Desktop\u4e00\u8d77\u4f7f\u7528\n\n\u914d\u7f6e\u5b8c\u6210\u540e\uff0c\u4f60\u53ef\u4ee5\u5728Claude Desktop\u4e2d\u76f4\u63a5\u4f7f\u7528\u81ea\u7136\u8bed\u8a00\u8fdb\u884cHTML\u90e8\u7f72\uff1a\n\n```\n\u7528\u6237: \u5e2e\u6211\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a\"hello-world\"\u7684\u7b80\u5355\u7f51\u7ad9\uff0c\u6807\u9898\u662f\"\u6211\u7684\u7b2c\u4e00\u4e2a\u7f51\u7ad9\"\n\nClaude: \u6211\u6765\u4e3a\u4f60\u521b\u5efa\u5e76\u90e8\u7f72\u4e00\u4e2a\u7b80\u5355\u7684\u7f51\u7ad9\u3002\n\n1. \u9996\u5148\u521b\u5efaHTML\u5185\u5bb9\uff1a\n```\n\nClaude\u4f1a\u81ea\u52a8\u8c03\u7528MCP\u5de5\u5177\u6765\uff1a\n1. \u751f\u6210HTML\u5185\u5bb9\n2. \u90e8\u7f72\u5230X-Pages\u670d\u52a1\n3. \u8fd4\u56de\u53ef\u8bbf\u95ee\u7684\u7f51\u7ad9URL\n\n### \u547d\u4ee4\u884c\u4f7f\u7528\n\n```bash\n# \u542f\u52a8MCP\u670d\u52a1\u5668 (\u7528\u4e8e\u6d4b\u8bd5)\nuv run x-pages-mcp\n\n# \u6216\u76f4\u63a5\u8fd0\u884c\npython -m x_pages_mcp.server\n```\n\n### \u7f16\u7a0b\u65b9\u5f0f\u4f7f\u7528\n\n```python\nimport asyncio\nfrom x_pages_mcp.server import deploy_html, create_sample_html\n\nasync def main():\n    # \u521b\u5efa\u793a\u4f8bHTML\n    html = await create_sample_html(\n        site_name=\"test-site\",\n        title=\"\u6d4b\u8bd5\u7f51\u7ad9\",\n        heading=\"\u6b22\u8fce\u8bbf\u95ee\",\n        content=\"\u8fd9\u662f\u901a\u8fc7MCP\u90e8\u7f72\u7684\u6d4b\u8bd5\u7f51\u7ad9\"\n    )\n    \n    # \u90e8\u7f72HTML\n    result = await deploy_html(\"test-site\", html, \"\u6d4b\u8bd5\u7f51\u7ad9\", \"MCP\u90e8\u7f72\u793a\u4f8b\")\n    print(f\"\u7f51\u7ad9\u90e8\u7f72\u6210\u529f\uff01\u8bbf\u95ee\u5730\u5740: {result.deploy_url}\")\n\nasyncio.run(main())\n```\n\n## \ud83e\uddea \u6d4b\u8bd5\n\n```bash\n# \u8fd0\u884c\u6d4b\u8bd5\nuv run pytest\n\n# \u8fd0\u884c\u6d4b\u8bd5\u5e76\u663e\u793a\u8986\u76d6\u7387\nuv run pytest --cov=x_pages_mcp\n```\n\n## \ud83d\udee1\ufe0f \u5b89\u5168\u6ce8\u610f\u4e8b\u9879\n\n1. **\u4fdd\u62a4API Token** - \u4e0d\u8981\u5728\u4ee3\u7801\u4e2d\u786c\u7f16\u7801token\uff0c\u4f7f\u7528\u73af\u5883\u53d8\u91cf\n2. **\u7f51\u7edc\u5b89\u5168** - \u786e\u4fddX-Pages\u670d\u52a1\u4f7f\u7528HTTPS\n3. **\u8f93\u5165\u9a8c\u8bc1** - \u5bf9HTML\u5185\u5bb9\u8fdb\u884c\u9002\u5f53\u7684\u5b89\u5168\u68c0\u67e5\n4. **\u8bbf\u95ee\u63a7\u5236** - \u9650\u5236MCP\u670d\u52a1\u5668\u7684\u8bbf\u95ee\u6743\u9650\n\n## \ud83d\udd27 \u5f00\u53d1\n\n### \u9879\u76ee\u7ed3\u6784\n\n```\nmcp/\n\u251c\u2500\u2500 src/x_pages_mcp/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2514\u2500\u2500 server.py          # MCP\u670d\u52a1\u5668\u4e3b\u8981\u5b9e\u73b0\n\u251c\u2500\u2500 tests/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2514\u2500\u2500 test_server.py     # \u6d4b\u8bd5\u6587\u4ef6\n\u251c\u2500\u2500 pyproject.toml         # \u9879\u76ee\u914d\u7f6e\n\u251c\u2500\u2500 .env.example          # \u73af\u5883\u53d8\u91cf\u793a\u4f8b\n\u251c\u2500\u2500 claude_desktop_config.json  # Claude Desktop\u914d\u7f6e\u793a\u4f8b\n\u2514\u2500\u2500 README.md             # \u4f7f\u7528\u6587\u6863\n```\n\n### \u8d21\u732e\u6307\u5357\n\n1. Fork \u9879\u76ee\n2. \u521b\u5efa\u529f\u80fd\u5206\u652f (`git checkout -b feature/amazing-feature`)\n3. \u63d0\u4ea4\u66f4\u6539 (`git commit -m 'Add amazing feature'`)\n4. \u63a8\u9001\u5230\u5206\u652f (`git push origin feature/amazing-feature`)\n5. \u521b\u5efaPull Request\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\nMIT License\n\n## \ud83c\udd98 \u6545\u969c\u6392\u9664\n\n### \u5e38\u89c1\u95ee\u9898\n\n**Q: \u914d\u7f6e\u9519\u8bef \"X_PAGES_BASE_URL environment variable is required\"**\nA: \u786e\u4fdd\u8bbe\u7f6e\u4e86\u6b63\u786e\u7684\u73af\u5883\u53d8\u91cf\uff0c\u53c2\u8003\u914d\u7f6e\u90e8\u5206\n\n**Q: \u90e8\u7f72\u5931\u8d25 \"Invalid x-token\"**\nA: \u68c0\u67e5X_PAGES_API_TOKEN\u662f\u5426\u4e0eX-Pages\u670d\u52a1\u4e2d\u914d\u7f6e\u7684token\u4e00\u81f4\n\n**Q: \u7f51\u7edc\u8bf7\u6c42\u5931\u8d25**\nA: \u68c0\u67e5X_PAGES_BASE_URL\u662f\u5426\u6b63\u786e\uff0c\u7f51\u7edc\u8fde\u63a5\u662f\u5426\u6b63\u5e38\n\n**Q: Claude Desktop\u4e2d\u770b\u4e0d\u5230MCP\u5de5\u5177**\nA: \u68c0\u67e5\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\u548c\u683c\u5f0f\uff0c\u91cd\u542fClaude Desktop\n\n### \u8c03\u8bd5\u6a21\u5f0f\n\n```bash\n# \u542f\u7528\u8c03\u8bd5\u65e5\u5fd7\nexport MCP_LOG_LEVEL=DEBUG\nuv run x-pages-mcp\n```\n\n## \ud83d\udd17 \u76f8\u5173\u94fe\u63a5\n\n- [X-Pages \u9879\u76ee](../README.md)\n- [Model Context Protocol](https://modelcontextprotocol.io/)\n- [Claude Desktop MCP \u914d\u7f6e](https://claude.ai/docs)\n- [\u817e\u8baf\u4e91 EdgeOne](https://cloud.tencent.com/product/edgeone)",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2024 X-Pages Team\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.",
    "summary": "MCP server for X-Pages HTML deployment service",
    "version": "0.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/xingshulin/x-pages-mcp/issues",
        "Documentation": "https://github.com/xingshulin/x-pages-mcp/blob/main/README.md",
        "Homepage": "https://github.com/xingshulin/x-pages-mcp",
        "Repository": "https://github.com/xingshulin/x-pages-mcp"
    },
    "split_keywords": [
        "ai",
        " claude",
        " deployment",
        " html",
        " mcp",
        " model-context-protocol"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "682ee1f5be45666f1e9c2a3d1b23a145166391ccf271ae6cf52412c2207c1407",
                "md5": "b9cba2422a6aeff33600fa4128275211",
                "sha256": "ca5afd8af9f6de1bb8f65f9837af57c3c2210bd42f9c6526d0f5d6e1a6c8b6d0"
            },
            "downloads": -1,
            "filename": "x_pages_mcp-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b9cba2422a6aeff33600fa4128275211",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 9700,
            "upload_time": "2025-08-10T09:16:22",
            "upload_time_iso_8601": "2025-08-10T09:16:22.081597Z",
            "url": "https://files.pythonhosted.org/packages/68/2e/e1f5be45666f1e9c2a3d1b23a145166391ccf271ae6cf52412c2207c1407/x_pages_mcp-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6dc756a36ff6559d8dca658a9aa1498e1866bbf492628a45739baa5410c496ff",
                "md5": "29cf2189cbb7c87d1ce101762b796ff9",
                "sha256": "9f4153c7e494e8a189824b481b0f65450f6b8a875ef00e5713b895befc4131b2"
            },
            "downloads": -1,
            "filename": "x_pages_mcp-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "29cf2189cbb7c87d1ce101762b796ff9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 72797,
            "upload_time": "2025-08-10T09:16:24",
            "upload_time_iso_8601": "2025-08-10T09:16:24.028769Z",
            "url": "https://files.pythonhosted.org/packages/6d/c7/56a36ff6559d8dca658a9aa1498e1866bbf492628a45739baa5410c496ff/x_pages_mcp-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-10 09:16:24",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "xingshulin",
    "github_project": "x-pages-mcp",
    "github_not_found": true,
    "lcname": "x-pages-mcp"
}
        
Elapsed time: 1.77911s