数据库连接服务

一个基于.NET 8的控制台应用程序,提供MCP服务器功能,支持多种关系型数据库引擎(SQLite、SQL Server、PostgreSQL和MySQL),通过配置文件快速切换数据库提供程序。

  • by ThomasB98
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 thomasb98/mcpdatabaseserver

使用说明

# MCPDataBaseMSSQLServer

一个小的、自给自足的。NET 8控制台应用程序,承载 模型上下文协议(MCP) 能够与关系数据库通信的服务器。
虽然项目名称引用 数据库,代码已被抽象,因此您只需更改配置文件即可在几个流行的数据库引擎(SQLite、SQL Server、PostgreSQL和MySQL)之间轻松切换,无需更改代码。


项目做什么

  1. 启动MCP服务器 –The Program.cs 入口点连接MCP服务,并通过STDIO公开它们,这样可执行文件就可以嵌入到其他主机进程中(例如编辑器)。
  2. 初始化数据库连接 –启动时,应用程序读取 appsettings.json 以决定哪个ADO。NET提供程序使用并打开连接(SqliteConnection, SqlConnection, NpgsqlConnection 或 MySqlConnection).
  3. 提供基本的日志记录和验证 –通过以下方式启用日志记录 Microsoft.Extensions.Logging 并且从配置中读取可选的查询验证规则。
  4. 为Dapper和MCP的实验提供了一个游乐场 –因为它与框架无关,所以您可以将相同的二进制文件指向不同的数据库后端,以测试行为和性能。

快速启动

先决条件

  • .NET 8 SDK(从下载https://dotnet.microsoft.com)
  • 支持在本地运行(或可通过网络访问)的数据库之一

构建和运行

# Restore packages & compile
$ dotnet build

# Run with default settings (SQLite / sample.db)
$ dotnet run --project MCPDataBaseMSSQLServer.csproj

当应用程序启动时,您应该看到类似于以下内容的日志记录:

info: Program[0]
      Initializing SQLITE database connection
info: Program[0]
      Database connection established successfully

更改数据库提供程序

所有运行时行为都由以下因素驱动 appsettings.json (或特定于环境的变体,如 appsettings.Development.json).

"DatabaseSettings": {
  "Provider": "SQLite",        // <-- Change to SQLServer | PostgreSQL | MySQL
  "CommandTimeout": 30,
  "MaxRetryAttempts": 3
},
"ConnectionStrings": {
  "DefaultConnection": "Data Source=sample.db",
  "SqlServerConnection": "Server=localhost;Database=TestDB;Trusted_Connection=true;TrustServerCertificate=true;",
  "PostgreSqlConnection": "Host=localhost;Database=testdb;Username=postgres;Password=password;",
  "MySqlConnection": "Server=localhost;Database=testdb;Uid=root;Pwd=password;"
}

步骤:

  1. 集 DatabaseSettings:Provider 以达到所需的发动机。
  2. 更新匹配的连接字符串。
  3. 重新运行应用程序。

注意:应用程序在启动时打开连接。如果字符串无效或无法访问服务器,它将立即抛出。


安全和查询验证

这 Security 部分允许您限制MCP服务器可以执行的操作:

"Security": {
  "AllowedCommands": [ "SELECT", "INSERT", "UPDATE", "DELETE" ],
  "RestrictedTables": [ "sys_users", "admin_settings" ],
  "EnableQueryValidation": true
}
  • 允许的命令 –允许使用SQL动词白名单。
  • 受限表格 –不得引用的表的黑名单。
  • 启用查询验证 –打开/关闭验证。

调整这些列表以适应您的环境策略。


您可能需要进行的典型更改

  1. 连接字符串 指向您自己的数据库。
  2. 提供商选择 –从默认SQLite更改为您选择的引擎。
  3. 超时和重试逻辑 –调整 CommandTimeout 和 MaxRetryAttempts 基于工作量。
  4. 日志级别 –设置 Logging.LogLevel.* 控制冗长。
  5. 安全规则 –扩大或收紧 Security 部分。
  6. 包装 -如果你想运行一个单文件可执行文件:
    dotnet publish -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true
    

项目结构

│   Program.cs               # Bootstrap & composition root
│   appsettings.json         # Main configuration file
│   MCPDataBaseMSSQLServer.csproj
└───README.md                # You are here

贡献

欢迎拉取请求!如果您有功能请求或遇到问题,请打开问题。


许可证

该项目在MIT许可证下发布。