Platform-MCP

Platform-MCP

An internal MCP server providing Database (SQL execution) and Server (Linux SSH/SFTP) skills with 11 tools, enabling remote execution, risk control, and full audit via Claude Code or other clients.

Category
访问服务器

README

Platform-MCP

内部 MCP (Model Context Protocol) 能力平台 双 Skill:Database(SQL 执行)+ Server(Linux SSH/SFTP)— 共 11 个 MCP 工具,通过 Claude Code 等调用方远程执行,配备 Web 管理台与全链路审计

项目概览

Platform-MCP 是一个内部 MCP 服务平台,提供:

  • Database Skill(5 tools):执行本地 SQL 文件 / SQL 文本 / 风险校验 / 数据源列举 / 异步状态查询
  • Server Skill(6 tools):Linux 远程 Shell 执行 / SFTP 上传下载 / 命令风控校验 / 服务器列举 / 异步状态查询
  • 双传输 MCP Server:stdio(环境变量)+ streamable-http(Header)双入口
  • API Key 认证:双存储(key_hash SHA-256 校验 + key_encrypted AES-GCM admin reveal)
  • Web 管理台:数据源管理 + 服务器管理 + 用户管理 + API Key 管理 + 审计日志 + 个人设置
  • 权限控制:admin/developer 双角色,developer 禁 PROD;服务器与数据源各自独立权限
  • 风险引擎:SQL 与 Shell 共用 4 级(LOW/MEDIUM/HIGH/CRITICAL),HIGH+ 需 confirm_token 反重放二次确认

快速启动

前置要求

  • Python 3.11.9
  • PostgreSQL 16.4(系统库)
  • Oracle 11g / MySQL 5.6(目标库,可选)

后端启动

# 1. 安装依赖
pip install -e ".[dev]"

# 2. 创建本地配置(必填 database.url)
cp settings.yml.example settings.yml
# 编辑 settings.yml,替换 <password> / HOST 为你的 PostgreSQL 实际值

# 3. 准备 PostgreSQL:创建库 + 用户
createdb platform_mcp
psql -d platform_mcp -c "CREATE USER pmcp WITH PASSWORD '<your-password>';"

# 4. 设置 Alembic DB URL(用于 migration;可写入 ~/.bashrc 持久化)
export PLATFORM_DB_URL="postgresql://pmcp:<password>@localhost:5432/platform_mcp"

# 5. 生成 crypto 密钥 + Alembic 升级 + 检查 seed 用户
python scripts/_setup_local.py

# 6. 种 database + server skill 到 pmcp_skill 表
python scripts/_seed_skill.py

# 7. 启动 FastAPI Web(默认端口 8000)
python -m platform_mcp.main

# 8. 启动 MCP Server(mode 由 settings.mcp.transport 决定)
python -m platform_mcp.mcp_server

前端启动

cd Platform-MCP-frontend
npm install
npm run dev    # 默认端口 5173(占用自动递增)

访问 http://localhost:5173,默认账号:admin / admin123

数据库初始化

# 生成加密密钥 + Alembic 升级 + 检查 seed 用户
python scripts/_setup_local.py

# 种 database skill 到 pmcp_skill 表
python scripts/_seed_skill.py

技术栈

后端:Python 3.11.9 + FastAPI 0.115.0 + SQLAlchemy 2.0.35 + Alembic 1.13.2 + oracledb 2.4.1 + aiomysql 0.2.0 + asyncssh 2.17.0(Server Skill SSH/SFTP)

前端:Vue 3.5.34 + Vite 8.0.12 + TypeScript 6.0.2 + Element Plus 2.8.1 + Pinia 2.2.2 + Axios 1.7.4

数据库:PostgreSQL 16.4(系统),Oracle 11g / MySQL 5.6(目标)

架构(简化)

Claude Code ──stdio(env PLATFORM_MCP_API_KEY)──▶ MCP Server ──┐
           ╲                                        ├──▶ PostgreSQL(系统库,ORM)
            ╲                                       │    Oracle / MySQL(Database Skill 目标)
Claude Code ──HTTP(header PLATFORM_MCP_API_KEY)──▶ ──┤    Linux SSH/SFTP(Server Skill 目标)
                                                │
Browser ──HTTP(session cookie)──▶ FastAPI Web ──┘

目录结构

Platform-MCP/
├── platform_mcp/                # 后端代码
│   ├── api/                     # FastAPI 路由(11 模块,含 servers)
│   ├── auth/                    # 认证鉴权 + API Key
│   ├── datasource/              # 数据源管理(DB Skill 目标)
│   ├── server/                  # 服务器管理(Linux SSH 目标,Server Skill 用)
│   ├── skills/
│   │   ├── database/            # Database Skill(5 tools:SQL 执行 + 风控)
│   │   ├── server/              # Server Skill(6 tools:SSH/SFTP + 风控)
│   │   └── common/              # 共享风控类型(risk_types + permission)
│   ├── mcp_server/              # MCP 协议 + 双传输 + 上下文/审计
│   ├── audit/                   # 审计日志
│   └── common/                  # 公共组件(database / crypto / response / 等)
├── platform-mcp-frontend/       # 前端代码(Vue 3,9 业务页面含服务器管理)
├── tests/                       # 后端测试(525 用例)
├── scripts/                     # 工具脚本
├── alembic/                     # 数据库迁移
├── documents/                   # 设计文档

文档索引

文档 说明
CLAUDE.md Claude Code 工作指南(项目整体原则)
documents/design/Python:# Platform-MCP 技术架构说明文档.md 技术架构(权威来源)
documents/design/Python:# Platform-MCP 代码规范.md 编码规范
documents/design/Python:# Platform-MCP 部署规范.md 生产部署
documents/design/Python:# Platform-MCP 测试规范文档.md 测试策略
CLAUDE.md § 文档审核标准 文档审核规则(嵌入 CLAUDE.md)
documents/ui/Platform-MCP-portal.html UI 原型(单文件 HTML)

版本迭代

基线 V1.0 = 2026-08-08。后续生产发布(含 hotfix、迭代版本、配置类变更上线)必须在此表追加一行——详见 CLAUDE.md §部署原则 #10

版本 日期 类型 摘要 修改人
V1.0.1 2026-08-09 hotfix 审计日志失败记录完整性增强(合并两次细粒度修复为同日 hotfix):(1)error_code 强制捕获——call_log.py PmcpMcpCallLog 构造补 error_code=error_code(修前 mcp_call_log 全表 error 行 0/5 有码);auth.py login fail 补 error_code="11001"crypto.py encrypt/verify fail 补 error_code="15001"profile.py change-password fail 补 error_code="11004"(2)result_status 枚举统一——web 层 6 文件 8 处 'fail''error'(auth/crypto/profile/datasources/servers)+ UI statusLabel 防御性同时识别 fail/error → 失败 + audit/models.py 列 comment 更新为 (success/error)(3)历史数据 backfill——UPDATE fail→error 共 2 行 + NULL error_code 按错误信息模式匹配 backfill 6 行(11001/12001/10001/15001),最终态 0 fail 残留 + error 行 error_code 完整率 100%。生产验证:castle.zhang 4 行登录失败记录全 error/11001 ✓;castle.zhang MCP 失败 → audit_log + mcp_call_log 双表 error_code=12001 ✓ castle
V1.0 2026-08-08 基线发布 一期 + Server Skill 二期专项全量上线:11 MCP tools(database 5 + server 6)、15 系统表、9 前端页面、双传输 MCP(stdio + streamable-http)、API Key 双存储(hash + encrypted) castle

测试

# 后端(525 用例,覆盖率 95.96%)
python -m pytest tests/ --ignore=tests/performance --cov=platform_mcp
mypy platform_mcp/    # 类型检查(V1.0 新增)

# 前端(110 用例)
cd Platform-MCP-frontend
npm run test

配置

文件 用途 来源
settings.yml 基础配置(database.url 等,必填) settings.yml.example 复制
settings-dev.yml dev 环境覆盖(已含) 已追踪,按需修改 oracle_instant_client_dir
settings-prod.yml prod 环境覆盖 settings-prod.yml.example 复制(仅 prod 需要)
crypto-secret.key AES 密钥(32 raw bytes) scripts/_setup_local.py 自动生成
alembic.ini Alembic migration 配置 已追踪;DB URL 占位,可用 PLATFORM_DB_URL 环境变量覆盖

许可

本项目基于 MIT License 开源,详见 LICENSE

第三方依赖开源许可

本项目使用以下开源组件,各组件遵循其原始许可协议:

类别 组件 许可协议
后端框架 FastAPI、Pydantic、SQLAlchemy、Alembic、Uvicorn、Gunicorn、loguru MIT
数据库驱动 oracledb Apache 2.0
aiomysql MIT
psycopg2-binary LGPL-3.0
加密 cryptography Apache-2.0 OR BSD-3-Clause
HTTP 客户端 httpx BSD-3-Clause
MCP 协议 mcp SDK MIT
配置/工具 PyYAML、tenacity、sqlparse MIT / BSD / Apache-2.0
前端框架 Vue、Vite、Pinia、Vue Router、Axios MIT
类型系统 TypeScript Apache-2.0
UI 组件库 Element Plus MIT

商业数据库许可说明

Platform-MCP 支持连接 Oracle 11g 与 MySQL 5.6 作为目标数据库,使用方需自行获取相应数据库的合法授权与许可,本项目不包含也不提供任何商业数据库的许可。Oracle 驱动(oracledb)的 thick 模式依赖 Oracle Instant Client,需另行下载并遵守 Oracle 的许可协议。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选