项目简介
SmartHomeTS仓库中的 MCPServer 项目是一个使用 C# 开发的 Model Context Protocol (MCP) 服务器,旨在为 AI 工具提供一种标准化的方式来查询和分析 InfluxDB 时序数据库中的数据。该服务器允许 AI 助手直接访问 InfluxDB 的 Schema 和数据样本,从而更好地辅助用户创建 Flux 查询等任务。
主要功能点
- 资源管理: 通过 MCP 协议将 InfluxDB 时序数据暴露为可访问的资源,包括 Buckets, Measurements, Fields, Tags 和 Sample Data。
- 数据访问能力: 提供 JSON-RPC 接口,允许 MCP 客户端(如 AI 工具)通过标准化的 'GetSchema', 'GetBuckets', 'GetMeasurements', 'GetFields', 'GetTags', 'GetSample' 等方法查询 InfluxDB 的元数据和数据内容。
- C# 实现: 使用 .NET 框架开发,保证了性能和可维护性。
- 易于配置: 通过简单的 JSON 配置文件和环境变量即可完成服务器的注册和 InfluxDB 连接配置。
安装步骤
该仓库本身是一个工具和项目的集合,MCPServer 是其中一个子项目。要使用 MCPServer,您需要:
- 克隆仓库: 从 GitHub 克隆 'SmartHomeTS' 仓库到本地。
git clone https://github.com/tschissler/SmartHomeTS cd SmartHomeTS - 安装 .NET SDK: 确保您的开发环境已安装 .NET SDK (建议 .NET 6 或更高版本)。您可以从 官方 .NET 下载页面 获取并安装。
服务器配置
MCP 服务器需要通过 VS Code 的 'mcp.json' 文件进行注册,以便 MCP 客户端能够发现和连接。以下是一个示例配置,请添加到您的 '.vscode/mcp.json' 文件中(如果不存在则创建):
{ "servers": [ { "id": "csharp-influxdb-server", "name": "C# InfluxDB MCP Server", "command": "dotnet", "args": ["run", "--project", "${workspaceFolder}/MCPServer/MCPServer.csproj"], "transport": "stdio", "supportsDynamicRegistration": true } ] }
参数注释:
- '"id"': 服务器的唯一标识符,可以自定义。
- '"name"': 服务器在 MCP 客户端中显示的名称。
- '"command"': 启动服务器的命令,这里使用 'dotnet' 运行 .NET 项目。
- '"args"': 传递给 'dotnet' 命令的参数,'${workspaceFolder}' 代表当前 VS Code 工作区根目录,指向 'MCPServer.csproj' 项目文件。
- '"transport"': 指定客户端与服务器通信的传输协议,这里使用 'stdio' (标准输入输出)。
- '"supportsDynamicRegistration"': 声明服务器是否支持动态注册功能。
除了 VS Code 配置,您还需要设置以下环境变量来配置 InfluxDB 连接:
- 'INFLUXDB_URL': 您的 InfluxDB 实例的 URL 地址。默认为 '"http://localhost:8086"'。
- 'INFLUXDB_TOKEN': 用于 InfluxDB 身份验证的 Token。
- 'INFLUXDB_ORG': 您的 InfluxDB 组织名称。默认为 '"SmartHome"'。
请根据您的 InfluxDB 实际配置设置这些环境变量。
基本使用方法
-
启动 MCP 服务器: 在 VS Code 中打开 'SmartHomeTS' 仓库,并确保已配置 '.vscode/mcp.json' 和 InfluxDB 环境变量。然后在 VS Code 终端中,导航到 'MCPServer' 目录(如果尚未在根目录),并运行以下命令启动服务器:
dotnet run --project MCPServer.csproj或者,可以直接在 VS Code 中使用配置好的 'mcp.json' 启动,具体操作请参考 MCP 客户端工具的文档。
-
使用 MCP 客户端工具连接服务器: 使用任何支持 MCP 协议的客户端工具(例如,VS Code 搭配 MCP 扩展)连接到 'C# InfluxDB MCP Server' (根据您在 'mcp.json' 中配置的 'name' 属性)。
-
通过 MCP 客户端查询 InfluxDB 数据: 连接成功后,您可以使用客户端提供的 MCP 工具,如 'GetSchema', 'GetBuckets', 'GetMeasurements', 'GetSample' 等,来查询 InfluxDB 的 Schema 信息和数据。
示例 MCP 工具:
- 'GetSchema': 获取 InfluxDB 实例的完整 Schema。
- 'GetBuckets': 列出所有可用的 Buckets。
- 'GetMeasurements': 获取指定 Bucket 中的所有 Measurements。
- 'GetFields': 获取指定 Measurement 的所有 Field Keys。
- 'GetTags': 获取指定 Measurement 的所有 Tag Keys。
- 'GetSample': 获取指定 Measurement 的数据样本。
具体工具的使用方法和参数,请参考您使用的 MCP 客户端工具的文档。
信息
分类
数据库与文件