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 服务器的服务端职责。