AdoMcp

io.github.John0King由 GitHub 帳號 John0King 發布v1.5.0更新於 Oct 30, 2026

Database MCP server for schema discovery, comments, and SQL queries.

已驗證STDIO僅桌面資料庫開發者工具

概覽

AI 產生的概覽

本機資料庫 MCP 伺服器,讓助理探索 SQL Server、MySQL、PostgreSQL、SQLite 與 Oracle 的結構、註解與索引,並執行 SQL。

可以做什麼
  • 列出、新增與移除資料庫連線
  • 尋找資料表、檢視表、預存程序、函式、觸發程序、序列與同義字
  • 讀取欄位型別、可為空性、主鍵、預設值與註解
  • 檢視資料表索引
  • 執行唯讀 SELECT/WITH 查詢並以 CSV 回傳結果
  • 僅在明確開啟後執行寫入 SQL
適用情境
適合讓助理探索不熟悉的資料庫、說明資料表結構與註解、在調校查詢前檢查索引,或對本機或可連線的資料庫執行唯讀查詢。
執行需求
透過 dnx 以本機 stdio 程序執行(NuGet 套件 AdoMcp),需要 .NET 10 SDK,首次執行需連線至 NuGet。資料庫連線可在 appsettings 檔案、使用者目錄的 .adomcp.json、ADOMCP_ 前綴環境變數或 User Secrets 中設定,也可在對話中用 add_connection 新增。可選的 HTTP 模式監聽 localhost:5100。
安裝前請注意
連線字串含有資料庫憑證,請勿提交到 Git,建議改用環境變數或密鑰管理。寫入預設關閉,需透過 AllowAnySql、ADOMCP_ALLOWANYSQL 環境變數或 --allow-any-sql 參數開啟;開啟後 execute_sql 可修改資料。唯讀檢查是保守的詞法過濾而非完整 SQL 解析,無法辨識資料庫函式內部的副作用。執行階段新增的連線在重新啟動後不會保留。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 AdoMcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

AdoMcp

[NuGet] [License: MIT]

一个开箱即用的数据库 Model Context Protocol (MCP) Server,让 AI Agent 能够发现数据库对象、理解表结构和注释、检查索引,并安全地执行 SQL。

A ready-to-run database MCP server for schema discovery, comments, indexes, and controlled SQL execution.

支持 SQL Server、MySQL/MariaDB、PostgreSQL、SQLite 和 Oracle;插件核心遵循 Agent Plugins(Open Plugin Spec)1.0,可用于 Codex、Claude Code、GitHub Copilot App 和 Copilot CLI。

Server name 和 version 由 MCP SDK 根据程序集元数据自动生成;Server 会在 MCP initialize/server/discover 响应中返回根级 instructions,指导客户端先定位连接与对象、只用 query_sql 读数据,并仅在明确授权后调用 execute_sql。

功能

Tool说明
list_connections列出已配置的数据库连接
add_connection在当前进程中新增或替换连接
remove_connection删除运行时新增的连接
list_objects查找表、视图、存储过程、函数、触发器、序列和同义词等对象
get_table_schema获取字段、类型、可空性、主键、默认值和注释
get_table_indexes获取表索引
query_sql执行只读 SQL,返回 CSV
execute_sql执行写 SQL;默认禁用,需显式启用
数据库驱动注释支持
SQL ServerMicrosoft.Data.SqlClientMS_Description 扩展属性
MySQL / MariaDBMySqlConnectorTABLE_COMMENT / COLUMN_COMMENT
PostgreSQLNpgsqlobj_description / col_description
SQLiteMicrosoft.Data.SqliteSQLite 无原生注释
OracleOracle.ManagedDataAccess.CoreALL_TAB_COMMENTS / ALL_COL_COMMENTS,包含 PUBLIC synonym

前置要求

  • .NET 10 SDK
  • 使用插件时,客户端需要允许启动本地 dnx 进程

无需提前安装 AdoMcp。插件和示例配置使用 dnx -y AdoMcp,首次运行时会从 NuGet 获取包。

插件安装

仓库根目录的 plugin.json、mcp.json 和 skills/adomcp/SKILL.md 是通用的 Agent Plugins 1.0 插件核心。.codex-plugin/、.claude-plugin/、.mcp.json 和 marketplace 文件是客户端兼容与分发入口。插件默认以 stdio 启动 AdoMcp,且不会开启写 SQL。

Codex

仓库包含 .codex-plugin/plugin.json,可被 Codex 插件市场或本地插件源使用。若只需要 MCP Server,可直接添加:

bash
codex mcp add adomcp -- dnx -y AdoMcp

Claude Code(cc)

text
/plugin marketplace add John0King/AdoMCP/plugin install adomcp@adomcp-plugins

安装后执行 /reload-plugins;使用 /mcp 检查 adomcp 是否已连接。

GitHub Copilot CLI

可以从 GitHub 仓库直接安装:

bash
copilot plugin install John0King/AdoMCPcopilot mcp get adomcp

也可以通过 marketplace 安装:

bash
copilot plugin marketplace add John0King/AdoMCPcopilot plugin install adomcp@adomcp-plugins

GitHub Copilot App

在 Copilot App 中打开 Customize → Plugins,添加 John0King/AdoMCP marketplace,然后安装 AdoMcp。本仓库的 .github/plugin/marketplace.json、plugin.json、.mcp.json 和 skill 会作为一个插件加载。

Copilot App/云端 Agent 必须能运行 .NET 10 和访问 NuGet,才能启动这个本地 stdio MCP Server。若运行环境不允许本地进程,请先自行以 HTTP 模式部署 AdoMcp,再按下文配置远程地址。

直接配置 MCP

适用于任何支持本地 MCP 的客户端:

