isA_MCP - Intelligent MCP Server
Project Overview
isA_MCP is an enterprise-grade, intelligent MCP (Model Context Protocol) server built with Contract-Driven (CDD) and Test-Driven (TDD) methodologies. It provides Auto-Discovery, Hierarchical Semantic Search, and Skill-Based Classification within a microservices architecture.
Core Features
- Auto-Discovery - Scans and registers tools, prompts, and resources from the filesystem
- Skill-Based Hierarchical Search - Two-stage search: find relevant skills, then find matching tools via Qdrant
- Graceful Search Degradation - Uses semantic search by default and falls back to lexical mode when the ISA Model dependency is unavailable
- Real-time Progress (SSE) - Server-Sent Events for streaming progress on long-running tasks
- Human-in-the-Loop (HIL) - Four interaction modes: Authorization, Input, Review, and Combined
- Server Aggregation - Connect and aggregate tools from external MCP servers
- Standalone Enterprise Servers - Dedicated MCP servers for API gateway, database, filesystem, and message queue operations
- Enterprise Security - JWT authentication, multi-tenant isolation, audit logging
- Kubernetes-Ready - Helm charts, Docker images, multi-environment configs
- Hot Reload - Development mode with automatic code change detection
System Capabilities
| Component | Count | Description |
|---|---|---|
| Tools | 200+ | Data analysis, web search, AI services, file operations, and more |
| Prompts | 38 | RAG search, workflow orchestration, content generation |
| Resources | 51 | Guardrails, knowledge graphs, skill catalogs, process definitions |
| Services | 12+ | Tool, Search, Skill, Sync, Aggregator, Marketplace, and more |
Architecture
graph TB
subgraph "Client Layer"
C1[Desktop Client]
C2[IDE Extension]
C3[Custom Client]
end
subgraph "MCP Server"
MS[Smart MCP Server<br/>main.py]
SkillSvc[Skill Service]
SearchSvc[Hierarchical Search]
AD[Auto Discovery]
Sync[Sync Service]
end
subgraph "Tool Layer"
GT[General Tools]
IT[Intelligence Tools]
WT[Web Tools]
DT[Data Tools]
end
subgraph "External Microservices"
WS[Web Service]
DS[Data Analytics]
IM[Model Service<br/>LLM/Embeddings]
end
subgraph "Infrastructure"
PG[(PostgreSQL)]
QD[(Qdrant)]
CS[Consul]
RD[(Redis)]
end
C1 & C2 & C3 --> MS
MS --> AD --> Sync
MS --> SkillSvc & SearchSvc
SearchSvc --> SkillSvc & QD
SkillSvc --> PG & QD
MS --> GT & IT & WT & DT
WT --> WS
DT --> DS
IT --> IM
Sync --> PG & QD
WT & DT --> CS
PG -.-> RD
Key Flows
Startup: main.py -> Auto-Discovery scans tools/, prompts/, resources/ -> Registers with FastMCP -> Sync Service syncs to PostgreSQL -> Generates embeddings via Model Service -> Indexes in Qdrant
Search: Query -> Stage 1: skill matching in mcp_skills collection -> Stage 2: tool search filtered by matched skills -> Full schema from PostgreSQL -> Enriched results
Tool Execution: Client call -> MCP tool layer -> HTTP client -> Consul discovery (optional) -> External service -> SSE progress stream -> Result
Quick Start
Prerequisites
- Python 3.11+
- PostgreSQL 14+
- Qdrant (vector database)
- Redis 6+ (optional, falls back to in-memory)
Local Development
# One-command setup and run
./deployment/local-dev.sh
# Or step by step:
./deployment/local-dev.sh --setup # Create venv, install deps
./deployment/local-dev.sh --run # Start server on :8081
./deployment/local-dev.sh --status # Check installed packages
Manual Setup
# 1. Create and activate virtual environment
uv venv .venv --python 3.12
source .venv/bin/activate
# 2. Install dependencies
uv pip install -r deployment/requirements/base_dev.txt
uv pip install -r deployment/requirements/project.txt
# 3. Configure environment
cp deployment/.env.template .env
# Edit .env with your database connections and API keys
# 4. Run
python -m uvicorn main:app --host 0.0.0.0 --port 8081 --reload
Verify
curl http://localhost:8081/health
Health responses use these semantics:
200 healthymeans critical dependencies are up and search is in normal semantic mode200 degradedmeans the server is serving traffic but a non-fatal dependency has forced degraded behavior, for examplesearch.mode = lexical503 degradedmeans a critical dependency or an open circuit breaker has made the server unready
Example degraded health payload:
{
"status": "degraded",
"service": "Smart MCP Server",
"capabilities": {
"tools": 200,
"prompts": 38,
"resources": 51
},
"search": {
"status": "degraded",
"mode": "lexical",
"reason": "ISA Model health check failed: ReadTimeout"
}
}
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Server health and capability summary |
/mcp |
POST | MCP JSON-RPC protocol endpoint |
/search |
POST | Semantic search across tools, prompts, resources |
/api/v1/search |
POST | Hierarchical search with skill routing |
/api/v1/search/tools |
GET | Tool-only search contract |
/api/v1/search/skills |
GET | Skill taxonomy search contract |
/api/v1/skills/* |
CRUD | Skill category management |
/api/v1/aggregator/* |
CRUD | External MCP server management |
/progress/{id}/stream |
GET | SSE progress stream |
/sync |
POST | Trigger tool/prompt/resource sync |
Project Structure
isA_MCP/
├── main.py # Server entry point (HTTP + stdio modes)
├── core/ # Configuration, auth, logging, auto-discovery
├── enterprise_servers/ # Standalone MCP servers (gateway, database, filesystem, queue)
├── services/ # Business logic and data access
│ ├── tool_service/ # Tool CRUD + caching
│ ├── prompt_service/ # Prompt management
│ ├── resource_service/ # Resource management
│ ├── search_service/ # Hierarchical + unified search
│ ├── skill_service/ # LLM-based tool classification
│ ├── sync_service/ # PostgreSQL + Qdrant synchronization
│ ├── vector_service/ # Qdrant vector operations
│ ├── aggregator_service/ # External MCP server aggregation
│ └── marketplace_service/# Tool marketplace
├── tools/ # MCP tool implementations (auto-discovered)
├── prompts/ # MCP prompt templates (auto-discovered)
├── resources/ # MCP resource definitions (auto-discovered)
├── deployment/ # Docker, Helm, K8s, environment configs
├── docs/ # Architecture, design, and guidance docs
├── tests/ # Test suite (unit, component, integration, API)
├── isa_mcp/ # CLI package
└── examples/ # Client usage examples
Testing
Test suite organized by layer following CDD/TDD process:
# All tests
python -m pytest tests/ -q
# By layer
python -m pytest tests/unit/ -v
python -m pytest tests/component/ -v
python -m pytest tests/integration/ -v
# By feature
python -m pytest -m skill -v
python -m pytest -m search -v
python -m pytest -m tdd -v
Deployment
Docker
docker build -f deployment/docker/Dockerfile -t isa-mcp:latest .
docker run -p 8081:8081 --env-file .env isa-mcp:latest
Kubernetes (Helm)
helm upgrade --install isa-mcp deployment/helm/ \
-f deployment/helm/values-production.yaml \
--namespace isa-platform
See deployment/README.md for full deployment guide.
Enterprise Servers
The repository also ships standalone MCP servers under enterprise_servers/:
api_gateway_mcpdatabase_mcpfilesystem_mcpmessage_queue_mcp
Each server exposes:
GET /healthGET /.well-known/mcp-server-card.jsonGET|POST /mcpwhen FastMCP is available
These servers are intended for isolated deployment when you want a smaller MCP surface around one infrastructure domain instead of the full unified server.
Documentation
- Guidance Index - Platform overview and feature guides
- Quick Start - Installation and first steps
- Configuration - Server and infrastructure config
- Search Guide - Semantic search and discovery
- Skills Guide - Skill-based classification
- HIL Guide - Human-in-the-loop patterns
- Security - Authentication and authorization
- Release Process - Versioning and releases
- Contributing - Development conventions (branch naming, commits, PR process)
- Changelog - Version history
License
This project is licensed under the MIT License. See LICENSE for details.
Status: Pre-release (latest tag v0.1.0, see audit/SUMMARY.md for production-readiness state) | Last Updated: 2026-05-04
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file isa_mcp-1.0.3.tar.gz.
File metadata
- Download URL: isa_mcp-1.0.3.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5715053b12b8c2e66c8df7b01e079a81a397699cf60ad5b948955c45ffbfd8b2
|
|
| MD5 |
a475996df4cee884c27e24b04d72a222
|
|
| BLAKE2b-256 |
494add078d04d03b82ab0efc20204439dcffbfb2a8818cb1542ea7a8bd46df27
|
File details
Details for the file isa_mcp-1.0.3-py3-none-any.whl.
File metadata
- Download URL: isa_mcp-1.0.3-py3-none-any.whl
- Upload date:
- Size: 1.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
daf975c296070a494c1306f0cd334e3ac163be9d6809c0dc818ffd155953a589
|
|
| MD5 |
a70e0669557d5be85ec645283dd75216
|
|
| BLAKE2b-256 |
04a1a92aac3aac1c70c54ecca8593bf5c7c2ef0c642439b120d11482904f4a3e
|