Skip to main content
Glama

ESSOT MCP Server

Python Version MCP Transport Framework

The ESSOT MCP Server is the bridge between your local development environment and the Engineering Intelligence Platform (ESSOT). It exposes local workspace orchestration capabilities to your AI-powered IDEs via the Model Context Protocol (MCP).


🚀 About the Engineering Intelligence Platform (ESSOT)

The Engineering Intelligence Platform (ESSOT) is a modern governance and planning workspace designed for AI-driven software engineering. ESSOT automatically maintains a Single Source of Truth (SSOT), visualizes architectural knowledge graphs, and governs architectural drift.

The ESSOT MCP Server empowers AI Coding Agents (such as Antigravity, Claude Desktop, Cursor, or Windsurf) to natively interact with your ESSOT project.

How it Connects to ESSOT

This MCP server operates in a dual-mode architecture:

  1. Stdio MCP Interface: Seamlessly exposes AI tools to your local IDE Agent, allowing it to pull architecture guidelines, parse SSOT requirements, and automatically synchronize your code drift with the remote ESSOT Knowledge Graph.

  2. Background Webhook Listener: Upon initialization, the server silently spawns an HTTP listener on port 8123. This allows the cloud-based ESSOT Web App to trigger deep architectural tasks (like generating an Implementation Plan) which are then executed securely on your local file system.


Related MCP server: scryer-mcp

🛠️ Available Tools

When connected to your IDE, the AI agent gains access to the following tools:

  • initialize_local_ssot: Connects to the ESSOT Web App to scaffold your local ssot/ directory using the project's Software Requirements Document (SRD).

  • generate_implementation_plan: Acts as a Staff Architect. Analyzes local SSOT context and outputs an exhaustive, step-by-step implementation plan (with embedded security architecture).

  • generate_task_plan: Decompiles the implementation plan into highly specific executable tasks for local agents (including integrated security guardrails).

  • generate_test_plan: Creates comprehensive testing strategies (STQE, RTM) mapped to feature requirements.

  • synchronize_ssot: Pushes local documentation and architectural updates back to the ESSOT Web App's Knowledge Graph to resolve drift.


📦 Installation & Usage

You can run the ESSOT MCP Server either by cloning it locally or by running it remotely directly from GitHub using uv.

For the best development experience and to keep your API keys secure, we recommend cloning the repository locally.

  1. Clone the Repository:

git clone https://github.com/eecheonwu/essot-mcp-server.git
cd essot-mcp-server
  1. IDE Configuration:

Add the following to your IDE's MCP configuration file (e.g., mcp_config.json or claude_desktop_config.json). Update the --directory path to match where you cloned the repository.

{
  "mcpServers": {
    "essot-mcp-server": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/your/local/essot-mcp-server",
        "python",
        "essot_mcp_server/server.py"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key-here",
        "ESSOT_API_URL": "http://localhost:8000",
        "ESSOT_API_KEY": "your-essot-api-key-here"
      }
    }
  }
}

Option B: Remote Execution (No Cloning Required)

You can run the MCP server directly from the remote GitHub repository using uv's ability to run code from Git URLs.

1. Full Features (Includes Webhook Listener)

To ensure the background webhook listener on port 8123 starts properly, you must run the server as a module. This allows inbound remote triggers from the ESSOT Web App.

{
  "mcpServers": {
    "essot-mcp-server": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "git+https://github.com/eecheonwu/essot-mcp-server.git",
        "-m",
        "essot_mcp_server.server"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key-here",
        "ESSOT_API_URL": "http://localhost:8000",
        "ESSOT_API_KEY": "your-essot-api-key-here"
      }
    }
  }
}

2. MCP Tools Only (No Webhook Listener)

If you only want the MCP tools (outbound capabilities) and do not need the background webhook listener, you can use the built-in script entry point with uvx:

{
  "mcpServers": {
    "essot-mcp-server": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/eecheonwu/essot-mcp-server.git",
        "essot-mcp-server"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key-here",
        "ESSOT_API_URL": "http://localhost:8000",
        "ESSOT_API_KEY": "your-essot-api-key-here"
      }
    }
  }
}

⚠️ Warning on disabling the webhook: Without the webhook listener, the ESSOT Web App cannot remotely trigger local code generation or automatically scaffold your local workspace. The integration becomes one-directional (outbound only).

Supported IDEs

  • Claude Desktop: Add to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS).

  • Antigravity CLI / IDE: Add to ~/.gemini/config/mcp_config.json.

  • Cursor: Configure via Settings > Features > MCP.


🌐 Connecting to a Cloud-Hosted ESSOT Web App

