Token导航 LogoToken导航TokenDH.com
Apache MCP logo
运维云端stdio官方级别未说明来源级核验

Apache MCP

MCP Server

一个兼容MCP的服务器,通过SSE + HTTP提供Apache站点管理功能(列表、启用/禁用、测试、重新加载、重启),包括API密钥认证以控制访问。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
SSE传输Python服务器管理API密钥

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

wolf2627

提供方

wolf2627

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run python apache-mcp-sse.py

详细介绍

Apache 管理 MCP 服务器(SSE 传输)

一个小型的MCP兼容服务器,通过SSE+HTTP暴露Apache网站管理功能(列出、启用/禁用、测试、重新加载、重启)。包含API密钥认证以控制访问。

这个仓库托管着 apache-mcp-sse.py — 一个基于Starlette/uvicorn的ASGI应用程序,它封装了常见的Apache管理命令,并将它们作为MCP资源和工具呈现出来。

特点

  • 列出网站列表 /etc/apache2/sites-available 并且 /etc/apache2/sites-enabled
  • 读取站点配置文件
  • 通过(某种方式)启用/禁用站点 a2ensite / a2dissite
  • 测试Apache配置并重新加载/重启服务
  • 用于MCP客户端连接的SSE传输
  • API密钥认证(头部: X-API-Key
  • 已启用CORS(默认:允许所有来源)

先决条件

  • Linux(采用Debian/Ubuntu风格的Apache布局)
  • Python 3.12+(项目要求) >=3.12)
  • sudo 权限以运行 a2ensitea2dissiteapache2ctl,以及 service apache2 命令
  • UV包管理器(不使用pip)

安装 uv(一次性操作):

# Linux/macOS (from Astral)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Verify
uv --version

项目布局

  • apache-mcp-sse.py — MCP的主SSE + HTTP服务器
  • apache-rest-api.py — 可选的 REST/FastAPI 版本(如果您更喜欢使用 REST 而不是 SSE)
  • pyproject.toml — 项目元数据和依赖项(fastapihttpxmcp[cli]

使用 uv 进行设置(无需 pip)

同步项目环境自 pyproject.toml

# Create/refresh a project-local virtualenv and install dependencies
uv sync

如果你计划使用SSE服务器(apache-mcp-sse.py)并且它缺少你系统中的运行时依赖项 pyproject.toml,用紫外线(一次)照射它们:

# Only if needed
uv add starlette uvicorn

注:该项目已列出 mcp[cli]fastapi,以及 httpxSSE服务器使用 starlette 并且 uvicorn 在运行时。

运行服务器(uv)

设置一个API密钥(推荐)或让服务器在启动时自动生成一个。

# 1) Set a permanent API key (recommended)
export MCP_API_KEY="my-super-secret-key-12345"

# 2) Run the SSE server under uv's environment
uv run python apache-mcp-sse.py

服务器启动时会打印连接信息,包括有效的API密钥(如果已生成)和终端节点。

默认绑定: http://0.0.0.0:8000

终点(或结局指标)

  • GET / — 服务器信息(无需认证)
  • GET /health — 健康检查(无需认证)
  • GET /sse — SSE传输(需要 X-API-Key)
  • POST /messages — MCP消息入口(需要 X-API-Key

🔐 API密钥认证使用

设定 MCP_API_KEY 如上文“运行服务器”部分所示(或服务器将在启动时自动生成一个)。

使用curl进行测试

# WITHOUT API key (will fail)
curl http://localhost:8000/sse
# Response: {"error":"Authentication required","message":"Missing X-API-Key header"}

# WITH API key (will work)
curl -H "X-API-Key: my-super-secret-key-12345" \
     http://localhost:8000/sse

# Health check (no auth needed)
curl http://localhost:8000/health

Apache 反向代理(可选)

为了让Apache转发请求并注入API密钥头部,这样客户端就不需要包含它:


    ServerName 

    ProxyPreserveHost On
    ProxyTimeout 3600

    # Pass the API key header
    RequestHeader set X-API-Key "my-super-secret-key-12345"

    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1

    
        ProxyPass http://127.0.0.1:8000/sse
        ProxyPassReverse http://127.0.0.1:8000/sse
        SetEnv proxy-sendcl 0
        SetEnv proxy-sendchunked 1
    

    
        ProxyPass http://127.0.0.1:8000/messages
        ProxyPassReverse http://127.0.0.1:8000/messages
    

    
        ProxyPass http://127.0.0.1:8000/health
        ProxyPassReverse http://127.0.0.1:8000/health
    

然后客户端配置可以省略头部信息:

{
  "mcpServers": {
    "apache-manager": {
      "url": "http://test.kraybin.com/sse"
    }
  }
}

生成一个强密码的API密钥

uv run python -c "import secrets; print(secrets.token_urlsafe(32))"

安全特性

  • API密钥要求 /sse 并且 /messages
  • 无需认证即可 /health/ (仅信息)
  • 如果未设置,则自动生成密钥
  • 环境变量支持(MCP_API_KEY)
  • 自定义头部名称(X-API-Key)

与MCP Inspector一起使用

服务器为MCP Inspector打印一行信息。您也可以运行:

# Replace host if remote
npx @modelcontextprotocol/inspector http://localhost:8000/sse

添加 X-API-Key 如果未使用注入该头的反向代理,则在检查器(Inspector)UI中显示该头。

可用的MCP工具

  • list_available_sites — 列出以下所有文件 /etc/apache2/sites-available
  • list_enabled_sites — 列出以下所有文件 /etc/apache2/sites-enabled
  • get_site_status — 显示站点的启用状态和配置
  • enable_site — 通过(某种方式)启用一个网站 a2ensite (可选自动重载)
  • disable_site — 通过禁用某个网站 a2dissite (可选自动重载)
  • test_config — 跑 apache2ctl configtest
  • reload_apacheservice apache2 reload
  • restart_apacheservice apache2 restart

故障排除

  • 权限问题与 a2ensite/a2dissite为服务用户配置sudoers文件,或以具有适当权限的用户身份运行。非交互式sudo可能需要NOPASSWD规则。
  • 通过反向代理使用SSE(服务器发送事件):确保允许长连接并启用分块编码(参见上面的示例)。
  • 空列表:验证标准的Debian/Ubuntu Apache布局是否存在,以及文件是否可读(/etc/apache2/sites-available/etc/apache2/sites-enabled)。

安全注意事项

  • 保护您的API密钥;它授予对Apache网站配置的控制权并允许重新加载。
  • 在生产环境中,限制CORS(跨源资源共享)/允许的来源,并在反向代理后使用HTTPS。
  • 确保生成的密钥不在共享日志中;如果未提供,则在启动时会打印到标准输出。

目录标签

目录标签

SSE传输Python服务器管理API密钥Apache管理本地部署MCP兼容API密钥认证

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP