#!/usr/bin/env node
* HarmonyOS MCP Server
*
* 为 HarmonyOS 系统软件开发和商用提供智能文档检索服务。
* 基于本地 10,846 篇华为官方 HarmonyOS NEXT 开发文档构建。
*
* 工具列表:
* harmonyos_search_docs — 全文搜索知识库
* harmonyos_get_document — 获取文档内容
* harmonyos_list_kits — 列出所有 Kit
* harmonyos_get_kit_docs — 获取 Kit 下的文档
* harmonyos_get_api_ref — 查找 @ohos.* API
* harmonyos_search_index — 搜索文档路径索引
* harmonyos_setup — 下载/管理知识库
*
* 传输:stdio(本地 spawn 模式)
*/
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { getTotalDocCount, getReferencesRoot } from './lib/knowledge.js';
import { registerSearchTool } from './tools/search.js';
import { registerGetDocTool } from './tools/document.js';
import { registerListKitsTool, registerGetKitDocsTool } from './tools/kits.js';
import { registerApiRefTool, registerSearchIndexTool } from './tools/api-ref.js';
import { registerGraphSearchTool, registerGraphNeighborsTool, registerGraphPathTool, registerGraphStatsTool } from './tools/graph.js';
import { registerSetupTool } from './tools/setup.js';
import { registerPrompts } from './prompts.js';
const server = new McpServer({
name: 'harmonyos-mcp-server',
version: '1.0.0',
});
registerSearchTool(server);
registerGetDocTool(server);
registerListKitsTool(server);
registerGetKitDocsTool(server);
registerApiRefTool(server);
registerSearchIndexTool(server);
registerGraphSearchTool(server);
registerGraphNeighborsTool(server);
registerGraphPathTool(server);
registerGraphStatsTool(server);
registerSetupTool(server);
registerPrompts(server);
async function main() {
const transport = new StdioServerTransport();
console.error('╔══════════════════════════════════════════════════╗');
console.error('║ HarmonyOS MCP Server v1.0.0 ║');
console.error('║ 华为鸿蒙开发文档知识库 ║');
console.error('╚══════════════════════════════════════════════════╝');
console.error(` 知识库路径: ${getReferencesRoot()}`);
console.error(` 文档总数: ${getTotalDocCount().toLocaleString()}`);
console.error(` 工具数量: 11`);
console.error('');
await server.connect(transport);
}
main().catch(error => {
console.error('Fatal error:', error);
process.exit(1);
});