SQLite数据库服务

MCP SQLite Server是一个基于Go的MCP服务器实现,通过标准化的JSON-RPC协议封装SQLite数据库,允许MCP客户端(如Claude Desktop)与SQLite进行交互。

  • by cnosuke
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 cnosuke/mcp-sqlite

使用说明

MCP SQLite服务器

MCP SQLite Server是一个基于Go的MCP服务器实现,它封装了SQLite数据库,允许MCP客户端(例如Claude Desktop)通过标准化的JSON-RPC协议与SQLite交互。

特性

  • MCP合规性: 根据MCP规范,为工具执行提供基于JSON-RPC的接口。
  • SQLite操作: 支持创建表、描述表模式、列出表以及执行读写查询等操作。

需求

  • Docker(推荐)

对于当地发展:

  • 转到1.24或更高版本
  • SQLite(如果不存在,将创建数据库文件)
  • GCC和开发工具(用于CGO编译)

使用Docker(推荐)

docker pull cnosuke/mcp-sqlite:latest

# Run with default SQLite database
docker run -i --rm cnosuke/mcp-sqlite:latest

# Run with a mounted SQLite database
docker run -i --rm -v /path/to/your/db:/app/sqlite.db cnosuke/mcp-sqlite:latest

使用Claude Desktop(Docker)

要使用Docker与Claude Desktop集成,请在您的 claude_desktop_config.json 文件:

{
  "mcpServers": {
    "sqlite": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "cnosuke/mcp-sqlite:latest"]
    }
  }
}

对于具有卷装载的持久存储:

{
  "mcpServers": {
    "sqlite": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-v", "/path/to/your/db:/app/sqlite.db", "cnosuke/mcp-sqlite:latest"]
    }
  }
}

构建和运行(Go Binary)

或者,您可以直接构建并运行Go二进制文件:

# Build the server
make bin/mcp-sqlite

# Run the server
./bin/mcp-sqlite server --config=config.yml

与Claude Desktop一起使用(Go Binary)

要使用Go二进制文件与Claude Desktop集成,请在您的 claude_desktop_config.json 文件:

{
  "mcpServers": {
    "sqlite": {
      "command": "./bin/mcp-sqlite",
      "args": ["server", "--config", "config.yml"],
      "env": {
        "LOG_PATH": "",
        "SQLITE_PATH": "/path/to/your/sqlite.db"
      }
    }
  }
}

此配置将MCP SQLite服务器注册到Claude Desktop。通过设置 LOG_PATH 对于空字符串,服务器将只输出致命错误,确保非关键日志不会干扰通过stdio传输的MCP协议消息。

配置

服务器通过YAML文件配置(默认值: config.yml).例如:

log: 'mcp-sqlite.log'
debug: false

sqlite:
  path: './sqlite.db'

配置选项也可以通过环境变量指定:

  • LOG_PATH:日志文件的路径(空字符串禁用文件日志记录)
  • DEBUG:启用调试日志记录(true/false)
  • SQLITE_PATH:SQLite数据库文件的路径

日志记录

日志被定向到由指定的文件 log 配置选项或 LOG_PATH 环境变量。当此值为空时,只有致命错误才会输出到stderr,所有其他日志都会被抑制。

重要提示: 当使用带有stdio传输的MCP服务器时,不得将日志记录定向到标准输出,因为这会干扰MCP协议通信。对于Claude Desktop的使用,建议设置 LOG_PATH 变为空字符串。

Docker注意事项: 默认情况下,Docker镜像禁用文件日志记录,因为容器日志通常从stdout/stderr收集。

MCP服务器使用情况

MCP客户端通过发送JSON-RPC请求来执行各种工具,从而与服务器进行交互。支持以下MCP工具:

  • create_table: 执行a CREATE TABLE 声明。
  • describe_table: 检索特定表的架构详细信息。
  • list_tables: 返回SQLite数据库中所有表的列表。
  • read_query: 执行 SELECT 查询并返回JSON格式的结果。
  • write_query: 执行写入查询(例如 INSERT, UPDATE,或 DELETE).

命令行参数

启动服务器时,您可以指定各种设置:

./bin/mcp-sqlite server [options]

选项:

  • --config, -c:配置文件的路径(默认:“config.yml”)。

贡献

欢迎投稿!请分叉存储库并提交改进或bug修复的pull请求。对于重大变化,先打开一个问题来讨论你的想法。

许可证

该项目根据MIT许可证获得许可。

作者 cnosuke( x.com/cnosuke )