repository.ts•4.53 kB
import { Tool } from '@modelcontextprotocol/sdk/types.js';
export const repositoryTools: Tool[] = [
{
name: 'analyze_repository',
description: 'Perform comprehensive analysis of a GitHub repository including structure, dependencies, and refactoring potential',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL (e.g., https://github.com/owner/repo)',
},
options: {
type: 'object',
properties: {
includeTests: {
type: 'boolean',
description: 'Include test files in analysis',
default: true,
},
includeDocs: {
type: 'boolean',
description: 'Include documentation files in analysis',
default: true,
},
maxFiles: {
type: 'number',
description: 'Maximum number of files to analyze',
default: 100,
},
languages: {
type: 'array',
items: { type: 'string' },
description: 'Specific languages to focus on (e.g., ["javascript", "typescript"])',
},
},
},
},
required: ['url'],
},
},
{
name: 'get_repository_info',
description: 'Get basic repository information including metadata, file structure, and key files',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
branch: {
type: 'string',
description: 'Specific branch to analyze (default: main/master)',
},
},
required: ['url'],
},
},
{
name: 'get_file_tree',
description: 'Get complete file tree structure of a repository with optional filtering',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
path: {
type: 'string',
description: 'Specific path to start from (default: root)',
},
maxDepth: {
type: 'number',
description: 'Maximum depth to traverse (default: unlimited)',
},
includeHidden: {
type: 'boolean',
description: 'Include hidden files and directories',
default: false,
},
extensions: {
type: 'array',
items: { type: 'string' },
description: 'Filter by file extensions (e.g., [".js", ".ts"])',
},
},
required: ['url'],
},
},
{
name: 'analyze_dependencies',
description: 'Analyze project dependencies and their relationships',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
includeDevDependencies: {
type: 'boolean',
description: 'Include development dependencies',
default: true,
},
analyzeSecurity: {
type: 'boolean',
description: 'Check for security vulnerabilities',
default: false,
},
suggestAlternatives: {
type: 'boolean',
description: 'Suggest alternative libraries',
default: false,
},
},
required: ['url'],
},
},
{
name: 'get_architecture_overview',
description: 'Get high-level architecture overview of the repository',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
focusAreas: {
type: 'array',
items: { type: 'string' },
description: 'Specific areas to focus on (e.g., ["frontend", "backend", "database"])',
},
},
required: ['url'],
},
},
{
name: 'identify_patterns',
description: 'Identify architectural patterns and design principles used in the repository',
inputSchema: {
type: 'object',
properties: {
url: {
type: 'string',
description: 'GitHub repository URL',
},
patternTypes: {
type: 'array',
items: { type: 'string' },
description: 'Types of patterns to look for (e.g., ["mvc", "observer", "factory"])',
},
},
required: ['url'],
},
},
];