「幫我查這張表有幾筆資料」——以前你得先開 DBeaver、連上 DB、寫 SQL、跑完之後再把結果貼回去給 Claude。現在?直接在 Claude Code 裡面問,它自己去查。

Database MCP Server 把資料庫變成 Claude Code 的原生工具。這篇走一遍 Oracle 和 SQL Server 兩套的安裝設定,包含 CLI 快速設定和安全注意事項。


環境需求

工具 版本 用途 安裝方式
Java 17+ SQLcl 運行環境 brew install openjdk
Node.js 22+ SQL Server MCP brew install node
SQLcl 25.2+ Oracle MCP Server brew install --cask sqlcl
@bilims/mcp-sqlserver latest SQL Server MCP Server npm install -g @bilims/mcp-sqlserver

Oracle 那一半:安裝 SQLcl

SQLcl 是 Oracle 自家的 CLI 工具,內建 MCP Server 模式——不需要額外裝套件,開 -mcp flag 就能當 MCP Server 跑。

1
2
3
4
5
6
7
8
9
10
11
12
# 1. 安裝
brew install --cask sqlcl

# 2. 把 SQLcl 加到 PATH
export PATH="/opt/homebrew/Caskroom/sqlcl/25.4.2.044.1837/sqlcl/bin:$PATH"

# 3. 確認版本
sql -version
# 應顯示: SQLcl: Release 25.4.2.0

# 4. 儲存連線設定(帳密存到本機,避免每次輸入)
sql -save mcp_db -savepwd your_user/your_pass@//your-oracle-host:1521:DBNAME /nolog

第四步的 -save 把連線存成一個可重複使用的 profile。注意:如果你的 Oracle 環境需要 VPN 才能連,記得先連上。


SQL Server 那一半:@bilims/mcp-sqlserver

這是一個社群維護的 SQL Server MCP Server,npm 一行裝完。

1
2
3
4
5
# 1. 全域安裝
npm install -g @bilims/mcp-sqlserver

# 2. 確認安裝
mcp-sqlserver --help

比 SQLcl 簡單,因為連線資訊是透過環境變數傳入,不需要額外的 profile 設定。


設定 .mcp.json

在專案根目錄建立 .mcp.json,這是 Claude Code 找 MCP Server 的設定檔:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"mcpServers": {
"oracle-db": {
"type": "stdio",
"command": "/opt/homebrew/Caskroom/sqlcl/25.4.2.044.1837/sqlcl/bin/sql",
"args": ["-mcp"],
"env": {}
},
"mssql-db": {
"type": "stdio",
"command": "mcp-sqlserver",
"env": {
"SQLSERVER_HOST": "localhost",
"SQLSERVER_PORT": "1433",
"SQLSERVER_USER": "sa",
"SQLSERVER_PASSWORD": "你的密碼",
"SQLSERVER_DATABASE": "YourDatabase"
}
}
}
}

重點:**這個檔案包含密碼,一定要加進 .gitignore**。


用 CLI 指令快速設定(替代手動編輯)

claude mcp add 可以一行搞定,不用自己改 JSON:

1
2
3
4
5
6
7
8
# SQL Server — 加到本機層級(預設,不會進 Git)
claude mcp add --transport stdio \
--env SQLSERVER_HOST=localhost \
--env SQLSERVER_PORT=1433 \
--env SQLSERVER_USER=sa \
--env SQLSERVER_PASSWORD=你的密碼 \
--env SQLSERVER_DATABASE=YourDatabase \
mssql-db -- npx -y @bilims/mcp-sqlserver

設定範圍怎麼選

範圍 Flag 設定檔位置 進 Git? 場景
專案 --scope project .mcp.json 團隊共用
使用者 --scope user ~/.claude.json 個人所有專案
本機(預設) 不加 ~/.claude.json 內分專案 僅自己、僅此專案

敏感連線字串不要用 --scope project,否則密碼會進版控。用預設的本機範圍或 --scope user 比較安全。


驗證:跑起來了嗎

重啟 Claude Code,輸入 /mcp,應該看到你剛設定的 server 名稱。然後試著問:

  • SQL Server:「查詢 YourDatabase 資料庫有哪些表」
  • Oracle:「列出 YOUR_SCHEMA 中所有表的名稱和筆數」

Claude 會自己用 MCP 去查,然後把結果整理好回覆你。不用寫 SQL——當然,你也可以指定它跑特定的 SQL。


管理指令速查

1
2
3
4
5
6
7
8
# 列出所有 MCP Server
claude mcp list

# 查看特定 MCP 詳情
claude mcp get mssql-db

# 移除
claude mcp remove mssql-db

安全注意事項

幾件事要牢記在心:

@bilims/mcp-sqlserver 和 SQLcl MCP 預設都是 read-only 模式,只能跑 SELECT。這是好事。你不會想讓 AI 在你不注意的時候跑了一個 DELETE FROM users

.mcp.json 如果包含密碼就絕對不能推到 Git。檢查你的 .gitignore 有沒有這行:

1
.mcp.json

最後一個:只連測試環境。正式 DB 的資料太敏感了,即使是 read-only 也不建議開放給 AI 直接存取。如果真的要查 production 的東西,先匯出到測試環境再連。


疑難排除

問題 解法
SQLcl 找不到 確認 PATH 有加上 SQLcl 的安裝路徑
Oracle 連線失敗 確認 VPN 已開啟、連線字串正確
SQL Server 連線失敗 確認 Docker 裡的 SQL Server 在跑:docker ps
MCP server 不顯示 重啟 Claude Code,或 /mcp 檢查狀態
權限不足 確認 DB 帳號有 SELECT 權限

弄了半天連不上的話,90% 的機率是連線字串寫錯或 VPN 忘記開。先確認這兩個,剩下的再慢慢查。

參考來源:Claude Code in Action - Anthropic Academy