Skip to main content
Glama

Statelessor MCP Server

MCP (Model Context Protocol) server for analyzing .NET and Java projects for stateful code patterns. Integrates with Amazon Q Developer.

Installation

npm install -g statelessor-mcp

Quick Start

1. Configure Amazon Q

Create or edit ~/.aws/amazonq/mcp-config.json:

{
  "mcpServers": {
    "statelessor": {
      "command": "npx",
      "args": ["statelessor-mcp"],
      "env": {
        "STATELESSOR_API_URL": "https://statelessor-api.port2aws.pro"
      }
    }
  }
}

2. Restart Amazon Q in your IDE

3. Use in Amazon Q Chat

You: Analyze my local project at /path/to/my-dotnet-app

You: Analyze https://github.com/myorg/java-project

You: Explain how to fix Session State issues

You: Generate a bash script for analyzing .NET projects

Available Tools

  • analyze_git_repository - Analyze Git repos for stateful patterns

  • analyze_local_project - Analyze local project directories

  • generate_analysis_script - Generate bash/PowerShell scripts

  • get_project_findings - Retrieve historical findings

  • explain_remediation - Get remediation guidance

Configuration

Environment variables:

  • STATELESSOR_API_URL - API endpoint (default: http://localhost:3001)

  • STATELESSOR_API_TIMEOUT - Request timeout in ms (default: 300000)

Additional details

Read USER_GUIDE.md for more details Read INTEGRATION.md as well for additional information

License

MIT

Available Tools

5 tools
analyze_git_repositoryC

Analyze a Git repository for stateful code patterns in .NET or Java projects

ParametersJSON Schema
NameRequiredDescriptionDefault
gitUrlYesGit repository URL (HTTPS or SSH)
sshKeyIdNoSSH key ID for private repositories (optional)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions what gets analyzed (stateful code patterns in .NET/Java), it doesn't describe what the analysis produces, whether it's destructive, what permissions are needed, rate limits, or output format. This leaves significant behavioral gaps for a tool with no structured safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for the tool's complexity and front-loads the core purpose immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the analysis produces, what 'stateful code patterns' entails, or how results are returned. Given the lack of structured fields, the description should provide more context about the tool's behavior and outputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., doesn't clarify what 'stateful code patterns' means in relation to the gitUrl parameter). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: analyzing Git repositories for stateful code patterns in specific tech stacks (.NET/Java). It specifies the verb 'analyze' and resource 'Git repository' with scope 'stateful code patterns', but doesn't explicitly differentiate from sibling tools like 'analyze_local_project' or 'get_project_findings'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. The description doesn't mention sibling tools like 'analyze_local_project' (for local projects) or 'explain_remediation' (for remediation guidance), leaving the agent to guess when this specific Git repository analysis tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_local_projectC

Analyze a local project directory for stateful code patterns

ParametersJSON Schema
NameRequiredDescriptionDefault
projectPathYesAbsolute path to project directory

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the analysis purpose but doesn't describe what the tool actually does behaviorally—e.g., whether it scans files, runs static analysis, returns a report, has side effects, requires specific permissions, or handles errors. For a tool with zero annotation coverage, this leaves significant gaps in understanding its operation and safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and target, making it easy to parse. Every part of the sentence contributes meaning, earning its place with zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (analysis of code patterns), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'analyze' entails behaviorally, what 'stateful code patterns' means, or what the output looks like (e.g., a report, list of findings). For a tool with no structured data to clarify these aspects, the description should provide more context to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the single parameter 'projectPath' documented as 'Absolute path to project directory'. The description adds no additional parameter semantics beyond implying analysis of a 'local project directory', which aligns with the schema. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('analyze') and target ('local project directory'), with the specific purpose of detecting 'stateful code patterns'. It distinguishes from siblings like 'analyze_git_repository' by specifying 'local' vs. 'git', but doesn't fully differentiate from 'get_project_findings' which might retrieve results. The purpose is specific but sibling differentiation could be more explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'analyze_git_repository' for remote repositories or 'get_project_findings' for retrieving results. It implies usage for local projects but lacks explicit when/when-not instructions or prerequisites, leaving the agent to infer context without clear direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_remediationC

Get detailed remediation guidance for a specific stateful pattern

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesPattern category (e.g., "Session State", "Static Mutable Field")

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but lacks details on how it behaves: it doesn't specify if this is a read-only operation, what the output format is (e.g., text, structured data), whether it requires authentication, or any rate limits. The description is minimal and doesn't compensate for the absence of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to understand at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of providing remediation guidance and the absence of both annotations and an output schema, the description is incomplete. It doesn't explain what the output will look like (e.g., step-by-step instructions, code snippets), any dependencies on other tools, or error handling. For a tool that likely returns detailed guidance, more context is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the single parameter 'category' well-documented in the schema as 'Pattern category (e.g., "Session State", "Static Mutable Field")'. The description adds no additional meaning beyond this, such as explaining what constitutes a valid category or providing more examples. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'detailed remediation guidance for a specific stateful pattern', making the purpose understandable. It doesn't explicitly distinguish from sibling tools like 'analyze_git_repository' or 'get_project_findings', which appear to be analysis tools rather than remediation guidance tools, but the distinction is somewhat implied by the different focus areas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing prior analysis results, or specify scenarios where this tool is appropriate compared to siblings like 'generate_analysis_script' or 'get_project_findings'. Usage is implied only by the tool's name and purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_analysis_scriptC

Generate a bash or PowerShell script for offline analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptTypeYesType of script to generate

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool generates a script but doesn't explain what the script does, how it's used for 'offline analysis,' whether it requires specific inputs or permissions, or what the output format is. This leaves critical behavioral traits unspecified, making it inadequate for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence: 'Generate a bash or PowerShell script for offline analysis.' It's front-loaded with the core action and resource, with no wasted words or redundant information. This makes it highly concise and well-structured for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'offline analysis' entails, what the generated script does, or how to use the output. For a tool that generates scripts, more context is needed to understand its behavior and application, making it insufficient for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'scriptType' fully documented in the schema. The description mentions 'bash or PowerShell script,' which aligns with the enum values but doesn't add any semantic details beyond what the schema provides. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description adds minimal extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Generate a bash or PowerShell script for offline analysis.' It specifies the verb ('generate'), resource ('script'), and context ('for offline analysis'), which is clear and specific. However, it doesn't explicitly differentiate from sibling tools like 'analyze_git_repository' or 'explain_remediation,' which might also involve analysis-related tasks, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, contexts, or exclusions, and it doesn't reference sibling tools like 'analyze_git_repository' or 'explain_remediation' to help the agent choose appropriately. This lack of usage context leaves the agent without clear direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_findingsC

Retrieve historical analysis findings for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesName of the project

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action is to 'retrieve' findings, implying a read-only operation, but doesn't specify details like whether it returns all findings or a subset, if there are rate limits, authentication requirements, or error conditions. This leaves gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It's appropriately sized for a simple tool and front-loaded with the core purpose, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'historical analysis findings' entail, the return format, or potential limitations. For a tool with one parameter but lacking structured behavioral data, more context is needed to fully understand its use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'projectName' documented as 'Name of the project'. The description doesn't add any extra meaning beyond this, such as format examples or constraints, so it meets the baseline score of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('retrieve') and resource ('historical analysis findings for a project'), making the purpose understandable. However, it doesn't distinguish this tool from its siblings like 'analyze_git_repository' or 'analyze_local_project', which might also retrieve findings but through different methods or scopes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, such as whether the project must have been previously analyzed, or differentiate it from sibling tools like 'explain_remediation' or 'generate_analysis_script', which could be related to findings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.0
    • First observedanalyze_git_repository
    • First observedanalyze_local_project
    • First observedexplain_remediation
    • First observedgenerate_analysis_script
    • First observedget_project_findings

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: analyze_git_repository and analyze_local_project target different source locations, explain_remediation provides guidance, generate_analysis_script creates scripts, and get_project_findings retrieves historical data. No overlap or ambiguity exists between these functions.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case naming (e.g., analyze_git_repository, explain_remediation, generate_analysis_script). The naming is predictable and readable throughout the set.

Tool Count5/5

With 5 tools, the server is well-scoped for analyzing stateful code patterns. Each tool serves a unique and necessary function in the workflow, from analysis to remediation and historical retrieval, without being too sparse or bloated.

Completeness4/5

The toolset covers core analysis workflows (git/local analysis, remediation guidance, script generation, and findings retrieval). A minor gap exists in direct remediation actions (e.g., fixing patterns automatically), but agents can work around this using the provided guidance and scripts.

Related MCP Connectors