183 lines
7.2 KiB
JavaScript
183 lines
7.2 KiB
JavaScript
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
// ===== 分析工具 =====
|
|
import { codeReviewTool, executeCodeReview } from "./tools/codeReview.js";
|
|
import { codeWriteTool, executeCodeWrite } from "./tools/codeWrite.js";
|
|
import { codeDebugTool, executeCodeDebug } from "./tools/codeDebug.js";
|
|
import { docWriteTool, executeDocWrite } from "./tools/docWrite.js";
|
|
// ===== 本地执行工具(自动化闭环核心) =====
|
|
import { execCommandTool, executeExecCommand } from "./tools/execCommand.js";
|
|
import { lintCheckTool, executeLintCheck } from "./tools/lintCheck.js";
|
|
import { autoFixTool, executeAutoFix } from "./tools/autoFix.js";
|
|
import { runTestsTool, executeRunTests } from "./tools/runTests.js";
|
|
import { buildProjectTool, executeBuildProject } from "./tools/buildProject.js";
|
|
import { projectScanTool, executeProjectScan } from "./tools/projectScan.js";
|
|
import { readFileTool, executeReadFile, writeFileTool, executeWriteFile, patchFileTool, executePatchFile, } from "./tools/fileOps.js";
|
|
// ===== 高级工具(极致版) =====
|
|
import { gitOpsTool, executeGitOps } from "./tools/gitOps.js";
|
|
import { depManageTool, executeDepManage } from "./tools/depManage.js";
|
|
import { searchCodeTool, executeSearchCode } from "./tools/searchCode.js";
|
|
import { devServerTool, executeDevServer } from "./tools/devServer.js";
|
|
import { envCheckTool, executeEnvCheck } from "./tools/envCheck.js";
|
|
import { workflowTool, executeWorkflow } from "./tools/workflow.js";
|
|
// ===== 资源 =====
|
|
import { codingStandardsResource, getCodingStandards, } from "./resources/codingStandards.js";
|
|
import { debugGuideResource, getDebugGuide } from "./resources/debugGuide.js";
|
|
import { docTemplatesResource, getDocTemplates, } from "./resources/docTemplates.js";
|
|
// ========== MCP Server ==========
|
|
const server = new Server({ name: "dev-assistant", version: "2.0.0" }, { capabilities: { tools: {}, resources: {} } });
|
|
// ========== 注册工具列表 ==========
|
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
tools: [
|
|
// 分析工具
|
|
codeReviewTool, codeWriteTool, codeDebugTool, docWriteTool,
|
|
// 本地执行工具(自动化闭环核心)
|
|
execCommandTool, lintCheckTool, autoFixTool, runTestsTool,
|
|
buildProjectTool, projectScanTool,
|
|
readFileTool, writeFileTool, patchFileTool,
|
|
// 高级工具(极致版)
|
|
gitOpsTool, depManageTool, searchCodeTool,
|
|
devServerTool, envCheckTool, workflowTool,
|
|
],
|
|
}));
|
|
// ========== 工具执行 ==========
|
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
const { name, arguments: args } = request.params;
|
|
try {
|
|
let result;
|
|
switch (name) {
|
|
// 分析工具
|
|
case "code_review":
|
|
result = await executeCodeReview(args);
|
|
break;
|
|
case "code_write":
|
|
result = await executeCodeWrite(args);
|
|
break;
|
|
case "code_debug":
|
|
result = await executeCodeDebug(args);
|
|
break;
|
|
case "doc_write":
|
|
result = await executeDocWrite(args);
|
|
break;
|
|
// 本地执行工具
|
|
case "exec_command":
|
|
result = await executeExecCommand(args);
|
|
break;
|
|
case "lint_check":
|
|
result = await executeLintCheck(args);
|
|
break;
|
|
case "auto_fix":
|
|
result = await executeAutoFix(args);
|
|
break;
|
|
case "run_tests":
|
|
result = await executeRunTests(args);
|
|
break;
|
|
case "build_project":
|
|
result = await executeBuildProject(args);
|
|
break;
|
|
case "project_scan":
|
|
result = await executeProjectScan(args);
|
|
break;
|
|
// 文件操作
|
|
case "read_local_file":
|
|
result = await executeReadFile(args);
|
|
break;
|
|
case "write_local_file":
|
|
result = await executeWriteFile(args);
|
|
break;
|
|
case "patch_file":
|
|
result = await executePatchFile(args);
|
|
break;
|
|
// 高级工具
|
|
case "git_ops":
|
|
result = await executeGitOps(args);
|
|
break;
|
|
case "dep_manage":
|
|
result = await executeDepManage(args);
|
|
break;
|
|
case "search_code":
|
|
result = await executeSearchCode(args);
|
|
break;
|
|
case "dev_server":
|
|
result = await executeDevServer(args);
|
|
break;
|
|
case "env_check":
|
|
result = await executeEnvCheck(args);
|
|
break;
|
|
case "workflow":
|
|
result = await executeWorkflow(args);
|
|
break;
|
|
default:
|
|
return {
|
|
content: [{ type: "text", text: `未知工具: ${name}` }],
|
|
isError: true,
|
|
};
|
|
}
|
|
return { content: [{ type: "text", text: result }] };
|
|
}
|
|
catch (error) {
|
|
return {
|
|
content: [
|
|
{
|
|
type: "text",
|
|
text: `执行出错: ${error.message}`,
|
|
},
|
|
],
|
|
isError: true,
|
|
};
|
|
}
|
|
});
|
|
// ========== 注册资源列表 ==========
|
|
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
|
|
resources: [codingStandardsResource, debugGuideResource, docTemplatesResource],
|
|
}));
|
|
// ========== 资源读取 ==========
|
|
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
const { uri } = request.params;
|
|
switch (uri) {
|
|
case codingStandardsResource.uri:
|
|
return {
|
|
contents: [
|
|
{
|
|
uri,
|
|
mimeType: "text/markdown",
|
|
text: getCodingStandards(),
|
|
},
|
|
],
|
|
};
|
|
case debugGuideResource.uri:
|
|
return {
|
|
contents: [
|
|
{
|
|
uri,
|
|
mimeType: "text/markdown",
|
|
text: getDebugGuide(),
|
|
},
|
|
],
|
|
};
|
|
case docTemplatesResource.uri:
|
|
return {
|
|
contents: [
|
|
{
|
|
uri,
|
|
mimeType: "text/markdown",
|
|
text: getDocTemplates(),
|
|
},
|
|
],
|
|
};
|
|
default:
|
|
throw new Error(`未知资源: ${uri}`);
|
|
}
|
|
});
|
|
// ========== 启动 ==========
|
|
async function main() {
|
|
const transport = new StdioServerTransport();
|
|
await server.connect(transport);
|
|
console.error("Dev Assistant MCP Server v2.0.0 (19 tools) running on stdio");
|
|
}
|
|
main().catch((err) => {
|
|
console.error("Fatal:", err);
|
|
process.exit(1);
|
|
});
|
|
//# sourceMappingURL=index.js.map
|