mcp_server.cpython-310.pyc•13.4 kB
o
z�g]Q � @ s� d Z ddlZddlZddlZddlmZmZmZmZm Z ddl
mZ ejej
d� e�e�ZddlmZmZmZmZ ddlmZ dd lmZ G d
d� d�ZdS )z�
MCP Server Interface
Implements the Model Context Protocol (MCP) server for the Persistent-Code tool.
Exposes the knowledge graph functionality through well-defined tools.
� N)�Dict�List�Optional�Any�Union)�FastMCP)�level� )�KnowledgeGraph�
ComponentType�ComponentStatus�RelationshipType)�CodeAnalyzer)�ContextAssemblerc @ s� e Zd ZdZdMdedefdd�Zdd � ZdNdefdd
�Z dOdedededededeee f fdd�Z
dPdedee dee dee deee f f
dd�Z dQdedededeeee f deee f f
dd �Z
!dRd"ed#edeee f fd$d%�Z &dSded'eee d(edeee f fd)d*�Z +dTd,ed-eee d.edeee f fd/d0�Z dUded1ed2edeee f fd3d4�Z dVd5eeee f d6ee deee f fd7d8�Z 9 :dWd;ed.edeee f fd<d=�Z >dXd?ed@eee dAedeee f fdBdC�Z >dYdedAedeee f fdDdE�Z &dSdFeee dGedeee f fdHdI�Z dVdedJee dee deee f fdKdL�ZdS )Z�PersistentCodeMCPz/MCP server for Persistent-Code knowledge graph.�defaultN�project_name�storage_dirc C sX || _ |p
tj�t�� d�| _td�| _t||�| _ t
| j �| _t| j �| _
| �� dS )z�Initialize the MCP server.
Args:
project_name: Name of the project
storage_dir: Directory to store persistent data
�storagezpersistent-codeN)r �os�path�join�getcwdr r �mcpr
�knowledge_graphr �
code_analyzerr �context_assembler�_register_tools)�selfr r � r �U/Users/sparshdrolia/Sparsh personal/persistent-code-mcp/persistent_code/mcp_server.py�__init__ s
zPersistentCodeMCP.__init__c C s� | j �� | j� | j �� | j� | j �� | j� | j �� | j� | j �� | j� | j �� | j� | j �� | j� | j �� | j � | j �� | j
� | j �� | j� | j �� | j� | j �� | j
� | j �� | j� dS )zRegister all MCP tools.N)r �tool�
add_component�update_component�add_relationship�
get_component�find_related_components�search_code�
update_status�get_project_status�find_next_tasks�prepare_context�continue_implementation�get_implementation_plan�analyze_code)r r r r r 3 s z!PersistentCodeMCP._register_tools�stdio� transportc C s | j j|d� dS )zqRun the MCP server.
Args:
transport: Transport protocol ('stdio' or 'http')
)r1 N)r �run)r r1 r r r r2 L s zPersistentCodeMCP.run�planned� � code_text�component_type�name�status�description�returnc
� s| �z#t |�}t|�}| jj|||||d�}d|d|� d|� d|� �d�W S ty= } z
dt| �d�W Y d } ~ S d } ~ ww )
a� Add a new code component to the graph.
Args:
code_text: The actual code
component_type: Type of component (file, class, function, method, variable)
name: Name of the component
status: Implementation status (planned, partial, implemented)
description: Semantic description of the component
Returns:
result: Result including component_id
)r7 r6 r5 r8 r9 T�Added z 'z
' with ID )�success�component_id�messageF�r<