mcp-agentic-pipelines 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +93 -0
- package/README.md +258 -0
- package/package.json +70 -0
- package/packages/clinical/package.json +22 -0
- package/packages/clinical/src/index.ts +262 -0
- package/packages/clinical/tsconfig.json +13 -0
- package/packages/core/package.json +21 -0
- package/packages/core/src/config.ts +138 -0
- package/packages/core/src/errors.ts +100 -0
- package/packages/core/src/index.ts +104 -0
- package/packages/core/src/llm-config.ts +213 -0
- package/packages/core/src/logging.ts +66 -0
- package/packages/core/src/python-bridge.ts +384 -0
- package/packages/core/src/rate-limiter.ts +136 -0
- package/packages/core/src/types.ts +203 -0
- package/packages/core/src/validation.ts +101 -0
- package/packages/core/tsconfig.json +10 -0
- package/packages/deeppipe/package.json +21 -0
- package/packages/deeppipe/src/index.ts +424 -0
- package/packages/deeppipe/tsconfig.json +13 -0
- package/packages/piste/package.json +20 -0
- package/packages/piste/src/index.ts +48 -0
- package/packages/piste/tsconfig.json +13 -0
- package/packages/precis/package.json +20 -0
- package/packages/precis/src/index.ts +67 -0
- package/packages/precis/tsconfig.json +13 -0
- package/packages/server/package.json +31 -0
- package/packages/server/src/index.ts +427 -0
- package/packages/server/tsconfig.json +17 -0
- package/setup.mjs +141 -0
- package/test.mjs +337 -0
- package/vendors/clinical-intake/pipeline.mjs +349 -0
- package/vendors/clinical-intake/questions/en.txt +9 -0
- package/vendors/clinical-intake/questions/fr.txt +9 -0
- package/vendors/piste/.env.example +73 -0
- package/vendors/piste/app/core/__init__.py +4 -0
- package/vendors/piste/app/core/config.py +83 -0
- package/vendors/piste/app/core/debuglog.py +16 -0
- package/vendors/piste/app/core/middleware.py +40 -0
- package/vendors/piste/bridge_piste.py +301 -0
- package/vendors/piste/pipeline/__init__.py +4 -0
- package/vendors/piste/pipeline/compiler.py +68 -0
- package/vendors/piste/pipeline/offline/__init__.py +28 -0
- package/vendors/piste/pipeline/offline/verifaid_pipeline.py +247 -0
- package/vendors/piste/pipeline/replay.py +15 -0
- package/vendors/piste/pipeline/replay_engine.py +249 -0
- package/vendors/piste/pipeline/signatures/__init__.py +4 -0
- package/vendors/piste/pipeline/signatures/signatures.py +136 -0
- package/vendors/piste/pipeline/stage1/__init__.py +21 -0
- package/vendors/piste/pipeline/stage1/atomic_decomposer.py +61 -0
- package/vendors/piste/pipeline/stage1/check_worthiness.py +100 -0
- package/vendors/piste/pipeline/stage1/orchestrator.py +175 -0
- package/vendors/piste/pipeline/stage1/test_stage1.py +162 -0
- package/vendors/piste/pipeline/stage2/__init__.py +34 -0
- package/vendors/piste/pipeline/stage2/blind_retriever.py +303 -0
- package/vendors/piste/pipeline/stage2/canonical_mapper.py +124 -0
- package/vendors/piste/pipeline/stage2/credibility_scorer.py +85 -0
- package/vendors/piste/pipeline/stage2/orchestrator.py +311 -0
- package/vendors/piste/pipeline/stage2/query_refiner.py +88 -0
- package/vendors/piste/pipeline/stage2/search_decision.py +69 -0
- package/vendors/piste/pipeline/stage2/test_stage2.py +265 -0
- package/vendors/piste/pipeline/stage3/__init__.py +20 -0
- package/vendors/piste/pipeline/stage3/classifier.py +79 -0
- package/vendors/piste/pipeline/stage3/orchestrator.py +225 -0
- package/vendors/piste/pipeline/stage3/test_stage3.py +101 -0
- package/vendors/piste/pipeline/stage4/__init__.py +33 -0
- package/vendors/piste/pipeline/stage4/criticality_gate.py +177 -0
- package/vendors/piste/pipeline/stage4/orchestrator.py +269 -0
- package/vendors/piste/pipeline/stage4/test_stage4.py +192 -0
- package/vendors/piste/pipeline/stage4/verdict_aggregator.py +157 -0
- package/vendors/piste/requirements.txt +53 -0
- package/vendors/precis/backend/__init__.py +6 -0
- package/vendors/precis/backend/agents/__init__.py +3 -0
- package/vendors/precis/backend/agents/data_synthesis.py +105 -0
- package/vendors/precis/backend/agents/dist_free_synth.py +97 -0
- package/vendors/precis/backend/agents/exact_hash_retriever.py +327 -0
- package/vendors/precis/backend/agents/fusion_ranker.py +64 -0
- package/vendors/precis/backend/agents/guardrail.py +175 -0
- package/vendors/precis/backend/agents/query_expander.py +89 -0
- package/vendors/precis/backend/agents/radial_interpol.py +99 -0
- package/vendors/precis/backend/agents/report_generator.py +92 -0
- package/vendors/precis/backend/agents/semantic_reranker.py +135 -0
- package/vendors/precis/backend/agents/stat_anomaly.py +93 -0
- package/vendors/precis/backend/agents/vector_index.py +123 -0
- package/vendors/precis/backend/agents/veri_score.py +341 -0
- package/vendors/precis/backend/agents/work_order_extractor.py +205 -0
- package/vendors/precis/backend/api/__init__.py +3 -0
- package/vendors/precis/backend/api/routes/__init__.py +3 -0
- package/vendors/precis/backend/config.py +88 -0
- package/vendors/precis/backend/core/__init__.py +13 -0
- package/vendors/precis/backend/core/hashing.py +22 -0
- package/vendors/precis/backend/core/metrics.py +77 -0
- package/vendors/precis/backend/core/multitoken.py +166 -0
- package/vendors/precis/backend/core/pmi.py +54 -0
- package/vendors/precis/backend/core/stemming.py +74 -0
- package/vendors/precis/backend/core/tracing.py +150 -0
- package/vendors/precis/backend/data/__init__.py +3 -0
- package/vendors/precis/backend/data/chunker.py +57 -0
- package/vendors/precis/backend/data/pdf_parser.py +42 -0
- package/vendors/precis/backend/db/__init__.py +3 -0
- package/vendors/precis/backend/db/models.py +173 -0
- package/vendors/precis/backend/db/repository.py +269 -0
- package/vendors/precis/backend/llm/__init__.py +3 -0
- package/vendors/precis/backend/llm/anthropic_provider.py +39 -0
- package/vendors/precis/backend/llm/base.py +147 -0
- package/vendors/precis/backend/llm/deepseek_provider.py +43 -0
- package/vendors/precis/backend/llm/factory.py +60 -0
- package/vendors/precis/backend/llm/google_provider.py +39 -0
- package/vendors/precis/backend/llm/ollama_provider.py +54 -0
- package/vendors/precis/backend/llm/openai_provider.py +50 -0
- package/vendors/precis/backend/main.py +677 -0
- package/vendors/precis/backend/orchestrator/__init__.py +3 -0
- package/vendors/precis/backend/orchestrator/planner.py +81 -0
- package/vendors/precis/backend/orchestrator/router.py +319 -0
- package/vendors/precis/backend/orchestrator/types.py +58 -0
- package/vendors/precis/bridge_precis.py +185 -0
- package/vendors/precis/data/sample_reports/README.md +8 -0
- package/vendors/precis/data/seed_data.py +115 -0
- package/vendors/precis/requirements.txt +19 -0
package/.env.example
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════
|
|
2
|
+
# Unified MCP Server — Environment Configuration
|
|
3
|
+
# Generated for jinan-kordab | Date: 2026-06-21
|
|
4
|
+
# ═══════════════════════════════════════════════════════════════
|
|
5
|
+
#
|
|
6
|
+
# === LLM PROVIDER CONFIGURATION (unified multi-provider) =======
|
|
7
|
+
#
|
|
8
|
+
# Each component can use a different LLM provider or inherit the default.
|
|
9
|
+
# Supported providers: openai | anthropic | google | deepseek |
|
|
10
|
+
# groq | ollama | openrouter | azure | custom
|
|
11
|
+
#
|
|
12
|
+
# Provider auto-configuration (base URL + default model):
|
|
13
|
+
# openai → https://api.openai.com/v1 | gpt-4o-mini
|
|
14
|
+
# anthropic → https://api.anthropic.com/v1 | claude-3-haiku-20240307
|
|
15
|
+
# google → https://generativelanguage.googleapis.com/v1beta | gemini-2.0-flash
|
|
16
|
+
# deepseek → https://api.deepseek.com | deepseek-chat
|
|
17
|
+
# groq → https://api.groq.com/openai/v1 | llama-3.3-70b-versatile
|
|
18
|
+
# ollama → http://localhost:11434/v1 | llama3.2
|
|
19
|
+
# openrouter → https://openrouter.ai/api/v1 | openai/gpt-4o-mini
|
|
20
|
+
# azure → (requires AZURE_* vars below) | (requires deployment)
|
|
21
|
+
# custom → (requires LLM_DEFAULT_BASE_URL + LLM_DEFAULT_MODEL)
|
|
22
|
+
#
|
|
23
|
+
# ═══════════════════════════════════════════════════════════════
|
|
24
|
+
|
|
25
|
+
# --- Default LLM (used when per-component override is not set) ---
|
|
26
|
+
LLM_DEFAULT_PROVIDER=openai
|
|
27
|
+
LLM_DEFAULT_API_KEY=sk-your-key-here
|
|
28
|
+
LLM_DEFAULT_BASE_URL= # Override auto-detected base URL
|
|
29
|
+
LLM_DEFAULT_MODEL= # Override auto-detected model
|
|
30
|
+
|
|
31
|
+
# --- Azure OpenAI (only needed when provider=azure) ---
|
|
32
|
+
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com
|
|
33
|
+
AZURE_OPENAI_API_KEY=
|
|
34
|
+
AZURE_OPENAI_DEPLOYMENT=gpt-4o-mini
|
|
35
|
+
AZURE_OPENAI_API_VERSION=2024-08-01-preview
|
|
36
|
+
|
|
37
|
+
# --- Anthropic-specific (auto-set, override here) ---
|
|
38
|
+
# ANTHROPIC_API_KEY= # Falls back to LLM_DEFAULT_API_KEY if provider=anthropic
|
|
39
|
+
# ANTHROPIC_BASE_URL= # Default: https://api.anthropic.com/v1
|
|
40
|
+
|
|
41
|
+
# --- Google-specific ---
|
|
42
|
+
# GOOGLE_API_KEY= # Falls back to LLM_DEFAULT_API_KEY if provider=google
|
|
43
|
+
|
|
44
|
+
# --- Ollama-specific ---
|
|
45
|
+
# OLLAMA_HOST=http://localhost:11434
|
|
46
|
+
|
|
47
|
+
# ═══════════════════════════════════════════════════════════════
|
|
48
|
+
|
|
49
|
+
# --- DeepPipe Engine ---
|
|
50
|
+
DEEPPIPE_INDEX_PATH=./data/deeppipe.db
|
|
51
|
+
DEEPPIPE_LLM_PROVIDER= # Falls back to LLM_DEFAULT_PROVIDER
|
|
52
|
+
DEEPPIPE_LLM_API_KEY= # Falls back to LLM_DEFAULT_API_KEY
|
|
53
|
+
DEEPPIPE_LLM_MODEL= # Falls back to provider default
|
|
54
|
+
|
|
55
|
+
# --- Piste (Fact-Checking) ---
|
|
56
|
+
# Piste uses DSPy over LiteLLM — supports 100+ models natively
|
|
57
|
+
PISTE_API_URL=http://localhost:8000
|
|
58
|
+
PISTE_LLM_PROVIDER=deepseek # LiteLLM model string, e.g. deepseek/deepseek-chat
|
|
59
|
+
PISTE_LLM_API_KEY= # Falls back to LLM_DEFAULT_API_KEY
|
|
60
|
+
TAVILY_API_KEY= # At least one search provider required
|
|
61
|
+
SERPER_API_KEY=
|
|
62
|
+
GOOGLE_CSE_API_KEY= # Optional fallback
|
|
63
|
+
GOOGLE_CSE_ID=
|
|
64
|
+
|
|
65
|
+
# --- Precis (RAG Pipeline) ---
|
|
66
|
+
# Precis supports: deepseek, openai, anthropic, google, ollama
|
|
67
|
+
PRECIS_API_URL=http://localhost:8001
|
|
68
|
+
PRECIS_LLM_PROVIDER=deepseek # Provider name for Precis backend
|
|
69
|
+
PRECIS_LLM_API_KEY= # Falls back to LLM_DEFAULT_API_KEY
|
|
70
|
+
|
|
71
|
+
# --- Clinical Intake ---
|
|
72
|
+
# LLM for clinical reasoning
|
|
73
|
+
CLINICAL_LLM_PROVIDER=deepseek # Falls back to LLM_DEFAULT_PROVIDER
|
|
74
|
+
CLINICAL_LLM_API_KEY= # Falls back to LLM_DEFAULT_API_KEY
|
|
75
|
+
CLINICAL_LLM_MODEL= # Falls back to provider default
|
|
76
|
+
# STT (Speech-to-Text)
|
|
77
|
+
CLINICAL_STT_PROVIDER=groq # Currently: groq (whisper-large-v3)
|
|
78
|
+
GROQ_API_KEY=
|
|
79
|
+
# TTS (Text-to-Speech)
|
|
80
|
+
CLINICAL_TTS_PROVIDER=elevenlabs # Currently: elevenlabs
|
|
81
|
+
ELEVENLABS_API_KEY=
|
|
82
|
+
ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAM
|
|
83
|
+
|
|
84
|
+
# ═══════════════════════════════════════════════════════════════
|
|
85
|
+
|
|
86
|
+
# --- MCP Server ---
|
|
87
|
+
MCP_SERVER_NAME=unified-jk-mcp
|
|
88
|
+
MCP_SERVER_VERSION=0.1.0
|
|
89
|
+
MCP_TRANSPORT=stdio # stdio | sse
|
|
90
|
+
MCP_SSE_PORT=3100
|
|
91
|
+
MCP_LOG_LEVEL=info # debug | info | warn | error
|
|
92
|
+
MCP_RATE_LIMIT_ENABLED=true
|
|
93
|
+
MCP_RATE_LIMIT_MAX_RPS=10
|
package/README.md
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# mcp-agentic-pipelines
|
|
2
|
+
|
|
3
|
+
> **One MCP server. Five AI pipelines. Thirty-one tools. Zero manual setup.**
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/mcp-agentic-pipelines)
|
|
6
|
+
|
|
7
|
+
Composable, agentic AI pipelines for Anthropic's Model Context Protocol. Fact-check claims with DSPy, search documents with hybrid RAG, extract intelligence with DeepPipe, and run clinical voice intake — all from a single MCP server. Designed for Claude Desktop, VS Code, Cursor, and any MCP-compatible client.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## All 31 Tools
|
|
12
|
+
|
|
13
|
+
### 🔍 DeepPipe — Document Intelligence (10 tools)
|
|
14
|
+
| Tool | What it does |
|
|
15
|
+
|---|---|
|
|
16
|
+
| `deeppipe_search` | Full-text + vector hybrid search across all documents |
|
|
17
|
+
| `deeppipe_ingest` | Ingest raw text/JSON documents for indexing |
|
|
18
|
+
| `deeppipe_ingest_file` | Ingest documents directly from file paths |
|
|
19
|
+
| `deeppipe_chat_context` | RAG-style Q&A with source citations |
|
|
20
|
+
| `deeppipe_extractive_answer` | Extract a precise answer from documents |
|
|
21
|
+
| `deeppipe_list_documents` | List all indexed documents with metadata |
|
|
22
|
+
| `deeppipe_get_document` | Retrieve a specific document by ID |
|
|
23
|
+
| `deeppipe_get_text` | Get the full text content of a document |
|
|
24
|
+
| `deeppipe_remove_document` | Remove a document from the index |
|
|
25
|
+
| `deeppipe_stats` | View index statistics and document count |
|
|
26
|
+
|
|
27
|
+
### 🧠 Piste — Fact-Checking (6 tools)
|
|
28
|
+
| Tool | What it does |
|
|
29
|
+
|---|---|
|
|
30
|
+
| `piste_fact_check` | Run a claim through the full 4-stage DSPy pipeline (retrieval → verification → aggregation → verdict) |
|
|
31
|
+
| `piste_list_verdicts` | Browse all past fact-check verdicts |
|
|
32
|
+
| `piste_replay` | Replay the audit trail of any fact-check run |
|
|
33
|
+
| `piste_get_audit` | Get the detailed reasoning chain for a verdict |
|
|
34
|
+
| `piste_get_verdict` | Retrieve a specific verdict by claim ID |
|
|
35
|
+
| `piste_submit_feedback` | Submit human feedback to improve future checks |
|
|
36
|
+
|
|
37
|
+
### 📚 Precis — RAG Pipeline (8 tools)
|
|
38
|
+
| Tool | What it does |
|
|
39
|
+
|---|---|
|
|
40
|
+
| `precis_query` | Full RAG query — hybrid search + LLM answer generation |
|
|
41
|
+
| `precis_list_documents` | List all documents in the RAG corpus |
|
|
42
|
+
| `precis_debug_stem` | Inspect how the stemmer processes a query |
|
|
43
|
+
| `precis_debug_search` | See raw hybrid search results (before LLM) |
|
|
44
|
+
| `precis_upload_document` | Upload a document to the RAG corpus |
|
|
45
|
+
| `precis_upload_batch` | Batch-upload multiple documents at once |
|
|
46
|
+
| `precis_extract_work_order` | Extract structured work orders from documents |
|
|
47
|
+
| `precis_list_work_orders` | Browse all extracted work orders |
|
|
48
|
+
|
|
49
|
+
### 🎙️ Clinical — Voice Intake (5 tools)
|
|
50
|
+
| Tool | What it does |
|
|
51
|
+
|---|---|
|
|
52
|
+
| `clinical_start_session` | Start a new voice intake session (returns session ID) |
|
|
53
|
+
| `clinical_process_audio` | Send audio → STT transcription → SOAP notes |
|
|
54
|
+
| `clinical_generate_podcast` | Generate a clinical podcast from session notes |
|
|
55
|
+
| `clinical_list_sessions` | List all voice intake sessions |
|
|
56
|
+
| `clinical_get_session` | Get full details of a specific session |
|
|
57
|
+
|
|
58
|
+
### ⚙️ Built-in (2 tools)
|
|
59
|
+
| Tool | What it does |
|
|
60
|
+
|---|---|
|
|
61
|
+
| `mcp_health` | Server health, tool count, provider status |
|
|
62
|
+
| `mcp_list_providers` | List all 9 supported LLM providers |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Compose Pipelines Together
|
|
67
|
+
|
|
68
|
+
These tools are designed to be chained. Here's a real workflow:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
1. deeppipe_ingest → Load a research paper into the index
|
|
72
|
+
2. precis_upload_document → Add it to the RAG corpus
|
|
73
|
+
3. deeppipe_search → Find relevant passages
|
|
74
|
+
4. piste_fact_check → Verify claims found in those passages
|
|
75
|
+
5. precis_query → Generate a RAG answer from verified context
|
|
76
|
+
6. clinical_start_session → Start voice notes on the findings
|
|
77
|
+
7. clinical_generate_podcast → Turn it all into a shareable podcast
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**In Claude Desktop, this is a conversation:**
|
|
81
|
+
> *"Search my documents for claims about climate policy, fact-check each one,
|
|
82
|
+
> then generate a clinical podcast summarizing the verified findings."*
|
|
83
|
+
|
|
84
|
+
Claude orchestrates the tool calls — your server provides the pipelines.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Architecture
|
|
89
|
+
|
|
90
|
+
```mermaid
|
|
91
|
+
graph LR
|
|
92
|
+
subgraph Top[" "]
|
|
93
|
+
direction LR
|
|
94
|
+
CL[Claude Desktop]
|
|
95
|
+
VS[VS Code]
|
|
96
|
+
CU[Cursor]
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
subgraph Core["MCP Server Core"]
|
|
100
|
+
direction LR
|
|
101
|
+
ROUTER[Request Router<br/>6 handlers]
|
|
102
|
+
RATE[Rate Limiter]
|
|
103
|
+
GUARD[Dep Guard]
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
subgraph DP["DeepPipe<br/>10 tools · TS"]
|
|
107
|
+
D1[search] --> D2[ingest] --> D3[chat]
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
subgraph PS["Piste<br/>6 tools · Python"]
|
|
111
|
+
P1[fact_check] --> PY1[DSPy Pipeline]
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
subgraph PR["Precis<br/>8 tools · Python"]
|
|
115
|
+
R1[query] --> PY2[RAG Engine]
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
subgraph CLN["Clinical<br/>5 tools · TS"]
|
|
119
|
+
C1[session] --> C2[audio] --> C3[podcast]
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
subgraph Bottom[" "]
|
|
123
|
+
direction LR
|
|
124
|
+
LLM[9 LLM Providers<br/>DeepSeek · OpenAI · Anthropic · Groq · Ollama · Google · Azure · OpenRouter · Custom]
|
|
125
|
+
EXT[Tavily · Serper · ElevenLabs]
|
|
126
|
+
DEP[uv · 10 pip pkgs · 6 npm pkgs]
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
Top --> Core
|
|
130
|
+
Core --> DP & PS & PR & CLN
|
|
131
|
+
DP & PS & PR & CLN --> Bottom
|
|
132
|
+
|
|
133
|
+
style Top fill:#f8f9fa,color:#333
|
|
134
|
+
style Core fill:#e8f4fd,color:#333
|
|
135
|
+
style DP fill:#f0f8ff,color:#1a5276,stroke:#aed6f1
|
|
136
|
+
style PS fill:#fef9e7,color:#7d6608,stroke:#f9e79f
|
|
137
|
+
style PR fill:#eafaf1,color:#1e8449,stroke:#a9dfbf
|
|
138
|
+
style CLN fill:#fdedec,color:#922b21,stroke:#f5b7b1
|
|
139
|
+
style Bottom fill:#f8f9fa,color:#333
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Quick Start
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# 1. Install (npm + Python deps handled automatically)
|
|
148
|
+
npx mcp-agentic-pipelines setup
|
|
149
|
+
|
|
150
|
+
# 2. Start the server
|
|
151
|
+
npx mcp-agentic-pipelines
|
|
152
|
+
|
|
153
|
+
# 3. Or run the test suite
|
|
154
|
+
npx mcp-agentic-pipelines test
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### MCP Client Configuration
|
|
158
|
+
|
|
159
|
+
Add to your MCP client config:
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{
|
|
163
|
+
"mcpServers": {
|
|
164
|
+
"mcp-agentic-pipelines": {
|
|
165
|
+
"command": "npx",
|
|
166
|
+
"args": ["mcp-agentic-pipelines"]
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Environment Variables
|
|
173
|
+
|
|
174
|
+
Copy `.env.example` to `.env` and set your keys:
|
|
175
|
+
|
|
176
|
+
| Key | Purpose |
|
|
177
|
+
|---|---|
|
|
178
|
+
| `DEEPSEEK_API_KEY` | Default LLM (DeepSeek) |
|
|
179
|
+
| `OPENAI_API_KEY` | Fallback LLM |
|
|
180
|
+
| `GROQ_API_KEY` | Clinical voice (STT) |
|
|
181
|
+
| `ELEVENLABS_API_KEY` | Clinical voice (TTS) |
|
|
182
|
+
| `TAVILY_API_KEY` | Piste web search |
|
|
183
|
+
| `SERPER_API_KEY` | Piste web search |
|
|
184
|
+
|
|
185
|
+
*Server starts with any subset — missing keys skip their tools gracefully.*
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Requirements
|
|
190
|
+
|
|
191
|
+
- **Node.js ≥ 18**
|
|
192
|
+
- **Python 3.11+** (automatically managed via `uv` — no manual Python install needed on Linux/macOS)
|
|
193
|
+
- **API keys** for the tools you want to use (DeepSeek, Groq, ElevenLabs, Tavily, etc.)
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Development
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
git clone https://github.com/jinan-kordab/mcp-agentic-pipelines.git
|
|
201
|
+
cd mcp-agentic-pipelines
|
|
202
|
+
npm install
|
|
203
|
+
node setup.mjs # one-time — installs all Python deps
|
|
204
|
+
node test.mjs # runs all 31 tool tests
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Architecture (Directory)
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
packages/
|
|
213
|
+
├── core/ Shared types, config, logging, Python bridge
|
|
214
|
+
├── server/ MCP entry point, request routing
|
|
215
|
+
├── deeppipe/ 10 document intelligence tools
|
|
216
|
+
├── piste/ 6 fact-checking tools (Python bridge → DSPy)
|
|
217
|
+
├── precis/ 8 RAG tools (Python bridge → hybrid search)
|
|
218
|
+
├── clinical/ 5 voice intake tools (native TypeScript)
|
|
219
|
+
vendors/
|
|
220
|
+
├── piste/ DSPy pipeline modules + stdin/stdout bridge
|
|
221
|
+
├── precis/ RAG backend modules + stdin/stdout bridge
|
|
222
|
+
├── clinical-intake/ Voice pipeline (npm workspace)
|
|
223
|
+
setup.mjs One-time setup (uv, npm, pip)
|
|
224
|
+
test.mjs Complete test suite (31 tools)
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## License
|
|
230
|
+
|
|
231
|
+
MIT © [Jinan Kordab](https://github.com/jinan-kordab)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Architecture
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
packages/
|
|
240
|
+
├── core/ Shared types, config, logging, Python bridge
|
|
241
|
+
├── server/ MCP entry point, request routing
|
|
242
|
+
├── deeppipe/ 10 document intelligence tools
|
|
243
|
+
├── piste/ 6 fact-checking tools (Python bridge → DSPy)
|
|
244
|
+
├── precis/ 8 RAG tools (Python bridge → hybrid search)
|
|
245
|
+
├── clinical/ 5 voice intake tools (native TypeScript)
|
|
246
|
+
vendors/
|
|
247
|
+
├── piste/ DSPy pipeline modules + stdin/stdout bridge
|
|
248
|
+
├── precis/ RAG backend modules + stdin/stdout bridge
|
|
249
|
+
├── clinical-intake/ Voice pipeline (npm workspace)
|
|
250
|
+
setup.mjs One-time setup (uv, npm, pip)
|
|
251
|
+
test.mjs Complete test suite (31 tools)
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## License
|
|
257
|
+
|
|
258
|
+
MIT © [Jinan Kordab](https://github.com/jinan-kordab)
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mcp-agentic-pipelines",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Composable, agentic pipelines for MCP — fact-checking (DSPy), RAG (hybrid search), document intelligence (DeepPipe), and clinical voice (Groq/ElevenLabs). 31 AI tools, one command, zero manual setup.",
|
|
5
|
+
"author": "Jinan Kordab <https://github.com/jinan-kordab>",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": "github:jinan-kordab/mcp-agentic-pipelines",
|
|
8
|
+
"homepage": "https://github.com/jinan-kordab/mcp-agentic-pipelines#readme",
|
|
9
|
+
"bugs": "https://github.com/jinan-kordab/mcp-agentic-pipelines/issues",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"mcp",
|
|
12
|
+
"modelcontextprotocol",
|
|
13
|
+
"ai",
|
|
14
|
+
"llm",
|
|
15
|
+
"fact-checking",
|
|
16
|
+
"dspy",
|
|
17
|
+
"rag",
|
|
18
|
+
"document-intelligence",
|
|
19
|
+
"voice-ai",
|
|
20
|
+
"agentic",
|
|
21
|
+
"pipelines",
|
|
22
|
+
"claude",
|
|
23
|
+
"anthropic"
|
|
24
|
+
],
|
|
25
|
+
"bin": {
|
|
26
|
+
"mcp-agentic-pipelines": "./packages/server/src/index.ts"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"packages/",
|
|
30
|
+
"vendors/",
|
|
31
|
+
"setup.mjs",
|
|
32
|
+
"test.mjs",
|
|
33
|
+
".env.example",
|
|
34
|
+
"README.md"
|
|
35
|
+
],
|
|
36
|
+
"workspaces": [
|
|
37
|
+
"packages/core",
|
|
38
|
+
"packages/deeppipe",
|
|
39
|
+
"packages/piste",
|
|
40
|
+
"packages/precis",
|
|
41
|
+
"packages/clinical",
|
|
42
|
+
"packages/server"
|
|
43
|
+
],
|
|
44
|
+
"scripts": {
|
|
45
|
+
"setup": "node setup.mjs",
|
|
46
|
+
"start": "node --import tsx packages/server/src/index.ts",
|
|
47
|
+
"dev": "node --import tsx packages/server/src/index.ts",
|
|
48
|
+
"test": "node test.mjs",
|
|
49
|
+
"typecheck": "tsc --noEmit",
|
|
50
|
+
"clean": "rimraf packages/*/dist"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/node": "^22.0.0",
|
|
54
|
+
"rimraf": "^6.0.0",
|
|
55
|
+
"tsx": "^4.0.0",
|
|
56
|
+
"typescript": "^5.6.0",
|
|
57
|
+
"vitest": "^2.0.0"
|
|
58
|
+
},
|
|
59
|
+
"dependencies": {
|
|
60
|
+
"@kordabjinan/deeppipe": "^0.1.0",
|
|
61
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
62
|
+
"dotenv": "^16.4.5",
|
|
63
|
+
"groq-sdk": "^0.8.0",
|
|
64
|
+
"openai": "^4.73.0",
|
|
65
|
+
"zod": "^3.23.0"
|
|
66
|
+
},
|
|
67
|
+
"engines": {
|
|
68
|
+
"node": ">=18.0.0"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@unified-mcp/clinical",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Clinical Intake integration for unified MCP server — AI pre-consultation voice agent with multi-provider LLM support",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./src/index.ts",
|
|
7
|
+
"types": "./src/index.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc -p tsconfig.json",
|
|
10
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
11
|
+
"test": "vitest run",
|
|
12
|
+
"test:watch": "vitest"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@unified-mcp/core": "^0.1.0",
|
|
16
|
+
"openai": "^4.73.0",
|
|
17
|
+
"groq-sdk": "^0.8.0"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"vitest": "^2.0.0"
|
|
21
|
+
}
|
|
22
|
+
}
|