关于 C# based Model Context Procotol (MCP) Server for ADO.NET
这是一个通过 ADO.NET 访问数据库的 C# MCP 服务,包含 Virtuoso 专用查询与 AI 功能,适用于需要检查数据库结构和执行 SQL 的 MCP 客户端。
主要功能
- 01列出数据库架构和表
- 02查看表列与键
- 03按名称搜索表
- 04执行 SQL 和存储过程
- 05以 JSONL 或 Markdown 返回结果
- 06运行 Virtuoso SPARQL 和 SPASQL
适用场景
- 01浏览已连接的数据库架构
- 02查询前检查表定义
- 03执行 SQL 并格式化结果
- 04使用 SPARQL 或 SPASQL 查询 Virtuoso
MCP 相关
向 MCP 客户端提供数据库架构、查询和 Virtuoso 专用操作工具。文档包含 Claude Desktop 的配置示例。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
适用于 ADO.NET 的 OpenLink MCP 服务
一个轻量级的基于 C# 的 MCP(模型上下文协议)服务,适用于 ADO.NET。此服务兼容 Virtuoso。目前,此服务仅在 Windows 和 Linux 上的 .NET 运行时中成功通过测试。
功能
- 获取架构:从已连接的数据库中获取并列出所有架构名称。
- 获取表:检索指定架构或所有架构的表信息。
- 描述表:生成表结构的详细描述,包括:
- 列名和数据类型
- 是否可为空
- 主键和外键
- 搜索表:根据名称子字符串筛选并检索表。
- 执行存储过程:连接到 Virtuoso 时,执行存储过程并检索结果。
- 执行查询:
- JSONL 结果格式:针对结构化响应进行了优化。
- Markdown 表格格式:适合用于报告和可视化。
前置条件
- NET.8
- 运行以下命令,检查项目文件(
MCP_AdoNet_Server.csproj)是否与您的环境兼容:dotnet run --framework net8.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
- 运行以下命令,检查项目文件(
- NET.9
- 运行以下命令,检查项目文件(
MCP_AdoNet_Server.csproj)是否与您的环境兼容:dotnet run --framework net9.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj - 如有需要,您也可以尝试运行以下命令重新构建
MCP_AdoNet_Server.csproj:dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj dotnet build /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
- 运行以下命令,检查项目文件(
安装
克隆此仓库:
git clone https://github.com/OpenLinkSoftware/mcp-adonet-server.git
cd mcp-adonet-server
环境变量
修改 .env,覆盖以下默认值,以满足您的偏好。
ADO_URL="HOST=localhost:1111;Database=Demo;UID=demo;PWD=demo"
API_KEY=xxx
配置
对于 Claude Desktop 用户:
将以下内容添加到 claude_desktop_config.json:
-
NET.8
{ "mcpServers": { "my_database": { "command": "dotnet", "args": ["run", "--framework", "net8.0", "--project", "/path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj"], "env": { "ADO_URL": "HOST=localhost:1111;Database=Demo;UID=demo;PWD=demo", "API_KEY": "sk-xxx" } } } } -
NET.9
{ "mcpServers": { "my_database": { "command": "dotnet", "args": ["run", "--framework", "net9.0", "--project", "/path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj"], "env": { "ADO_URL": "HOST=localhost:1111;Database=Demo;UID=demo;PWD=demo", "API_KEY": "sk-xxx" } } } }
使用方法
提供的工具
安装成功后,MCP 客户端应用程序将可以使用以下工具。
概览
| name | description |
|---|---|
ado_get_schemas | 列出连接的数据库管理系统(DBMS)可访问的数据库架构。 |
ado_get_tables | 列出与所选数据库架构关联的表。 |
ado_describe_table | 提供与指定数据库架构关联的表的描述,包括列名、数据类型、空值处理、自增、主键和外键信息 |
ado_filter_table_names | 根据 q 输入字段中的子字符串模式,列出与所选数据库架构关联的表。 |
ado_query_database | 执行 SQL 查询并以 JSONL 格式返回结果。 |
ado_execute_query | 执行 SQL 查询并以 JSONL 格式返回结果。 |
ado_execute_query_md | 执行 SQL 查询并以 Markdown 表格格式返回结果。 |
ado_spasql_query | 执行 SPASQL 查询并返回结果。 |
ado_sparql_query | 执行 SPARQL 查询并返回结果。 |
ado_virtuoso_support_ai | 与 Virtuoso Support Assistant/Agent 交互——这是 Virtuoso 专属的 LLM 交互功能。 |
详细说明
-
ado_get_schemas- 从已连接的数据库中检索并返回所有架构名称的列表。
- 输入参数:
url(字符串,可选):ADO.NET URL 连接字符串。
- 返回包含架构名称的 JSON 字符串数组。
-
ado_get_tables- 检索并返回指定架构中表的信息列表。如果未提供架构,则使用连接的默认架构。
- 输入参数:
schema(字符串,可选):用于筛选表的数据库架构。默认为连接的默认架构。url(字符串,可选):ADO.NET URL 连接字符串。
- 返回包含表信息的 JSON 字符串(例如,
TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE)。
-
ado_filter_table_names- 筛选并返回名称包含指定子字符串的表的信息。
- 输入参数:
q(字符串,必填):要在表名中搜索的子字符串。schema(字符串,可选):用于筛选表的数据库架构。默认为连接的默认架构。url(字符串,可选):ADO.NET URL 连接字符串。
- 返回包含匹配表信息的 JSON 字符串。
-
ado_describe_table- 检索并返回特定表的列详细信息。
- 输入参数:
schema(字符串,必填):包含该表的数据库架构名称。table(字符串,必填):要描述的表名。url(字符串,可选):ADO.NET URL 连接字符串。
- 返回描述表列的 JSON 字符串(例如,
COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULLABLE)。
-
ado_query_database- 执行标准 SQL 查询,并以 JSON 格式返回结果。
- 输入参数:
query(字符串,必填):要执行的 SQL 查询字符串。url(字符串,可选):ADO.NET URL 连接字符串。
- 以 JSON 字符串形式返回查询结果。
-
ado_query_database_md- 执行标准 SQL 查询,并将结果格式化为 Markdown 表格。
- 输入参数:
query(字符串,必填):要执行的 SQL 查询字符串。url(字符串,可选):ADO.NET URL 连接字符串。
- 以 Markdown 表格字符串形式返回查询结果。
-
ado_query_database_jsonl- 执行标准 SQL 查询,并以 JSON Lines(JSONL)格式返回结果(每行一个 JSON 对象)。
- 输入参数:
query(字符串,必填):要执行的 SQL 查询字符串。url(字符串,可选):ADO.NET URL 连接字符串。
- 以 JSONL 字符串形式返回查询结果。
-
ado_spasql_query- 执行 SPASQL(SQL/SPARQL 混合)查询并返回结果。这是 Virtuoso 专属功能。
- 输入参数:
query(字符串,必填):SPASQL 查询字符串。max_rows(数字,可选):要返回的最大行数。默认为20。timeout(数字,可选):查询超时时间,单位为毫秒。默认为30000。url(字符串,可选):ADO.NET URL 连接字符串。
- 返回底层存储过程调用的结果(例如,
Demo.demo.execute_spasql_query)。
-
ado_sparql_query- 执行 SPARQL 查询并返回结果。这是 Virtuoso 专属功能。
- 输入参数:
query(字符串,必填):SPARQL 查询字符串。format(字符串,可选):所需的结果格式。默认为'json'。timeout(数字,可选):查询超时时间,单位为毫秒。默认为30000。url(字符串,可选):ADO.NET URL 连接字符串。
- 返回底层函数调用的结果(例如,
"UB".dba."sparqlQuery")。
-
ado_virtuoso_support_ai- 调用 Virtuoso 专属的 AI 助手函数,并传入提示词和可选的 API 密钥。这是 Virtuoso 专属功能。
- 输入参数:
prompt(字符串,必填):传递给 AI 函数的提示词文本。api_key(字符串,可选):AI 服务的 API 密钥。默认为"none"。url(字符串,可选):ADO.NET URL 连接字符串。
- 返回 AI Support Assistant 函数调用的结果(例如,
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI)。
故障排除
便于故障排除:
-
安装 MCP Inspector:
npm install -g @modelcontextprotocol/inspector -
根据使用的 .Net 版本启动 Inspector:
dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj npx @modelcontextprotocol/inspector dotnet run --framework net8.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj -e ADO_URL="HOST=localhost:1111;Database=Demo;UID=username;PWD=password" -e API_KEY="sk-xxx-myapikey-xxx"-- or --
dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj npx @modelcontextprotocol/inspector dotnet run --framework net9.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj -e ADO_URL="HOST=localhost:1111;Database=Demo;UID=username;PWD=password" -e API_KEY="sk-xxx-myapikey-xxx"
访问提供的 URL,以排查服务交互问题。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
