We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/smhajimirzaei/QUACK-MCP-SERVER'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
server.cpython-310.pyc•5.24 kB
o
�,i, � @ s� d Z ddlZddlmZmZmZmZ ddlmZ ddl m
Z
ddlmZm
Z
ddlmZmZ dd lmZ dd
lmZ ddlmZ ddlmZ e�d
�Zedede
eeef fdd��Zdefdd�ZdS )z&
MCP server implementation for Quack.
� N)�Dict�Any�Optional�List)�asynccontextmanager)�
AsyncIterator)�FastMCP�Context� )�JobType� JobStatus)�
JobManager)�
JobFactory)�LintJobProcessor)�StaticAnalysisJobProcessorZquack�server�returnc C s: �t � }t�d� z
d|iV W t�d� dS t�d� w )z�
Manage server startup and shutdown lifecycle.
Args:
server: The FastMCP server instance
Yields:
Dictionary with initialized resources
z [Server] Job manager initialized�job_managerz[Server] Shutting downN)r
�logger�info)r r � r �quack/server.py�server_lifespan s �
r c s t dtd�} t�tjt� � t�tjt� � | � � dt
dt
dtdtt
t
f fdd��� | � � dt
dtdtt
t
f f� fd d
��}| � � dt
dtdtt
t
f f� fdd��}| � � d
t
dtdtt
t
f fdd��}| � � ddtdtt
dtt
t
f fdd��}| S )zp
Create and configure the Quack MCP server
Returns:
Configured FastMCP server instance
ZQuack)Zlifespan�job_type�code�ctxr c
� s� �|j jd }zt�| �}W n! ty/ } zt�d| � �� dt|�d�W Y d}~S d}~ww |�||�}t� d|j
j� d|j� dt
|�� d �� d
|j|j
jd| � d�d
�S )a%
Submit Python code for analysis
Args:
job_type: Type of analysis to perform ("lint" or "static_analysis")
code: Python code content to analyze
Returns:
Dictionary with job ID for checking results later
r z[Server] Invalid job type: �error��status�messageN�[�:z] Submitted new job (z bytes)ZacceptedzCode submitted for z&. Use get_job_results to check status.)r �job_idr r )�request_context�lifespan_contextr �from_string�
ValueErrorr �warning�strZ
submit_jobr r �value�id�len)r r r r �
job_type_enum�e�jobr r r �submit_code; s$ ����(
�z"create_server.<locals>.submit_codec � � �� d| |�I dH S )z�
Submit Python code for linting analysis
Args:
code: Python code content to analyze
Returns:
Dictionary with job ID for checking results later
ZlintNr �r r �r/ r r �submit_code_for_linting` � �z.create_server.<locals>.submit_code_for_lintingc � r0 )z�
Submit Python code for static type analysis
Args:
code: Python code content to analyze
Returns:
Dictionary with job ID for checking results later
Zstatic_analysisNr r1 r2 r r �submit_code_for_static_analysisn r4 z6create_server.<locals>.submit_code_for_static_analysisr"