json
{  "mcpServers": {    "adomcp": {      "command": "dnx",      "args": ["-y", "AdoMcp"]    }  }}

HTTP 模式需先启动服务:

bash
dnx -y AdoMcp -- --http

然后连接端点:

json
{  "mcpServers": {    "adomcp": {      "url": "http://localhost:5100/mcp"    }  }}

数据库连接配置

AdoMcp 按以下顺序加载配置,后面的来源覆盖前面的来源:

  1. 应用目录中的 appsettings.json
  2. appsettings.{Environment}.json
  3. 用户配置 ~/.adomcp.json(Windows 为 %USERPROFILE%\.adomcp.json)
  4. ADOMCP_ 前缀的环境变量
  5. .NET User Secrets
  6. 命令行 --allow-any-sql(覆盖全局 AllowAnySql,影响动态连接及未单独设置权限的静态连接)

最常用的方式是在用户目录创建 .adomcp.json:

json
{  "AllowAnySql": false,  "Databases": [    {      "Name": "mydb",      "DbType": "PostgreSql",      "ConnectionString": "Host=localhost;Database=app;Username=postgres;Password=***;",      "AllowAnySql": false,      "Description": "Local development database"    }  ]}

DbType 可选值:SqlServer、MySql、PostgreSql、Sqlite、Oracle。

静态连接显式设置 AllowAnySql 时使用自身的值;省略时继承全局 AllowAnySql。动态连接也继承全局值,不能单独指定。全局值可在配置文件、ADOMCP_ALLOWANYSQL 环境变量或启动参数中设置,命令行优先,默认 false。权限在进程启动时确定;list_connections 的 canWrite 列显示当前生效的权限。

也可以不创建配置文件,让 Agent 在会话中调用 add_connection。动态连接继承启动时确定的全局 AllowAnySql,仅在当前 AdoMcp 进程中有效,重启后不会保留。同名动态连接会覆盖静态连接,直到移除该动态连接。

不要把真实连接字符串提交到 Git。生产环境建议使用环境变量、User Secrets 或客户端的密钥管理能力。

运行模式

默认使用 stdio;stdout 仅传输 MCP JSON-RPC,日志写入 stderr。

bash
# 默认 stdiodnx -y AdoMcp
# 显式 stdio(兼容旧配置)dnx -y AdoMcp -- --stdio
# HTTP,默认监听 http://localhost:5100/mcpdnx -y AdoMcp -- --http
# 安装为全局 .NET tooldotnet tool install -g AdoMcpadomcp

写 SQL 安全开关

execute_sql 按目标连接判断。静态连接可以显式设置 "AllowAnySql": true 开启写入,或省略该项来继承全局设置;动态连接始终继承全局设置。例如:

bash
dnx -y AdoMcp -- --allow-any-sqldnx -y AdoMcp -- --http --allow-any-sql

也可以在配置文件中设置顶层 "AllowAnySql": true,或设置环境变量 ADOMCP_ALLOWANYSQL=true。运行中修改配置文件不会改变当前进程的写入权限。查询和写入使用同一个连接配置,由服务端执行入口检查 SQL 与写入权限。

query_sql 接受单条 SELECT 或 WITH 查询,可带一个末尾分号。检查时跳过字符串、引用标识符和普通注释,拦截写入、DDL、过程调用与事务控制关键字;例如 SELECT 'DELETE' 可以执行,SELECT ... INTO ...、修改数据的 CTE 和多语句批次会被拒绝。MySQL/MariaDB 可执行注释及引用文本中的反斜杠会因语义不明确而被拒绝。此检查是保守的词法过滤,并不解析完整 SQL,也无法识别数据库函数内部的副作用。未引用的名称若命中拦截关键字,也会被拒绝。

内部职责与验证

  • ConnectionRegistry:保存启动配置快照、管理动态连接覆盖,并返回包含生效写入策略的配置副本。
  • DatabaseService:获取元数据、执行查询或写入;查询调用 SqlQueryGuard,写入检查当前配置的权限。
  • DbConnections:创建和打开 ADO.NET 连接,打开失败时释放连接;调用方负责正常路径的释放。
  • IDbProvider:保留各数据库的元数据查询实现。
  • DatabaseTools:MCP 参数及 CSV/JSON 输出,将异常转成工具错误,取消请求则继续传播。

执行 dotnet test AdoMcp.slnx 验证 SQL 过滤、连接配置覆盖与权限、取消行为及 SQLite 查询/写入/元数据调用。

Agent 推荐工作流

  1. 用 list_connections 确认连接。
  2. 缺少连接时用 add_connection 添加。
  3. 用 list_objects 确认 schema、对象类型和对象名。
  4. 用 get_table_schema 查看结构和注释。
  5. 涉及键或性能时用 get_table_indexes。
  6. 只读验证使用 query_sql。
  7. 仅在用户明确授权且 Server 开启写入能力时使用 execute_sql。

Oracle 中未带 owner 的对象可能是 synonym,应先通过 list_objects 解析真实 schema。

环境变量

变量说明
ADOMCP_MODEstdio 或 http
ADOMCP_URLSHTTP 监听地址,例如 http://0.0.0.0:5100
ADOMCP_ALLOWANYSQL动态连接及未单独设置权限的静态连接的全局写入默认值,默认 false
ADOMCP_DATABASESJSON 编码的 Databases 数组

MCP Registry

AdoMcp 已注册到官方 MCP Registry,Server name 为 io.github.John0King/adomcp。

License

MIT

來源:README.md,提交 b9f9b6d

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:該軟體包類型無法在沙箱中執行。

版本歷史

3
  1. v1.5.0最新Oct 30, 2026
  2. v1.4.0Sep 26, 2026
  3. v1.3.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分