Skip to main content
Glama
lin037

MCP Diagnostics

by lin037

getDiagnosticsForFile

Retrieve diagnostic information for a specific file to identify errors, warnings, and hints for code analysis and improvement.

Instructions

获取指定文件的诊断信息。⚠️ 注意:需要使用完整的workspace URI格式,如 "file:///workspace/src/index.ts"。如果不确定URI格式,建议使用 getDiagnosticsForPath 工具。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fileUriYes完整的文件URI,必须使用 file:///workspace/ 开头的格式。示例:file:///workspace/src/index.ts

Implementation Reference

  • Main MCP tool handler for 'getDiagnosticsForFile': validates input, fetches diagnostics via client, handles empty results, formats JSON response, and manages errors.
    private async handleGetDiagnosticsForFile(args: { fileUri: string }) {
      if (!args || !args.fileUri) {
        throw new McpError(ErrorCode.InvalidParams, '缺少必需参数: fileUri');
      }
      try {
        const diagnostics = await this.diagnosticsClient.getDiagnosticsForFile(args.fileUri);
        if (!diagnostics || diagnostics.length === 0) {
          return {
            content: [
              {
                type: 'text',
                text: '未找到指定 URI 的文件或该文件没有诊断信息。',
              },
            ],
          };
        }
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify(diagnostics, null, 2),
            },
          ],
        };
      } catch (error) {
        throw new McpError(
          ErrorCode.InternalError,
          `[handleGetDiagnosticsForFile] ${error instanceof Error ? error.message : String(error)}`
        );
      }
    }
  • src/index.ts:56-69 (registration)
    Registration of the 'getDiagnosticsForFile' tool in the listTools response, including name, description, and input schema definition.
      name: 'getDiagnosticsForFile',
      description: '获取指定文件的诊断信息。⚠️ 注意:需要使用完整的workspace URI格式,如 "file:///workspace/src/index.ts"。如果不确定URI格式,建议使用 getDiagnosticsForPath 工具。',
      inputSchema: {
        type: 'object',
        properties: {
          fileUri: {
            type: 'string',
            description: '完整的文件URI,必须使用 file:///workspace/ 开头的格式。示例:file:///workspace/src/index.ts',
          },
        },
        required: ['fileUri'],
        additionalProperties: false,
      },
    },
  • Core helper function in VSCodeDiagnosticsClient that implements file-specific diagnostics retrieval by fetching all diagnostics and filtering/matching by normalized URI.
    async getDiagnosticsForFile(fileUri: string): Promise<FileDiagnostic[]> {
      const allDiagnostics = await this.getDiagnostics();
      
      // 标准化文件URI,支持多种输入格式
      const normalizedInputUri = this.normalizeFileUri(fileUri);
      
      // 过滤匹配的文件
      const matchedFiles = allDiagnostics.filter(d => {
        const normalizedDiagnosticUri = this.normalizeFileUri(d.uri);
        return normalizedDiagnosticUri === normalizedInputUri || 
               d.uri === fileUri || 
               d.uri.endsWith(fileUri) ||
               normalizedDiagnosticUri.endsWith(normalizedInputUri);
      });
      
      console.error(`查找文件诊断: 输入=${fileUri}, 标准化=${normalizedInputUri}, 找到=${matchedFiles.length}个匹配`);
      
      return matchedFiles;
    }
  • TypeScript interfaces defining the structure of diagnostics data: Diagnostic, FileDiagnostic, and DiagnosticSummary used by the tool.
    /**
     * VS Code 诊断信息接口
     */
    export interface Diagnostic {
      range: {
        start: { line: number; character: number };
        end: { line: number; character: number };
      };
      severity: number; // 1=Error, 2=Warning, 3=Info, 4=Hint
      source: string;
      message: string;
      code?: string | number;
    }
    
    export interface FileDiagnostic {
      uri: string;
      diagnostics: Diagnostic[];
    }
    
    export interface DiagnosticSummary {
      totalFiles: number;
      errors: number;
      warnings: number;
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lin037/mcp-diagnostics-trae'

If you have feedback or need assistance with the MCP directory API, please join our Discord server