If your ESSOT Web App is hosted in the cloud (e.g., DigitalOcean, AWS), you must configure networking in both directions:

  1. Inbound (Cloud ➡️ Local Laptop): The cloud-hosted ESSOT Web App cannot natively send webhook requests to your laptop's local port 8123 due to firewalls/NAT. To fix this, you must run a secure tunnel like ngrok (ngrok http 8123) or Cloudflare Tunnels on your local machine. You then configure the ESSOT Web App to send webhook triggers to the public URL provided by the tunnel.

  2. Outbound (Local Laptop ➡️ Cloud): By default, the MCP server points to http://localhost:8000 for the Web App backend. You can override this and provide authentication by setting the following environment variables:

    • ESSOT_API_URL (e.g. https://api.yourdomain.com)

    • ESSOT_API_KEY (Your secure API key for the cloud backend)


🔧 Architecture Requirements

  • Python: 3.10 or higher

  • Package Manager: uv by Astral

  • Ports: Port 8123 must be available for the ESSOT Webhook Listener.

🤝 Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

Available Tools

5 tools
generate_implementation_planC

Acts as the Software Architect. Reads local SSOT artifacts and generates a massive, professional-grade implementation-plan.md.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoopenrouter
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full disclosure burden. It reveals that the tool reads local SSOT artifacts and produces an implementation plan, but it does not mention whether the tool uses the configured provider to call an external model, whether an existing plan is overwritten, or what other side effects occur.

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

Conciseness4/5

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

The description is a single front-loaded sentence with clear structure. However, phrases like 'massive, professional-grade' add little operational value and are more promotional than informative.

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?

Although an output schema exists to document the return shape, the rest of the tool context is thin. Given two undocumented parameters, no annotations, and several sibling planning tools, this description omits essential usage and prerequisite information needed to call the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain either parameter. 'provider' and 'project_path' are left completely opaque: an agent cannot determine valid provider values, what project_path should reference, or the meaning of null defaults.

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 names a specific action ('generates'), a concrete artifact ('implementation-plan.md'), and identifies the relevant input ('local SSOT artifacts'). It does not explicitly contrast with sibling tools like generate_task_plan or generate_test_plan, but the artifact name makes the core purpose clear.

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?

There is no guidance on when to use this tool versus generate_task_plan, generate_test_plan, or synchronize_ssot. The only implicit hint is that it reads SSOT artifacts, but the description never states prerequisites, timing, or exclusions.

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

generate_task_planC

Generates an exhaustive Task Plan and saves it to the local workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoopenrouter
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility for behavioral disclosure. It reveals one meaningful behavior (saving to the local workspace), but omits other important traits such as whether existing files are overwritten, whether write permissions are needed, or whether the tool depends on prior initialization state.

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, tightly worded sentence with no filler. It front-loads the main action and the key side effect, making it easy to parse quickly.

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?

The tool has two undocumented optional parameters, no annotations, and an output schema that is not described. The description fails to explain the role of a Task Plan relative to sibling plans, what the provider parameter controls, or what the generated plan contains. This is incomplete for reliable invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description gives no information about 'provider' or 'project_path'. An agent is left without any explanation of acceptable provider values, what project_path should point to, or how the defaults behave.

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 uses a specific verb ('Generates') and a specific resource ('Task Plan'), and adds the side effect of saving to the local workspace. This distinguishes it from siblings like generate_implementation_plan and generate_test_plan by the type of plan produced, though it does not explicitly name those alternatives.

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 given on when to use this tool versus its siblings. There is no mention of prerequisites, workflow position, or cases where generate_implementation_plan or generate_test_plan would be more appropriate.

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

generate_test_planC

Generates an exhaustive Test Plan and saves it to the local workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoopenrouter
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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. The only disclosed behavioral trait is that the output is saved to the local workspace, but there is no mention of overwrite behavior, file naming, permission needs, or whether generation is deterministic or long-running.

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?

A single sentence that is front-loaded with the primary action and output location. There is no filler or redundancy, so every word earns its place.

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?

Although an output schema exists, key invocation context is missing: parameter meanings, usage conditions, and side-effect caveats. The definition is enough to know what the tool does, but not enough to invoke it correctly with confidence.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not mention provider or project_path. The agent gets no help understanding valid provider values or what project_path defaults to when null.

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

Purpose5/5

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

The description uses a specific verb ('Generates') with a concrete resource ('Test Plan') and adds the location of output ('saves it to the local workspace'). The resource name distinguishes it from sibling tools focused on task plans and implementation plans.

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?

There is no guidance about when to choose this tool over generate_task_plan, generate_implementation_plan, or other siblings. No exclusions, prerequisites, or conditions are given; usage is only implied by the tool name.

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

initialize_local_ssotB

Connects to the ESSOT Web App, pulls initial business requirements (SRD) and scaffolds the local knowledge/ directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 for disclosing safety and side effects. It discloses that it connects to an external app, pulls data, and scaffolds a local directory, but says nothing about file creation/overwriting behavior, idempotency, required authentication, or potential destructive effects. For a setup tool that mutates the filesystem, this is a significant gap.

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 one concise sentence with no filler, front-loads the primary behaviors (connect, pull, scaffold), and every verb phrase adds information. It is appropriately sized for a straightforward initialization tool.

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?

The tool has no annotations and incomplete parameter documentation, so the description must supply more context. It gives an overview but omits guidance on project_id/project_path semantics, what happens if the local directory exists, and how this relates to the sibling tools. The presence of an output schema mitigates the need to describe return values, but many invocation-relevant details remain missing.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not clarify either parameter. project_id and project_path are only titled, not explained, and nothing in the tool description indicate how they control which ESSOT project is fetched or where the local scaffold is placed.

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

Purpose5/5

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

Description uses concrete verbs and a clear resource: connects to ESSOT Web App, pulls initial requirements, and scaffolds a local directory. It also distinguishes itself from sibling planning and synchronization tools by describing an initialization/scaffolding workflow rather than plan generation or sync.

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

Usage Guidelines3/5

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

The word 'initial' implies this should run at the start of a workflow, and the scaffold action implies setup before sibling tools like generate_task_plan or synchronize_ssot. However, the description never explicitly states when to use it versus alternatives, nor does it exclude any sibling tools.

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

synchronize_ssotA

Called by the IDE Coding Agent to synchronize local SSOT changes with the ESSOT Web App. Reads the local ssot/ directory, determines what has changed, and pushes the updates back to the cloud database and Knowledge Graph.

Args: update_summary: A brief description of what was changed locally during development.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNo
update_summaryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavior. It states the high-level sequence (read local, detect changes, push to DB and Knowledge Graph) but omits critical side effects such as whether cloud data is overwritten, whether conflicts are handled, or whether the operation is reversible. For a mutating sync operation this is insufficient.

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

Conciseness4/5

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

The description is compact, front-loaded with the trigger and purpose, and wastes no words. It includes an Args section for the documented parameter. It could be improved slightly by incorporating project_path, but as written it is efficient and scannable.

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

Completeness3/5

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

The description covers the core workflow and required parameter, and an output schema exists so return values are not needed. However, it omits the optional project_path parameter, any safety/behavioral notes (relevant given no annotations), and any prerequisites such as an existing local ssot/ directory or network availability. It is minimally viable but has clear gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description is the only source of parameter meaning. It documents update_summary (a brief description of local changes), which is helpful, but it entirely omits project_path, leaving an agent unable to know whether or how to set it. Because coverage is 0% and one parameter is undocumented, the description only partially compensates.

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

Purpose5/5

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

The description names a specific action ('synchronize local SSOT changes with the ESSOT Web App') and details the mechanism: reads the local ssot/ directory, detects changes, and pushes updates to the cloud database and Knowledge Graph. This clearly differentiates it from sibling initialize_local_ssot, which would set up local state rather than push changes.

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

Usage Guidelines4/5

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

The description opens with 'Called by the IDE Coding Agent to synchronize local SSOT changes...' which gives clear context for when the tool is appropriate. It implies that this tool is for pushing local changes after development, but it does not explicitly name alternatives or exclusions relative to sibling tools.

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

TDQS

B3.3/5.0
Disambiguation4/5

Tools mostly target distinct artifacts: task plan, implementation plan, test plan, and SSOT synchronization. generate_task_plan and generate_implementation_plan could potentially be confused since both produce planning documents, but their descriptions clarify the output differences.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern: generate_*, initialize_*, synchronize_*. This makes the set predictable and easy to navigate.

Tool Count5/5

Five tools is well-scoped for a planning-and-sync workflow. Each tool has a clear role and there is no obvious redundancy.

Completeness4/5

The core lifecycle is covered: initialize SSOT, generate task/implementation/test plans, and synchronize changes. Minor gaps exist, such as no explicit update/retrieve tool for existing plans, but agents can likely work around this through the local workspace.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Connects AI assistants to a local Codex engine for performing deep, project-level code reviews and automated refactoring. It enables context-aware bug fixes and multi-file analysis through a standardized bridge between modern AI clients and local development environments.
    4
    2
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to read, modify, and build from architecture models, keeping the model as the source of truth for intent and synchronized with code.
    19
    113
    BSD 3-Clause
  • A
    license
    Not graded
    quality
    B
    maintenance
    Local-first cross-service code intelligence engine for AI agents, connecting frontend, gateways, backend services, and databases to enable impact analysis and change planning.
    Apache 2.0
  • A
    license
    C
    quality
    A
    maintenance
    Secure agent coding runtime for local Git repos with policy enforcement, RBAC, sessions, approval workflow, and sandboxed writes, optionally connectable to ChatGPT via Secure MCP Tunnel.
    8
    5
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eecheonwu/essot-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server