数据库查询客户端

一个使用HTTP传输的GO MCP客户端,支持从服务器采样请求,用于数据库查询和管理。

  • by PawelK2012
  • Go
  • 云端部署
  • 更新于
在 GitHub 查看 PawelK2012/mcp-client

使用说明

mcp客户端

GO MCP客户端使用HTTP传输,支持来自服务器的采样请求。

概述

该客户:

  • 通过HTTP/HTTPS传输连接到MCP服务器
  • 在初始化过程中声明采样能力
  • 处理来自服务器的传入采样请求
  • 使用模拟LLM生成响应(替换为真正的LLM集成)

用法

  1. 启动支持采样的MCP服务器
  2. 要使用以下示例,您可以使用 数据库查询服务器
  3. 更新中的服务器URL main.go:
httpClient, err := client.NewStreamableHttpClient(
    "http://your-server:port", // Replace with your server URL
)
  1. 启动客户端
go run .

示例

将以下示例复制并粘贴到 callTool() 在 main.go 文件

execute_query示例

execute_query示例-SELECT*FROM表名

# Execute a simple SELECT query
echo '{
  "method": "tools/call",
  "params": {
    "name": "execute_query",
    "arguments": {
      "database": "primary",
      "query": "SELECT * FROM movies",
      "parameters": {},
      "format": "json",
      "limit": 100
    }
  }
}' | mcp-database-query-server

此映射到 mcp。调用工具请求

args := make(map[string]interface{})
args["database"] = "postgres"
args["query"] = "SELECT * FROM movies"
args["format"] = "json"
args["limit"] = 100

request := mcp.CallToolRequest{
		Params: mcp.CallToolParams{
			Name: "execute_query",
			Arguments: args,
		},
}

execute_query示例-SELECT*FROM表名


args := make(map[string]interface{})
par["database"] = "postgres"
args["query"] = `CREATE TABLE IF NOT EXISTS movies (
		id SERIAL PRIMARY KEY,
		title VARCHAR(200),
		genre VARCHAR(250),
		year int,
		created TIMESTAMP
)`

request := mcp.CallToolRequest{
		Params: mcp.CallToolParams{
			Name: "execute_query",
			Arguments: args,
		},
}

execute_query示例-SELECT*FROM表名


args := make(map[string]interface{})
par["database"] = "postgres"
args["query"] = `INSERT INTO movies.comedy (title, genre, year)
			VALUES
			('Magellan', 'comedy', 2022),
			('movie 34', 'comedy ', 2012),
			('Mrxxx', 'romantic comedy ', 2011);`

request := mcp.CallToolRequest{
		Params: mcp.CallToolParams{
			Name: "execute_query",
			Arguments: args,
		},
}

execute_准备好的示例


args := make(map[string]interface{})
var tables []string
args["statement_name"] = "SELECT CustomerName, Address FROM customers WHERE Country =$1 AND City LIKE $2"
par := []any{"UK", "L%"}
args["parameters"] = par
args["format"] = "json"

request := mcp.CallToolRequest{
		Params: mcp.CallToolParams{
			Name: "execute_prepared",
			Arguments: args,
		},
}

get_schema示例

# Execute a simple SELECT query
echo '{
  "method": "tools/call",
  "params": {
    "name": "get_schema",
    "arguments": {
      "database": "primary",
      "tables": ["customers"],
      "detailed": true,
    }
  }
}' | mcp-database-query-server

此映射到 mcp。调用工具请求

args := make(map[string]interface{})
var tables []string
t := append(tables, "customers")
t := append(tables, "comedy")
args["database"] = "sql"
args["tables"] = t
args["detailed"] = true

request := mcp.CallToolRequest{
		Params: mcp.CallToolParams{
			Name: "get_schema",
			Arguments: args,
		},
}

get_connection_status示例

# Execute a simple SELECT query
echo '{
  "method": "tools/call",
  "params": {
    "name": "get_connection_status",
    "arguments": {
      "database": "the name of the DB you want to check the status for",
      "tables": ["customers"],
      "detailed": true,
    }
  }
}' | mcp-database-query-server

此映射到 mcp。调用工具请求

args := make(map[string]interface{})
args["database"] = "mcp-query-db"

request := mcp.CallToolRequest{
		Params: mcp.CallToolParams{
			Name: "get_connection_status",
			Arguments: args,
		},
}