Skip to main content
Glama

MCP Database Filesystem

by ppengit
MIT License
  • Apple
  • Linux
README.md10 kB
# MCP Database Filesystem [English](README_EN.md) | 中文 一个简洁高效的 MCP (Model Context Protocol) 服务器,提供多数据库访问和文件系统操作功能。 ## ✨ 主要特性 ### 🗄️ 多数据库支持 #### SQL Server - **SQL 查询执行** - 支持 SELECT 查询 - **SQL 命令执行** - 支持 INSERT/UPDATE/DELETE 操作 - **表结构查询** - 获取表的详细结构信息和字段描述 - **表列表** - 列出数据库中的所有表 #### MySQL - **MySQL 查询执行** - 支持 MySQL SELECT 查询 - **MySQL 命令执行** - 支持 INSERT/UPDATE/DELETE 操作 - **MySQL 表结构查询** - 获取 MySQL 表的详细结构信息 - **MySQL 表列表** - 列出 MySQL 数据库中的所有表 #### Redis - **键值操作** - GET/SET/DELETE 键值对 - **键管理** - 列出匹配模式的键 - **服务器信息** - 获取 Redis 服务器状态信息 - **过期设置** - 支持键的过期时间设置 ### 📁 文件系统功能 - **文件读取** - 读取文件内容 - **文件写入** - 写入内容到文件 - **目录列表** - 列出目录内容 ### 🔒 安全特性 - SQL 注入防护 - 文件系统访问控制 - 环境变量配置 - 权限验证 ### 🔄 容错机制 - **优雅降级** - 任何数据库连接失败时不影响其他服务 - **动态重连** - 支持运行时重新连接各种数据库 - **状态监控** - 实时监控所有数据库连接状态 ## 🚀 快速开始 ### 📋 前置要求 根据您要使用的数据库服务,安装相应的驱动程序: #### 1. SQL Server (可选) 安装 ODBC Driver for SQL Server **Windows:** ```bash # 下载并安装 Microsoft ODBC Driver 17 for SQL Server # 访问: https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server # 或使用 winget 安装 winget install Microsoft.ODBCDriverforSQLServer ``` **macOS:** ```bash # 使用 Homebrew 安装 brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release brew update brew install msodbcsql17 mssql-tools ``` **Linux (Ubuntu/Debian):** ```bash # 添加 Microsoft 仓库 curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list # 安装驱动 sudo apt-get update sudo apt-get install msodbcsql17 ``` #### 2. 验证 ODBC 安装 ```bash # Windows odbcad32.exe # macOS/Linux odbcinst -j ``` #### 2. MySQL (可选) 如果要使用 MySQL 功能,确保 MySQL 服务器可访问。不需要额外的客户端驱动,PyMySQL 已包含在依赖中。 #### 3. Redis (可选) 如果要使用 Redis 功能,确保 Redis 服务器可访问。不需要额外的客户端驱动,redis-py 已包含在依赖中。 ### 📦 零安装使用(推荐) ```bash # 安装 uv(如果尚未安装) pip install uv # 直接运行 - 无需克隆仓库! uvx mcp-db-filesystem@latest ``` ### 🔧 配置 在你的 MCP 客户端(如 Claude Desktop、AugmentCode)中添加以下配置: ```json { "mcpServers": { "mcp-db-filesystem": { "command": "uvx", "args": ["mcp-db-filesystem@latest"], "env": { // SQL Server Configuration (可选) "MSSQL_SERVER": "localhost", "MSSQL_DATABASE": "your_database", "MSSQL_USERNAME": "your_username", "MSSQL_PASSWORD": "your_password", "MSSQL_USE_WINDOWS_AUTH": "true", "MSSQL_PORT": "1433", "MSSQL_DRIVER": "ODBC Driver 17 for SQL Server", "MSSQL_CONNECTION_TIMEOUT": "30", "MSSQL_COMMAND_TIMEOUT": "30", "MSSQL_POOL_SIZE": "5", "MSSQL_MAX_OVERFLOW": "10", "MSSQL_TRUST_SERVER_CERTIFICATE": "true", "MSSQL_ENCRYPT": "false", "MSSQL_MULTIPLE_ACTIVE_RESULT_SETS": "true", "MSSQL_APPLICATION_NAME": "MCP-Db-Filesystem", // MySQL Configuration (可选) "MYSQL_HOST": "localhost", "MYSQL_PORT": "3306", "MYSQL_DATABASE": "your_mysql_database", "MYSQL_USERNAME": "your_mysql_username", "MYSQL_PASSWORD": "your_mysql_password", "MYSQL_CHARSET": "utf8mb4", "MYSQL_CONNECTION_TIMEOUT": "30", "MYSQL_POOL_SIZE": "5", "MYSQL_MAX_OVERFLOW": "10", // Redis Configuration (可选) "REDIS_HOST": "localhost", "REDIS_PORT": "6379", "REDIS_DB": "0", "REDIS_PASSWORD": "your_redis_password", "REDIS_SOCKET_TIMEOUT": "30", "REDIS_CONNECTION_TIMEOUT": "30", "REDIS_MAX_CONNECTIONS": "10", // Filesystem Configuration "FS_ALLOWED_PATHS": "*", "FS_ALLOWED_EXTENSIONS": "*.*", "FS_MAX_FILE_SIZE": "1073741824", "FS_ENABLE_WRITE": "true", "FS_ENABLE_DELETE": "true", "FS_IGNORE_FILE_LOCKS": "false", // Security Configuration "SECURITY_ENABLE_SQL_INJECTION_PROTECTION": "true", "SECURITY_MAX_QUERY_LENGTH": "10000", "SECURITY_ENABLE_QUERY_LOGGING": "true", "SECURITY_LOG_SENSITIVE_DATA": "false", // Server Configuration "SERVER_LOG_LEVEL": "INFO", "SERVER_DEBUG": "false" } } } } ``` ## 🛠️ 可用工具 ### SQL Server 工具 - `sql_query` - 执行 SQL Server SELECT 查询 - `sql_execute` - 执行 SQL Server INSERT/UPDATE/DELETE 命令 - `list_tables` - 列出 SQL Server 数据库中的所有表 - `get_table_schema` - 获取 SQL Server 表的结构信息 - `database_reconnect` - 重新连接 SQL Server ### MySQL 工具 - `mysql_query` - 执行 MySQL SELECT 查询 - `mysql_execute` - 执行 MySQL INSERT/UPDATE/DELETE 命令 - `mysql_list_tables` - 列出 MySQL 数据库中的所有表 - `mysql_get_table_schema` - 获取 MySQL 表的结构信息 - `mysql_reconnect` - 重新连接 MySQL ### Redis 工具 - `redis_get` - 获取 Redis 键值 - `redis_set` - 设置 Redis 键值(支持过期时间) - `redis_delete` - 删除 Redis 键 - `redis_keys` - 列出匹配模式的 Redis 键 - `redis_info` - 获取 Redis 服务器信息 - `redis_reconnect` - 重新连接 Redis ### 数据库管理工具 - `database_status` - 检查所有数据库连接状态 ### 文件系统工具 - `read_file` - 读取文件内容 - `write_file` - 写入文件内容 - `list_directory` - 列出目录内容 - `delete_file` - 删除文件(需要确认) - `create_directory` - 创建目录 - `delete_file` - 删除文件(需要确认) - `create_directory` - 创建目录 ## 📋 环境变量 ### SQL Server 配置 - `MSSQL_SERVER` - SQL Server 服务器地址 - `MSSQL_DATABASE` - 数据库名称 - `MSSQL_USERNAME` - 用户名 - `MSSQL_PASSWORD` - 密码 - `MSSQL_USE_WINDOWS_AUTH` - 是否使用 Windows 身份验证 - `MSSQL_PORT` - SQL Server 端口(默认 1433) - `MSSQL_DRIVER` - ODBC 驱动名称 - `MSSQL_CONNECTION_TIMEOUT` - 连接超时时间(秒) - `MSSQL_COMMAND_TIMEOUT` - 命令超时时间(秒) - `MSSQL_POOL_SIZE` - 连接池大小 - `MSSQL_MAX_OVERFLOW` - 最大溢出连接数 - `MSSQL_TRUST_SERVER_CERTIFICATE` - 是否信任服务器证书 - `MSSQL_ENCRYPT` - 是否加密连接 - `MSSQL_MULTIPLE_ACTIVE_RESULT_SETS` - 是否启用多活动结果集 - `MSSQL_APPLICATION_NAME` - 应用程序名称 ### MySQL 配置 - `MYSQL_HOST` - MySQL 服务器地址 - `MYSQL_PORT` - MySQL 端口(默认 3306) - `MYSQL_DATABASE` - MySQL 数据库名称 - `MYSQL_USERNAME` - MySQL 用户名 - `MYSQL_PASSWORD` - MySQL 密码 - `MYSQL_CHARSET` - 字符集(默认 utf8mb4) - `MYSQL_CONNECTION_TIMEOUT` - 连接超时时间(秒) - `MYSQL_POOL_SIZE` - 连接池大小 - `MYSQL_MAX_OVERFLOW` - 最大溢出连接数 ### Redis 配置 - `REDIS_HOST` - Redis 服务器地址 - `REDIS_PORT` - Redis 端口(默认 6379) - `REDIS_DB` - Redis 数据库编号(默认 0) - `REDIS_PASSWORD` - Redis 密码(可选) - `REDIS_SOCKET_TIMEOUT` - Socket 超时时间(秒) - `REDIS_CONNECTION_TIMEOUT` - 连接超时时间(秒) - `REDIS_MAX_CONNECTIONS` - 最大连接数 ### 文件系统配置 - `FS_ALLOWED_PATHS` - 允许访问的路径(`*` 表示所有路径) - `FS_ALLOWED_EXTENSIONS` - 允许的文件扩展名(`*.*` 表示所有文件) - `FS_MAX_FILE_SIZE` - 最大文件大小(字节) - `FS_ENABLE_WRITE` - 是否启用写操作 - `FS_ENABLE_DELETE` - 是否启用删除操作 - `FS_IGNORE_FILE_LOCKS` - 是否忽略文件锁 ## 🔧 开发 ### 本地开发 ```bash # 克隆仓库 git clone https://github.com/ppengit/mcp-db-filesystem.git cd mcp-db-filesystem # 安装依赖 uv sync # 运行服务器 uv run python -m mcp_db_filesystem server ``` ### 测试 ```bash # 运行测试 uv run pytest # 运行特定测试 uv run pytest tests/test_database.py ``` ## 📄 许可证 MIT License - 详见 [LICENSE](LICENSE) 文件。 ## 🤝 贡献 欢迎贡献!请提交 Issue 或 Pull Request。 ## ❓ 常见问题 ### Q: 出现 "No module named 'pyodbc'" 错误 A: 请确保已安装 ODBC Driver for SQL Server,参见上面的前置要求部分。 ### Q: 出现 "Data source name not found" 错误 A: 检查 `DB_SERVER` 配置是否正确,确保 SQL Server 服务正在运行。 ### Q: 连接超时或拒绝连接 A: 1. 检查 SQL Server 是否启用了 TCP/IP 协议 2. 确认防火墙设置允许连接到 SQL Server 端口(默认1433) 3. 验证用户名和密码是否正确 ### Q: 文件系统操作被拒绝 A: 检查 `FS_ALLOWED_PATHS` 和 `FS_ALLOWED_EXTENSIONS` 配置,确保路径和文件类型被允许访问。 ## 📞 支持 - GitHub Issues: [https://github.com/ppengit/mcp-db-filesystem/issues](https://github.com/ppengit/mcp-db-filesystem/issues) ## 🔄 更新日志 ### v1.0.1 - 🎉 首个稳定版本发布 - ✨ 完整的 SQL Server 数据库支持 - 📁 全面的文件系统操作 - 🔒 增强的安全特性 - 📝 改进的错误处理和日志记录 - 🚀 简化的架构,专注于核心功能 --- **注意**: 此版本专注于核心功能的稳定性和可靠性,提供简洁高效的MCP服务器体验。

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ppengit/mcp-db-filesystem'

If you have feedback or need assistance with the MCP directory API, please join our Discord server