项目简介

BestBot (原名 BestPracticesMcp) 是一个轻量级的Model Context Protocol (MCP) 服务器,它利用Azure Functions技术,将精心策划、权威可靠的编程语言和框架最佳实践内容,以结构化的方式提供给大型语言模型 (LLM) 客户端。该项目通过MCP工具触发器,将存储在Markdown文件中的最佳实践作为可访问的资源进行暴露。它设计简洁,易于贡献和部署。

主要功能点

  • 多语言最佳实践库:托管C#、Python、JavaScript、Go、Rust、Java、Swift、Kotlin、Elixir、PHP、R、Vue 3、React、.NET Aspire、C++ 和 Flutter 等多种编程语言和框架的最佳实践指南,内容以Markdown文件形式组织。
  • MCP 工具集成:通过MCP工具触发器,LLM客户端可以调用特定的工具函数(例如,'get_typescript_best_practices'),以获取所需语言的最佳实践内容。
  • 轻量级文件缓存:内置进程级文件缓存机制,有效减少磁盘读取,提高内容响应速度。当底层Markdown文件更新时,缓存会自动失效并重新加载。
  • 集中式日志:采用统一的、源生成 (source-generated) 的日志接口,确保日志消息在所有工具中保持一致性,便于监控和故障排查。
  • 简易扩展性:提供清晰的模式,开发者可以轻松地添加新的语言或框架的最佳实践内容及相应的MCP工具。
  • Azure 部署支持:集成了Azure Developer CLI (azd) 和Bicep模板,支持快速部署到Azure,并可选择与Azure API Management (APIM) 集成,提供更安全、可管理的API接口。

安装步骤

该项目需要 .NET 9 SDK。本地运行还需要 Azure Functions Core Tools。

  1. 克隆仓库

    git clone https://github.com/boclifton-MSFT/BestBot.git
    cd BestBot
  2. 恢复依赖并构建项目

    dotnet restore
    dotnet build BestPracticesMcp.sln
  3. 格式化代码(可选,但推荐)

    dotnet format BestPracticesMcp.sln
    dotnet format BestPracticesMcp.sln --verify-no-changes
  4. 本地运行(需要 Azure Functions Core Tools)

    • 创建一个 'local.settings.json' 文件(可参考项目文档中的最小示例)。
    • 启动 Functions 宿主:
      func host start
    • 宿主通常会在 'http://localhost:7071' 端口启动。
  5. 部署到 Azure(可选,需要 Azure Developer CLI (azd))

    • 确保已安装 'azd' 并已认证到目标 Azure 订阅。
    • 从仓库根目录运行 'azd up',这将自动部署所需的 Azure 资源和函数应用。

服务器配置(供MCP客户端使用,本地开发示例)

MCP客户端可以通过以下JSON格式配置连接到本地运行的BestBot MCP服务器。请注意,'command' 和 'args' 参数用于在本地启动服务器进程。对于部署到Azure的服务器,客户端通常直接连接到其HTTP/SSE/WebSocket端点,而不是通过 'command' 启动。

{
  // 服务器的名称,用于客户端识别
  "server name": "BestBot本地MCP服务器",
  
  // 用于在本地启动BestBot服务器的命令行工具
  // 假设Azure Functions Core Tools已安装并配置在系统PATH中
  "command": "func", 
  
  // 传递给command的参数,这里是启动Functions宿主并监听默认端口7071
  "args": [
    "host",
    "start",
    "--port",
    "7071" 
  ],
  
  // 简要描述此服务器的用途
  "description": "提供编程语言和框架的最佳实践,作为本地MCP服务器。"
}

基本使用方法

当BestBot服务器成功运行后(无论是本地还是Azure上),MCP客户端可以通过JSON-RPC协议调用其暴露的工具函数来获取信息。

例如,要获取TypeScript的最佳实践,MCP客户端可以向服务器发送一个JSON-RPC请求,调用名为 'get_typescript_best_practices' 的工具。服务器会执行相应的逻辑,读取 'Languages/Typescript/typescript-best-practices.md' 文件(或从缓存中获取),并将Markdown格式的内容作为响应返回给客户端。

每个支持的语言都有一个对应的 'get_<language>_best_practices' 工具方法可供调用。客户端需要了解这些工具的名称和用途才能正确地进行交互。

信息

分类

开发者工具