D365FO X++ MCP 服务器(代码完成与元数据查询)

使用说明内容(Markdown格式)

  • 项目简介

    • 本仓库实现了一个基于 Model Context Protocol (MCP) 的后端服务器,用于为 LLM 客户端提供 X++ 相关的上下文信息与功能,包括符号检索、类/表信息、方法/字段补全、代码生成、以及资源与提示的支持等。
    • 服务器核心通过 JSON-RPC 与 MCP 客户端对话,处理初始化、工具调用、资源查询、以及提示等请求。
  • 主要功能点

    • MCP 协议核心:实现 initialize、tools/list、tools/call、resources/list、prompts/list 等 MCP 请求的处理逻辑,以及标准的 JSON-RPC 响应格式。
    • 符号与元数据:使用 SQLite (FTS5) 索引 X++ 符号,支持快速全文检索、前缀检索、按类型筛选等。
    • 工具集成:xpp_search、xpp_search_extensions、xpp_get_class、xpp_get_table、xpp_complete_method、xpp_generate_code 等工具实现,提供文本输出或结构化信息供 LLM 使用。
    • 资源与提示:提供 X++ 类源代码资源、Code Review / Explain Class 等提示/ prompts 的实现。
    • 代码生成与扩展:支持 xpp_generate_code 的模板生成功能,以及 xpp_complete_method 的调用补全等特性。
    • 元数据提取与存储:包含 extract-metadata、build-database、下载数据库等脚本,与 Azure Blob 存储和 Redis 缓存的集成选项。
    • 可选组件:Redis 缓存、Azure Blob 存储、REST/Express 传输层、健康检查等,提升性能与可运维性。
  • 安装步骤

    • 环境要求:Node.js 22.x 及以上,TypeScript 5.x 及以上。
    • 依赖安装:npm install
    • 运行前置任务(可选但推荐):
      • 提取元数据: npm run extract-metadata
      • 构建数据库: npm run build-database
    • 启动服务器(本地开发模式): npm run dev
    • 运行后访问 API: http://localhost:8080/mcp(默认端口,若使用 .env 进行覆盖,请以实际端口为准)
  • 服务器配置(供 MCP 客户端参考的描述性信息)

    • MCP 客户端在连接时需要指定服务器的启动信息(名称、命令与参数等),以下为示意性配置描述:
    • 服务器名称:xpp-code-completion-server
    • 启动命令:npm run dev
    • 参数:无特定参数,端口及环境变量通过 .env/配置管理
    • 描述:该配置用于 MCP 客户端连接并与服务器进行工具调用、资源请求、提示交互等。
  • 基本使用方法

    • 连接与会话:客户端通过 MCP 的初始化流程建立会话,服务器在每次请求中维持会话标识,并通过响应返回会话信息。
    • 调用示例(简述,不含代码):客户端可通过 tools/call 调用 xpp_search、xpp_get_class、xpp_get_table、xpp_complete_method、xpp_generate_code 等工具,获取文本输出或结构化结果并供后续 LLM 处理。
    • 资源与提示:客户端可查询 resources/list 获取可用资源,使用 prompts/list 获取可用提示,并通过 prompts/get 请求获取提示内容。
    • 性能与可扩展性:可配置 Redis 缓存、FTS 索引、分布式部署等,以提升响应速度和并发能力。
  • 运行与运维要点

    • 数据库初始化与元数据提取是进入正式工作流的前置步骤,确保本地数据库和/或 Blob 存储中的元数据就绪。
    • 通过健康端点 /health 监控服务状态与符号数量。
    • 生产环境可结合 Azure Blob、Redis 等云服务实现缓存与元数据云端同步。
  • 备注

    • 本实现包含测试、CI/CD、以及示例脚本等辅助内容,但核心功能点为 MCP 服务器端的请求处理、工具执行、资源/提示渲染等能力,满足 MCP 服务器的服务端职责。

服务器信息