Spaces:
Running
Running
""" | |
MCP server exposing Code Chunker functionality. | |
This server provides a tool to chunk code into smaller, logical segments | |
and a resource to list supported file extensions. | |
""" | |
from mcp.server.fastmcp import FastMCP | |
from CodeParser import CodeParser | |
from Chunker import CodeChunker | |
from typing import Dict, List, Optional | |
# Create an MCP server with the name "Code Chunker Server" | |
mcp = FastMCP("Code Chunker Server") | |
def chunk_code(code: str, file_extension: str, token_limit: int = 25) -> Dict[int, str]: | |
""" | |
Chunks the provided code into logical segments based on token limit. | |
Args: | |
code: The source code to be chunked | |
file_extension: The file extension (e.g., 'py', 'js', 'ts', 'css') | |
token_limit: Target size of each chunk in tokens (default: 25) | |
Returns: | |
A dictionary with chunk numbers as keys and code segments as values | |
""" | |
# Create a code chunker for the specified file extension | |
chunker = CodeChunker(file_extension=file_extension) | |
# Process the code through the chunker | |
chunks = chunker.chunk(code, token_limit) | |
return chunks | |
def get_supported_file_types() -> str: | |
""" | |
Returns a list of file extensions supported by the Code Chunker. | |
Returns: | |
A string containing the list of supported file extensions | |
""" | |
# Get the file extensions from CodeParser's language extension map | |
code_parser = CodeParser() | |
supported_extensions = list(code_parser.language_extension_map.keys()) | |
# Format the list for display | |
extension_list = ", ".join(supported_extensions) | |
return f"Supported file extensions: {extension_list}" | |
if __name__ == "__main__": | |
# Run the server when the script is executed directly | |
mcp.run() |