Omega Tools MCP
The Omega Tools MCP server is an extensible microservice toolkit for LLM agents. Here's what you can do with it:
Web Search (
omega_web_search): Perform live, real-time web searches to retrieve up-to-date information on current events, news, technical documentation, or anything outside an LLM's static training data.Custom Tool Integration: Easily add new tools by creating a tool file in
src/omega_mcp/tools/and registering it inserver.py, following a clear blueprint with standardized XML output (<knowledge_source>β<record>schema) for consistent LLM consumption.Multiple Deployment Modes: Run locally via
stdiofor IDEs (e.g., Cline, Cursor) or deploy as a scalable, production-grade service using SSE over Docker, making it accessible as a global tool mesh.External Agent Integration: Connect external Python agents (e.g., via Google Gen AI SDK) through HTTP POST JSON-RPC for remote tool execution.
Modular Architecture: Business logic, external infrastructure hooks, and AI tool abstractions are decoupled, allowing flexible expansion without restructuring the core.
Provides web search functionality using the DuckDuckGo search engine.
Click on "Deploy 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., "@Omega Tools MCPsearch for latest developments in AI"
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.
π Omega Core Infrastructure Server (Model Context Protocol)
A production-grade, highly decoupled Model Context Protocol (MCP) server that acts as a centralized microservice toolkit for LLM agents (Cline, Cursor, Custom Independent Agents, etc.).
Omega is explicitly architected to enforce a strict Separation of Concerns (SoC) by separating protocol-agnostic backend service engines from the AI presentation layer. It natively runs as a scalable, containerized SSE (Server-Sent Events) network deployment inside Docker on port 8080.
ποΈ Architectural Layout
The project uses a strict layer separation pattern to guarantee that AI semantic descriptions never bleed into raw infrastructure connectivity modules:
src/omega_mcp/
βββ config.py # Standardized configuration schemas, env variable parsing, and automated boot validations
βββ logger.py # Custom telemetry logging engine directing output safely to sys.stderr
βββ server.py # Central ASGI network routing gateway, tool registry, and lifespan state orchestrator
βββ core/ # PROTOCOL-AGNOSTIC DATA ENGINES (Pure Python Data Types Only)
β βββ service_alpha.py # Foundation engine logic handling connection state pools, file systems, or databases
β βββ service_beta.py # Standalone service driver handling network adapters, utilities, or external APIs
βββ tools/ # SYMMETRICAL PRESENTATION LAYERS (Maps Core Logic to Symmetrical XML)
βββ tool_alpha.py # Pulls lifecycle state connections from service_alpha and compiles uniform XML records
βββ tool_beta.py # Invokes stateless service_beta sequences and converts outputs to standard XML responses
π οΈ The Symmetrical Presentation Pattern
To completely eliminate Context Structure Clashβwhere an LLM's attention heads accidentally favor one tool pattern or output layout over anotherβall tools added to this repository must convert core internal records into a uniform, identical XML structural layout (<knowledge_source> $\rightarrow$ <record>):
<knowledge_source type="source_type" query="target_query">
<record id="unique_identifier" score="relevance_weight_if_applicable">
<specific_fact>Extracted text body content payload goes here...</specific_fact>
<parent_lineage id="parent_id">Title, Source Reference, or Provenance Metadata Group</parent_lineage>
<semantic_entities>comma, separated, key, concept, tags</semantic_entities>
</record>
</knowledge_source>
Related MCP server: MCP Server with OpenAI Integration
π§± System Architecture & Container Data Flow
Omega runs entirely within an isolated Docker container communicating via Server-Sent Events (SSE). This transforms it into a global network tool mesh accessible by local editors and remote agents simultaneously.
ββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββ
β VS Code Client β β External Python Agent β
β (Cline / Cursor) β β (Google Gen AI SDK) β
ββββββββββββ¬ββββββββββββ βββββββββββββββββ¬ββββββββββββββββ
β β
βΌ [HTTP/SSE Network Connection] βΌ [HTTP POST JSON-RPC]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β OMEGA CORE INFRASTRUCTURE SERVER β
β β
β βββββββββββββ βββββββββββββββββββββββββββββββββββββββ β
β β server.py β βββ> β tools/tool_alpha.py β β
β βββββββ¬ββββββ β tools/tool_beta.py β β
β β β (Symmetrical XML Payload Compilers) β β
β β βββββββββββββββββ¬ββββββββββββββββββββββ β
β βΌ [Lifespan Injection] β β
β βββββββββββββββββββββ β β
β β core/service_* ββββββββββββββββ β
β βββββββββββ¬ββββββββββ β
ββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ [Network Socket Drivers / API Protocols]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Target Infrastructure Layers (Databases, Cloud APIs, Systems) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π³ Production Deployment via Docker
The project defaults to application-workspace execution mode. Dependencies are managed and synchronized cleanly via uv straight inside the container layer.
1. Build the Docker Image Locally
docker build -t omega-mcp .
2. Configure Your Cluster Engine Layout (docker-compose.yaml)
To mount the server into your architecture stack, map external host port 8080 to the internal container web gateway port 8000:
services:
omega-mcp:
image: omega-mcp:latest
container_name: nexus-tools-mcp
ports:
- "8080:8000" # Host Port 8080 -> Container Port 8000
environment:
- ENV=production
- MCP_TRANSPORT=sse
- MCP_HOST=0.0.0.0
- MCP_PORT=8000
# Core Service Parameter Allocations
- SERVICE_ALPHA_URL=http://your-infrastructure-target:port
- SERVICE_BETA_CREDENTIAL=your_secure_access_token
restart: unless-stopped
Boot up the background microservice network container:
docker compose up -d
π Connecting to AI Clients
1. IDE Client Setup (Cline / VS Code Extension Configuration)
Because the server runs via Docker SSE, your IDE does not need to handle local Python virtual environments or sub-processes. Point your configuration directly to the live SSE network route:
{
"mcpServers": {
"omega-tools-docker": {
"url": "http://localhost:8080/sse"
}
}
}
2. Consuming Tools from Another Project (External Python Agent)
To consume these microservices inside a separate Python service or custom LLM agent framework (e.g., Google Gen AI SDK), call the explicit tool execution paths via HTTP POST requests:
import httpx
from google import genai
ai_client = genai.Client()
def call_mcp_custom_tool(query: str) -> str:
"""Consumes the containerized MCP tool via standard network transport."""
# FastMCP exposes active tool executions via /tools/{mcp_registered_tool_name}/call
CONTAINER_URL = "http://localhost:8080/tools/registered_tool_name/call"
try:
response = httpx.post(CONTAINER_URL, json={"arguments": {"query": query}}, timeout=30.0)
response.raise_for_status()
# Extract content payload string directly out of standard JSON-RPC schema
return response.json()["content"][0]["text"]
except Exception as e:
return f"<knowledge_source type='custom_tool' status='ERROR' details='{str(e)}'/>"
# Bind directly as a native function tool to your independent agent loop
research_agent = Agent(
name="ResearchAgent",
model=ai_client,
tools=[call_mcp_custom_tool],
instruction="Execute objective analysis using the provided infrastructure tool endpoint."
)
π Scaling Up: Adding New Tools Cleanly
Omega is engineered to expand fluidly. When adding new capabilities, respect the core architectural boundaries by isolating processing routines from interface parsing.
πΉ Step 1: Write the Core Domain Logic
Create a protocol-agnostic service module inside src/omega_mcp/core/ to process your raw metrics or lookups using pure Python types:
# filepath: src/omega_mcp/core/analytics.py
class AnalyticsService:
async def fetch_metrics(self, target_id: str) -> dict:
# Pure database lookups, computational algorithms, or external API fetches
return {"id": target_id, "status": "active", "metrics": [88, 92, 95]}
πΉ Step 2: Create the Tool Presentation Layer
Create a corresponding interface script inside src/omega_mcp/tools/ to consume your core engine and map its outputs to the Symmetrical XML Schema:
# filepath: src/omega_mcp/tools/analytics_search.py
from omega_mcp.core.analytics import AnalyticsService
_service = AnalyticsService()
async def execute_analytics_tool(target_id: str) -> str:
data = await _service.fetch_metrics(target_id)
# Compile the uniform symmetrical XML layout for the LLM context window
return (
f"<knowledge_source type='custom_analytics' query='{target_id}'>\n"
f" <record id='{data['id']}'>\n"
f" <specific_fact>Status is {data['status']} with calculated scores.</specific_fact>\n"
f" <parent_lineage id='cluster_node'>Internal Operational Cluster</parent_lineage>\n"
f" <semantic_entities>{', '.join(map(str, data['metrics']))}</semantic_entities>\n"
f" </record>\n"
f"</knowledge_source>"
)
πΉ Step 3: Register the Declarative Route to the Gateway
Open src/omega_mcp/server.py and bind your new interface function to the central FastMCP instance using the standard decorators:
# filepath: src/omega_mcp/server.py
from omega_mcp.tools.analytics_search import execute_analytics_tool
@mcp.tool(name="get_custom_metrics", description="Queries internal processing performance metrics.")
async def tool_custom_metrics(target_id: str) -> str:
return await execute_analytics_tool(target_id)
πΉ Step 4: Recycle Your Container Stack
Rebuild your Docker container image layers and refresh the cluster setup:
docker build -t omega-mcp .
docker compose up -d --force-recreate omega-mcp
π Logging & Architecture Guardrails
Telemetry Isolation: High-frequency framework logs from downstream database connection components are suppressed to
WARNINGlevel insideserver.pyduring initialization loops to prevent network telemetry flooding.Stream Defenses: All logging implementations channel lines to
sys.stderrsafely, keeping container log structures intact while freeing up main transport execution lines.Decoupled Design: Files created under
core/have zero dependencies on themcplibrary package, ensuring that your core infrastructure operations remain clean, reusable, and completely independent of the endpoint framework.
π License
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
1 toolomega_web_searchA
Performs a live web search to retrieve highly accurate, up-to-date information
on current events, news, documentation, or generic public data.
Use this tool whenever the user asks questions that require real-time knowledge
or details outside your static training data parameters.
Args:
query: The optimized search query keywords or question string to submit to the search engine.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 tool is a live web search returning accurate information, but it does not disclose potential limitations such as rate limits, response time, result count, or whether it returns full content or snippets. Basic behavior is clear, but details are missing.
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 relatively concise at three sentences plus a structured Args field. The first sentence clearly states the purpose, and the second provides usage guidance. The Args section repeats what is already in the schema but adds value with a brief explanation. Could be slightly more streamlined.
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?
Given the tool's simplicity (single required parameter) and the presence of an output schema (which handles return value documentation), the description covers the essential context: what the tool does, when to use it, and how to use the parameter. It is complete enough for an agent to select and invoke correctly, though more detail on query optimization could help.
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 must explain the parameters. It does so via an Args section that describes 'query' as 'The optimized search query keywords or question string'. This adds meaningful context beyond the schema's minimal 'Query' title. However, it could include formatting tips or length limits.
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 clearly states the tool performs a 'live web search' to retrieve up-to-date information on current events, news, documentation, or public data. The verb 'performs a live web search' is specific and the resource (information) is well-defined. No sibling tools exist, so differentiation is not required.
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 explicitly tells when to use the tool: 'whenever the user asks questions that require real-time knowledge or details outside your static training data parameters.' This is clear guidance, but it does not mention when not to use the tool or any alternatives, though none exist. Slightly more exclusion context could make it a 5.
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 tool update
v0.1.0- First observed
omega_web_search
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion or overlap. The tool's purpose is clearly defined as a web search utility.
The single tool name 'omega_web_search' follows a consistent verb_noun pattern, using snake_case and a clear prefix, establishing a consistent naming style.
Having only one tool for a server named 'Omega Tools MCP' seems very thin. While the tool itself is functional, the server's scope appears artificially narrowed, and a single tool does not justify the 'tools' plural in the name.
For the narrow domain of web search, the tool is complete. However, the server name suggests a broader suite of utilities, and the lack of any other tools (e.g., web scraping, data parsing) leaves significant gaps relative to that implied scope.
Maintenance
Related MCP Connectors
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceA production-ready MCP server built with FastAPI, providing an enhanced tool registry for creating, managing, and documenting AI tools for Large Language Models (LLMs).34-
- FlicenseBqualityDmaintenanceProduction-ready MCP server that integrates OpenAI API with extensible tool support, enabling dynamic plugin loading and knowledge search capabilities through multiple interfaces including CLI and browser UI.2-
- AlicenseNot gradedqualityDmaintenanceA production-grade MCP server designed for multi-tenant, authenticated, and observable AI agent systems, enabling secure tool execution across heterogeneous data sources.64MIT
- AlicenseNot gradedqualityFmaintenanceMCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.42MIT