Dameng Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Dameng Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
一个基于 FastMCP 的达梦数据库 Model Context Protocol 服务器,提供安全的数据库查询和表结构获取功能。
pip install dm-mcpgit clone https://github.com/pkyit/dm-mcp.git
cd dm-mcp
pip install -e .设置以下环境变量来配置数据库连接:
# 数据库服务器地址
export DM_SERVER=localhost
# 数据库端口 (默认: 5236)
export DM_PORT=5236
# 数据库用户名
export DM_USER=SYSDBA
# 数据库密码
export DM_PASSWORD=your_password
# 数据库 Schema (可选,默认使用用户名)
export DM_SCHEMA=PRODUCTION在 Claude Desktop 的配置文件中添加以下配置:
Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"dm-mcp": {
"command": "dm-mcp",
"env": {
"DM_SERVER": "localhost",
"DM_PORT": "5236",
"DM_USER": "SYSDBA",
"DM_PASSWORD": "your_password",
"DM_SCHEMA": "PRODUCTION"
}
}
}
}对于其他支持 MCP 的客户端,请参考相应的配置文件格式。
# 使用环境变量运行
dm-mcp
# 或者直接设置环境变量运行
DM_SERVER=localhost DM_PORT=5236 DM_USER=SYSDBA DM_PASSWORD=your_password DM_SCHEMA=PRODUCTION dm-mcp# 从源码运行
python -m dm_mcp执行 SQL 查询语句。
参数:
sql: SELECT 查询语句示例:
-- 简单查询
SELECT * FROM RESOURCES.EMPLOYEE WHERE ROWNUM <= 5;
-- 聚合查询
SELECT TITLE, COUNT(*) as 人数, AVG(SALARY) as 平均工资
FROM RESOURCES.EMPLOYEE
GROUP BY TITLE
ORDER BY 平均工资 DESC;
-- 多表关联查询
SELECT PC.NAME as 主分类, PSC.NAME as 子分类, COUNT(P.PRODUCTID) as 产品数量
FROM PRODUCTION.PRODUCT_CATEGORY PC
JOIN PRODUCTION.PRODUCT_SUBCATEGORY PSC ON PC.PRODUCT_CATEGORYID = PSC.PRODUCT_CATEGORYID
LEFT JOIN PRODUCTION.PRODUCT P ON PSC.PRODUCT_SUBCATEGORYID = P.PRODUCT_SUBCATEGORYID
GROUP BY PC.NAME, PSC.NAME
ORDER BY PC.NAME, PSC.NAME;返回: 查询结果的格式化字符串,包含列名和数据行。
⚠️ 重要提示:
RESOURCES.EMPLOYEE、PRODUCTION.PRODUCT)SELECT OWNER, TABLE_NAME FROM ALL_TABLES WHERE TABLE_NAME = '表名'获取指定表的结构信息。
参数:
table_name: 表名(不区分大小写,会自动转换为大写)示例:
# 获取 EMPLOYEE 表结构
get_table_structure("EMPLOYEE")
# 获取 PRODUCT 表结构
get_table_structure("PRODUCT")返回: 表的列信息,包括列名、数据类型和长度。
⚠️ 重要提示:
dm-mcp/
├── dm_mcp/
│ ├── __init__.py # MCP 服务器核心代码
│ └── __main__.py # 程序入口
├── pyproject.toml # 项目配置
├── mcp-config.json # MCP 客户端配置示例
├── requirements.txt # Python 依赖
├── README.md # 项目文档
└── LICENSE # Apache 许可证__init__.py: 包含 MCP 服务器初始化、数据库连接函数和工具定义__main__.py: 程序入口,启动 MCP 服务器#### 示例 1:查询员工信息
# 查询前5条员工记录
query_db("SELECT EMPLOYEEID, LOGINID, TITLE, SALARY FROM RESOURCES.EMPLOYEE WHERE ROWNUM <= 5")
# 输出:
# 查询成功 (共5条):
# EMPLOYEEID | LOGINID | TITLE | SALARY
# --------------------------------------------------
# 1 | L1 | 总经理 | 40000.0
# 2 | L2 | 销售经理 | 26000.0
# ...#### 示例 2:统计产品分类
# 查询产品分类统计
query_db("""
SELECT PC.NAME as 主分类,
COUNT(PSC.PRODUCT_SUBCATEGORYID) as 子分类数量
FROM PRODUCTION.PRODUCT_CATEGORY PC
LEFT JOIN PRODUCTION.PRODUCT_SUBCATEGORY PSC
ON PC.PRODUCT_CATEGORYID = PSC.PRODUCT_CATEGORYID
GROUP BY PC.NAME
ORDER BY PC.NAME
""")
# 输出:
# 查询成功 (共7条):
# 主分类 | 子分类数量
# --------------------------------------------------
# 小说 | 6
# 文学 | 7
# 计算机 | 8
# ...#### 示例 3:获取表结构
# 获取 EMPLOYEE 表结构
get_table_structure("EMPLOYEE")
# 输出:
# 表结构 [EMPLOYEE]:
# 列名 | 类型 | 长度
# ------------------------------
# EMPLOYEEID | INT | 4
# NATIONALNO | VARCHAR | 18
# PERSONID | INT | 4
# ...# 安装构建工具
pip install build
# 构建发布包
python -m build# 安装上传工具
pip install twine
# 上传到 PyPI
twine upload dist/*本项目采用 Apache License 2.0 许可证 - 查看 LICENSE 文件了解详情。
欢迎提交 Issue 和 Pull Request 来改进这个项目!
如有问题或建议,请通过 GitHub Issues 联系我们。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.