Token导航 LogoToken导航TokenDH.com
Crime Solver AI logo
数据服务未说明官方级别未说明来源级核验

Crime Solver AI

MCP Server

一个可重用、生产就绪的MSSQL模型上下文协议(MCP)服务器实现,通过MCP标准提供只读数据库访问。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
数据分析C#本地部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

coburk

提供方

coburk

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP MSSQL服务器

一种可重用的、生产就绪的MSSQL模型上下文协议(MCP)服务器实现,用于通过MCP标准公开只读数据库访问。

概述

此库提供了一个完整的MCP服务器实现,该实现:

  • 通过以下方式公开数据库架构 schema.describe 工具
  • 通过以下方式列出可用工具 tools.list 方法
  • 通过执行只读SELECT查询 sql.execute_readonly 工具
  • 强制执行查询级安全性(拒绝DML/DDL语句)
  • 跟踪性能指标和查询执行时间
  • 支持ILogger的全面日志记录
  • 遵循JSON-RPC 2.0协议标准

安装

添加到您的项目中:

dotnet add package MCP.MSSQL.Server

或者通过NuGet包管理器:

Install-Package MCP.MSSQL.Server

快速开始

1.在依赖注入中注册

using MCP.MSSQL.Server;

var builder = WebApplication.CreateBuilder(args);

// Register MCP Server
var connectionString = builder.Configuration.GetConnectionString("CrimeSolverReadOnly");
var queryTimeout = builder.Configuration.GetValue("MCP:QueryTimeoutSeconds", 30);
var maxRowLimit = builder.Configuration.GetValue("MCP:MaxRowLimit", 1000);

builder.Services.AddSingleton(sp =>
    new MSSQLMCPServer(
        connectionString,
  queryTimeout,
        maxRowLimit,
    sp.GetRequiredService>()));

var app = builder.Build();

2.配置应用程序设置

添加到 appsettings.json:

{
  "ConnectionStrings": {
    "CrimeSolverReadOnly": "Server=yourserver;Database=yourdb;User Id=readonly_user;Password=***;Encrypt=true;TrustServerCertificate=false;"
  },
  "MCP": {
    "QueryTimeoutSeconds": 30,
    "MaxRowLimit": 1000
  }
}

3.暴露MCP端点

// MCP Invoke Endpoint
app.MapPost("/mcp/invoke", async (MCPRequest request, MSSQLMCPServer server) =>
{
    var response = await server.ProcessRequestAsync(request);
    return Results.Json(response);
});

// Health check endpoint
app.MapGet("/health", () => Results.Ok(new { status = "healthy" }));

app.Run();

使用示例

发现可用工具

curl -X POST https://localhost:5000/mcp/invoke \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "tools.list",
    "params": {}
  }'

检索数据库架构

curl -X POST https://localhost:5000/mcp/invoke \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "2",
    "method": "schema.describe",
    "params": {}
  }'

执行只读查询

curl -X POST https://localhost:5000/mcp/invoke \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "3",
    "method": "sql.execute_readonly",
 "params": {
      "query": "SELECT TOP 10 * FROM Cases WHERE CaseStatus = 'Active'"
    }
  }'

API 参考

MCP方法

工具列表

宣传可用的数据库工具。

答复:

{
  "tools": [
    {
      "name": "schema.describe",
      "description": "Returns database schema information...",
      "inputSchema": []
    },
    {
      "name": "sql.execute_readonly",
   "description": "Executes read-only SELECT queries...",
    "inputSchema": [...]
    }
  ]
}

方案描述

检索完整的数据库架构,包括表、列和关系。

答复:

{
  "databaseName": "YourDatabase",
  "retrievedAt": "2024-01-01T12:00:00Z",
  "tables": [
    {
      "tableName": "Cases",
      "columns": [...],
      "foreignKeys": [...],
      "rowCount": 1000
    }
  ],
  "summary": "Retrieved schema for 10 tables..."
}

sql.execute_readonly

执行只读SELECT查询。

参数:

  • query (string,必填):要执行的SELECT查询

答复:

{
  "success": true,
  "query": "SELECT * FROM Cases",
  "rowCount": 100,
  "maxRowLimit": 1000,
  "isTruncated": false,
  "rows": [...],
  "columns": ["CaseID", "CaseName", ...],
  "executionTimeMs": 45,
"summary": "Query returned 100 row(s)..."
}

安全特性

  • 只读强制:拒绝INSERT、UPDATE、DELETE、CREATE、DROP、ALTER、EXEC、GRANT、REVOKE
  • 查询验证:在执行之前验证所有查询
  • 连接级别安全:使用专用只读数据库用户
  • 超时保护:可配置查询超时(默认值:30秒)
  • 行限制:可配置的最大返回行数(默认值:1000)
  • 全面日志记录:所有操作都记录了执行指标

配置选项

选项默认值描述
ConnectionString-SQL Server连接字符串(必须使用只读用户)
QueryTimeout秒数30最大查询执行时间(秒)
MaxRowLimit1000每次查询返回的最大行数

错误处理

服务器返回JSON-RPC 2.0错误响应:

{
  "jsonrpc": "2.0",
  "id": "1",
  "error": {
    "code": -32602,
    "message": "Only SELECT queries are allowed. DML/DDL statements are not permitted."
  }
}

错误代码

  • -32601:未找到方法
  • -32602:无效参数
  • -32603:内部服务器错误

最佳实践

  1. 使用专用只读数据库用户:创建仅具有SELECT权限的SQL Server用户
  2. 启用加密:设置 Encrypt=true 在连接字符串中
  3. 监控日志:启用 Debug 日志记录 MCP.MSSQL.Server 命名空间
  4. 设置适当的超时:调整 QueryTimeoutSeconds 基于您的查询模式
  5. 调整行限制:设置 MaxRowLimit 基于客户端能力和网络条件

许可证

麻省理工学院

支持

有关问题、功能请求或贡献,请访问存储库。

目录标签

目录标签

数据分析C#本地部署数据库访问只读查询MCP协议SQLServerJSON-RPC

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP