AI工具服务器

一个基于ASP.NET Core的MCP服务器,为AI客户端提供随机数生成和网络搜索等工具。

  • by wlanboy
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 wlanboy/mcp-dotnet-websearch

使用说明

mcp网络服务器

基于ASP的MCP(Model Context Protocol)服务器。带HTTP传输的NET Core。服务器为AI客户端提供各种工具。

工具

GetRandomNumber

生成最小值和最大值之间的随机数。

参数 类型 标准 描述
min int 0 最小值(包括)
max int 100 最大值 (独家)

搜索网页

通过DuckDuckGo进行网络搜索,并返回标题,URL和文本片段的顶级结果。结果将被过滤到可配置的域白名单中。

参数 类型 标准 描述
query string — 搜索词
maxResults int 5 结果的最大数量

配置

允许进行网页搜索的域名将在 appsettings.json 维护:

{
  "WebSearch": {
    "AllowedDomains": [
      "learn.microsoft.com",
      "github.com",
      "devblogs.microsoft.com",
      "..."
    ]
  }
}

如果列表为空,则允许所有域名。

开始

dotnet run --project mcp-dotnet-server.csproj

服务器正在启动 http://localhost:3001.

注意: 由于文件夹都是一个 .sln- 以及一个 .csproj文件必须包含 dotnet明确指定项目(或解决方案),否则MSBuild将破坏 MSB1011 ab。

建筑

dotnet publish mcp-dotnet-server.csproj -c Release -o ./publish

在文件夹中创建可运行的自维护文物 ./publish足以进行纯粹的编译器检查,而无需工件 dotnet build mcp-dotnet-server.csproj.

更新依赖关系

查看过时的 NuGet 软件包:

dotnet list mcp-dotnet-server.csproj package --outdated

将单个软件包更新到最新版本:

dotnet add mcp-dotnet-server.csproj package ModelContextProtocol.AspNetCore

dotnet add package 没有版本信息,自动下载最新可用版本。然后检查该项目是否仍在建设中:

dotnet build mcp-dotnet-server.csproj

客户端配置

VS代码/GitHub副本(mcp.json):

{
  "servers": {
    "mcp-dotnet-server": {
      "type": "http",
      "url": "http://localhost:3001"
    }
  }
}

克劳德代码(~/.claude/settings.json):

{
  "mcpServers": {
    "mcp-dotnet-server": {
      "url": "http://localhost:3001"
    }
  }
}

LM工作室(~/.lmstudio/mcp.json):

{
  "mcpServers": {
    "mcp-dotnet-server": {
      "url": "http://localhost:3001"
    }
  }
}

容器构建

该项目已迁移到 Native AOT (PublishAot, InvariantGlobalization 为了 .csproj).Docker文件构建一个原生的,自维护的Linux二进制(linux-musl-x64)在运行期间不需要。NET 运行时映像,仅 dotnet/runtime-deps.

docker build -t mcp-dotnet-server .
docker run -d -p 3001:3001 --name mcp-dotnet-server mcp-dotnet-server

此后,服务器在 http://localhost:3001 可达(见 test.sh 对运行中的容器进行端到端烟雾测试)。

关键字(原生AOT,linux-musl-x64)

metric 值。 | --- | --- | |图像修饰|约125 MB| 启动时间(容器启动到) Application started)|~180-200毫秒|

启动时间可以复制 测量启动sh:

./measure-startup.sh mcp-dotnet-server:latest 5

该脚本重新启动容器多次,并测量容器之间的差异。 docker inspect-StartedAt 以及时间印章 Application started- 那是个木匠

相比之下,没有AOT(JIT)的独立单文件部署的图像大小约为177 MB,并且通过JIT热启动节省了较长的时间。

形成

创建此项目的分步指南可在 第一步.md.