EIP MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@EIP MCP ServerGenerate an implementation plan based on our SSOT"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ESSOT MCP Server
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:
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.
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 localssot/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.
Option A: Local Installation (Recommended)
For the best development experience and to keep your API keys secure, we recommend cloning the repository locally.
Clone the Repository:
git clone https://github.com/eecheonwu/essot-mcp-server.git
cd essot-mcp-serverIDE 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:
Inbound (Cloud ➡️ Local Laptop): The cloud-hosted ESSOT Web App cannot natively send webhook requests to your laptop's local port
8123due 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.Outbound (Local Laptop ➡️ Cloud): By default, the MCP server points to
http://localhost:8000for 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.10or higherPackage Manager: uv by Astral
Ports: Port
8123must 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 toolsgenerate_implementation_planC
Acts as the Software Architect. Reads local SSOT artifacts and generates a massive, professional-grade implementation-plan.md.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | openrouter | |
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | openrouter | |
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | openrouter | |
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | No | ||
| update_summary | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
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.
All tools follow a consistent snake_case verb_noun pattern: generate_*, initialize_*, synchronize_*. This makes the set predictable and easy to navigate.
Five tools is well-scoped for a planning-and-sync workflow. Each tool has a clear role and there is no obvious redundancy.
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
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
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Serves your design system and coding standards to coding agents, so they stop guessing.
AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).
The AI orchestration agent for modern software teams.
Related MCP Servers
- FlicenseBqualityDmaintenanceConnects 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.42
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to read, modify, and build from architecture models, keeping the model as the source of truth for intent and synchronized with code.19113BSD 3-Clause
- AlicenseNot gradedqualityBmaintenanceLocal-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
- AlicenseCqualityAmaintenanceSecure 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.85MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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