Model Control Plane (MCP) Server

  • scripts
import os import requests import json from typing import Dict, Any import sys def test_git_integration(base_url: str = "http://localhost:8000", repo_url: str = None): """Test the Git integration in the MCP server""" if not repo_url: print("Error: Please provide a Git repository URL") print("Usage: python test_git_integration.py <git-repo-url>") sys.exit(1) # Test repository analysis print(f"Analyzing repository: {repo_url}") analyze_payload = { "repo_url": repo_url } analyze_response = requests.post( f"{base_url}/v1/models/git-analyzer/analyze", json=analyze_payload ) if analyze_response.status_code == 200: result = analyze_response.json() print(f"\nRepository Analysis Results:") print(f"URL: {result.get('url')}") print(f"Active Branch: {result.get('active_branch')}") last_commit = result.get('last_commit', {}) print(f"\nLast Commit:") print(f" ID: {last_commit.get('id')}") print(f" Author: {last_commit.get('author')}") print(f" Message: {last_commit.get('message')}") print(f" Date: {last_commit.get('date')}") file_stats = result.get('file_stats', {}) print(f"\nFile Statistics:") print(f" Total Files: {result.get('file_count')}") print(f" Python Files: {file_stats.get('python_files')}") print(f" JavaScript Files: {file_stats.get('javascript_files')}") print(f" HTML Files: {file_stats.get('html_files')}") # Show a preview of the directory structure print("\nDirectory Structure Preview:") structure = result.get('directory_structure', {}) for name, content in list(structure.items())[:5]: # Show first 5 entries print(f" {name}: {'<directory>' if isinstance(content, dict) else '<file>'}") if len(structure) > 5: print(f" ... and {len(structure) - 5} more top-level items") else: print(f"Error analyzing repository: {analyze_response.status_code}") print(analyze_response.text) # Test repository search search_term = "def " # Search for Python function definitions print(f"\nSearching repository for: '{search_term}'") search_payload = { "repo_url": repo_url, "pattern": search_term } search_response = requests.post( f"{base_url}/v1/models/git-analyzer/search", json=search_payload ) if search_response.status_code == 200: result = search_response.json() matching_files = result.get('matching_files', []) print(f"Found {result.get('match_count')} files containing '{search_term}':") for i, file in enumerate(matching_files[:10]): # Show first 10 matches print(f" {i+1}. {file}") if len(matching_files) > 10: print(f" ... and {len(matching_files) - 10} more files") else: print(f"Error searching repository: {search_response.status_code}") print(search_response.text) if __name__ == "__main__": repo_url = None if len(sys.argv) > 1: repo_url = sys.argv[1] test_git_integration(repo_url=repo_url)