mcpField
A
AI Chat Application with RAG and MCP Servers

AI Chat Application with RAG and MCP Servers

本地服务
github.com/garrardkitchenAI 与智能体276 周前更新

关于 AI Chat Application with RAG and MCP Servers

此 .NET Aspire 示例将 AI 聊天与自定义 PDF 数据检索及 MCP 上下文扩展结合,面向探索 RAG 和 MCP 的开发者,并提供 GitLab 组搜索工具,支持 GitHub Models 和 OpenAI 端点。

主要功能

  1. 01基于上传的 PDF 内容对话
  2. 02从 Markdown 创建 PDF
  3. 03通过 MCP 工具搜索 GitLab 组
  4. 04使用 GitHub Models 或 OpenAI 端点

适用场景

  1. 01围绕上传的 PDF 内容提问
  2. 02将 Markdown 转成 PDF 素材
  3. 03按搜索模式查找 GitLab 组
  4. 04探索 .NET Aspire 中的 RAG 和 MCP 配置

MCP 相关

包含一个 HTTP MCP 服务,提供 WhoIs 和 GitLab SearchGroups 工具。聊天应用将这些工具用作上下文扩展。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ai-chat-example": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
启动命令npx -y @modelcontextprotocol/inspector

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@modelcontextprotocol/inspector

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

使用 RAG 和 MCP 服务的 AI 聊天应用

一个 .NET Aspire AI 聊天应用,演示如何使用 AI 语言模型和 Qdrant 作为向量存储,与自定义数据聊天(RAG - 事件驱动)并扩展上下文(MCP 服务)。

说明

此版本尚未部署到 Azure。完成这项小规模工作后,Web 应用(聊天和管理)、MCP 服务和 Functions 应用都将运行在 Azure Container Apps 上。通过 .NET Aspire 集成 Functions 应用仍处于 Preview 阶段,目前唯一支持的部署目标是 ACA(Azure Container App)。


目录


项目概述

使用自定义数据的 AI 聊天应用可让用户通过自己的数据源(RAG 和 MCP 服务)与 AI 模型交互。它支持多个提供商,包括 GitHub Models 和 OpenAI 端点。

功能

  • 使用模板提供的 2 份 PDF 与 AI 模型交互(通过 Microsoft.Extensions.AI.Templates 开箱即用)
  • MCP 服务 WhoIs 工具 new
  • MCP 服务 GitLab SearchGroups 工具(需要 2 项用户机密)new
  • 上传预先编写的 PDF,以便与 AI 模型交互时使用 new
  • 将 Markdown 动态转换为 PDF,以便与 AI 模型交互时使用 new

HLD

README 配图

解决方案结构

MyChatApp.sln
├── MyAdminApp.Web/
├── MyChatApp.AppHost/
├── MyChatApp.ServiceDefaults/
├── MyChatApp.Web/
├── MyFunctionApp/
└── MyMcpServerHttpApi/

先决条件

  • .NET SDK 9.0+

  • Visual Studio 2022+ 或 Visual Studio Code

  • GitHub 账户(已启用 Copilot)

  • 用于运行 Azurite 的 Docker(用于模拟 Azure Blob Storage、队列和 Azure Functions)

  • (可选,如果要使用 MCP Inspector)NodeJS

  • (可选)如果要使用 MCP SearchGroup 工具,需要 GitLab 账户

  • (可选)VS Code 的 C# Dev Kit 扩展

  • (可选,用于创建自己的项目)安装 .NET AI 模板:

    dotnet new install Microsoft.Extensions.AI.Templates
    
  • (可选,用于调试和测试 MCP 服务工具)

    npx @modelcontextprotocol/inspector dotnet run
    
  • (可选,用于确认 Blob 上传和队列)安装 Microsoft Azure Storage Explore

安装

  1. 克隆仓库:
    git clone <your-repo-url>
    cd MyChatApp
    
  2. 还原依赖项:
    dotnet restore
    

配置与机密

运行前,请为所选提供商配置 API 密钥和端点。

使用 GitHub Models

  • 创建不带任何范围或权限的 GitHub 个人访问令牌(PAT)。指南
  • 设置机密:
    dotnet user-secrets set "GitHubModels:Token" "<your-token-value>"
    

使用 OpenAI(通过 Azure)

  • 设置连接字符串:
    dotnet user-secrets set "ConnectionStrings:openai" "Endpoint=https://models.inference.ai.azure.com;Key=<your-token-value>"
    

MyMcpServerHttpApi(GitLab)

  • 设置 GitLab PAT:
    dotnet user-secrets set "GitLab:Token" "<your-token-value>"
    
  • 设置 GitLab 域:
    dotnet user-secrets set "GitLab:Domain" "<your-domain-value>"
    

注意: 用户机密存储在源代码管理之外。在 Visual Studio 中,右键单击项目并选择“Manage User Secrets”即可直接编辑。

使用方法

运行应用程序

  • Visual Studio:
    1. 打开 .sln 文件。
    2. 按 Ctrl+F5 或单击“Start”。
  • Visual Studio Code:
    1. 打开文件夹。
    2. 安装 C# Dev Kit 扩展。
    3. 在 MyChatApp.AppHost 中打开 Program.cs。
    4. 在“Debug”视图中单击“Run”。

信任本地主机证书

如果是首次运行,请信任自签名开发证书:

dotnet dev-certs https --trust

请参阅 .NET Aspire 中不受信任的本地主机证书故障排除。

示例提示词

  1. Markdown 表格

    获取 GitLab 组列表,并以 Markdown 表格展示,包含 name、web_url(显示为“点我”)、parent_id,以及一个表示是否有子组的表情符号。按 parent id 分组。在名称后面的方括号中包含组 id。

    替代文本

  2. 树形结构

    创建一个树形结构,按 parent id 和 group id 嵌套显示各组。

    替代文本

  3. 动态创建 PDF

    原始请求未返回任何内容:

    替代文本

    这里我输入了 Markdown,随后将其转换为 PDF 并上传:

    替代文本

    上传上述 Markdown 后的响应:

    替代文本

  4. PDF 上传

    Druperts

    以下是关于 Druperts 的一些事实。这个列表中可能也有一些与 Drupert 无关的事实:

    • Drupert 是一种虚构生物
    • Sleepert 是用来让你在上课时间睡着的
    • Chicken Jockie!
    • Drupert 的作用是分散注意力
    • Drupert 唯一的目的是逗你笑
    • 如果有人在上课时画了一个 Drupert,而你笑了,老师很可能会批评你
  5. 有趣故事提示词

    给我创作一个关于 Drupert 的有趣故事。不超过 5 句话。结尾必须在新的一行加上一个拥抱脸表情符号。请附上引用

部署

  • 适用标准的 .NET 部署方式。若部署到云端或容器中,请确保通过环境变量或安全存储设置机密。

故障排除

  • 不受信任的证书: 请参阅故障排除指南。
  • 未找到机密: 请确保已按照上述说明为每个项目设置用户机密。
  • Microsoft Azure Storage Explorer 安装后可查看 Blob 和队列: 替代文本
  • MCP Explorer 运行后可调试和测试 MCP 服务: 替代文本

常见问题

问:我可以使用其他 AI 提供商吗? 答:可以,按需扩展配置和服务即可。

问:机密存储在哪里? 答:用户机密存储在源代码管理之外的本地 secrets.json 文件中。

贡献

欢迎贡献!请提交问题或拉取请求。对于重大更改,请先提交问题,讨论你的提案。

许可证

本项目基于 MIT License 授权。详情请参阅 LICENSE。

致谢

联系方式

如需支持或咨询,请提交问题,或通过 GitHub 联系维护者。

参考资料

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。