workflow-core
MCP sunucularının iş akışı belgelerini okuyan, arayan, doğrulayan ve MCP kaynağı olarak yayımlayan Python kütüphanesi. Sunucu değildir: port dinlemez, araç yayımlamaz. Sunucular onu içe aktarır ve üç ayarla yapılandırır.
Durum (2026-09-30): dört tüketici sunucu motora bağlı ve kopyasız; yol haritasının
beş fazından dördü geçti. Motor 0.5.4 (269 test, ruff temiz); dağıtım adı
mcp-workflow-core, lisans Apache 2.0, PyPI'da 0.5.4.
Hangi sürümdeyim: paket sürümü 0.5.4. Kaynak pyproject.toml ([project]
version); tests/test_surum.py bu satırı ona bağlar, çalışma anında
workflow_core.__version__ aynı numarayı verir. Kuralların sürümü ayrıdır:
anayasa 1.4.0.
Ne yapar
Bir sunucunun belge klasöründeki Markdown iş akışı belgelerini yönetir. Her belge bir üst bilgi bloğu (frontmatter) ve zorunlu bölümler taşır; motor bunları:
- listeler ve okur,
- arar (Türkçe harfleri katlayarak: büyük
İ, aksanlı ve aksansız yazım aynı sonucu verir), - doğrular (zorunlu alanlar, zorunlu bölümler, gövdede anılan araç adlarının çalışma
anındaki kayıtta var olup olmadığı, bayatlık —
last_verified: olculmedibeyanı bayatlık yerine bilinçli ölçümsüzlük sayılır —,scripts_usedile beyan edilen betik yollarının depoda gerçekten durup durmadığı), - yazar, günceller ve siler (kuru çalıştırma ve arşivle),
- MCP kaynağı olarak yayımlar.
Motor belgeleri çalıştırmaz, okutur. Belge "makinenin yürüteceği kod" değil, "akıllı bir asistanın okuyacağı yönerge"dir; koşul, döngü ve karar asistanın işidir.
Kullanım, tüketici sunucuda:
from workflow_core import Config, Library
library = Library(Config.from_file("workflow.yaml")) # docs_dir, tool_prefix, categories
library.search("devreye alma") # Türkçe katlamalı arama
library.validate(registered_tools=canli_arac_listesi, today="2026-08-22")
library.write("42-yeni-belge", icerik, dry_run=True) # plan döner, disk değişmez
library.dispatch("get", {"id": "42-yeni-belge"}) # tek giriş: action + params
MCP kaynağı olarak yayın çerçeveye göre tek satır: workflow_core.adapters.gofastmcp
ya da workflow_core.adapters.official_sdk içinden register(server, library). Onay
kapısı motorda değil tüketici aracındadır; motor dry_run planını ve yıkıcı eylem
işaretini (ACTIONS) verir.
Neden var
Aynı motor daha önce üç sunucuya kopyalanmıştı: toplam 1720 satır, paylaşılan satır sıfır. Düzeltmeler iki yönde de akmadı; bir kopyada yapılan iyileştirme ötekilere gitmedi, orijinaldeki düzeltme kopyalara gitmedi. Faz 0 ölçümü hiçbir kopyanın "en zengin" olmadığını gösterdi: doğru davranışlar üçüne dağılmıştı ve arama üçünde de Türkçe-güvenli değildi. Birleştirme tek kopyayı seçerek yapılamaz; bu yüzden motor tek yerde yazılıyor ve sunucular onu kütüphane olarak alıyor.
Tasarım ilkeleri
- Motor tek, yapılandırma çok. Sunucuya özel üç şey var: belge klasörünün yolu, araç-adı öneki, geçerli kategori listesi. Dördüncüsü gerektiğinde önce "bu gerçekten sunucuya mı özel" diye sorulur. Tanınmayan yapılandırma alanı reddedilir.
- Alan-özel
ifyok. Sunucuya özel davranış yapılandırma alanıyla çözülür; alan eklemek diff'te görünür,ifgörünmez. - Hiçbir MCP çerçevesine bağlanmaz. Tüketiciler iki farklı çerçevede çalışıyor; motor ikisini de içe aktarmaz, kaynak kaydı çerçeveden bağımsız bir arayüzle sunulur.
- Sessiz düşüş yok. Yedek yola düşüş, kırpma ve yok sayma en az bir uyarı loglar.
- Yazma güvenlik zinciriyle. Kuru çalıştırma motorda, onay tüketici aracında; eski
sürüm arşivlenir, yazma atomiktir, sonuç geri okunur.
success: truekanıt değildir. - Kopyalanmaz. Tüketiciler paketi düzenlenebilir kurulumla (
pip install -e) alır. Düzeltme diske anında akar; çalışan sunucuya yeniden başlatmayla gelir.
Yapılandırma sözleşmesi (taslak)
Faz 1'de kesinleşir. Bugünkü niyet:
| Alan | Ne | Örnek |
|---|---|---|
| belge klasörü | iş akışı belgelerinin dizini | docs/workflows |
| araç-adı öneki | doğrulamanın gövdede arayacağı araç adı deseni | acme_ |
| kategori listesi | belgelerin alabileceği geçerli kategoriler | temel, kalite, yasam-dongusu |
Bu üçünün dışındaki her şey ortak koddur.
Tüketici kılavuzu
Bir sunucuyu motora bağlamak beş adımdır; her adımın kanıtı yanında yazılı.
- Kur. Dağıtım adı
mcp-workflow-core(PyPI'dakiworkflow-corebaşka bir paketin; içe aktarma adıworkflow_coreaynı):pip install mcp-workflow-core, ya da aynı makinede kaynaktan düzenlenebilir kurulumpip install -e <workflow-core dizini>. Düzenlenebilir kurulum diske anında akar, çalışan sunucuya yeniden başlatmayla gelir (anayasa, bilinen tuzaklar). Bağımlılık satırına üst sınır yazın (<0.4). Jev refleks katmanı (workflow_core.jev: tipli hızlı kararlar + adım koşturucu) kullanılacaksa kurulumpip install mcp-workflow-core[jev]— pydantic yalnız bu grupla gelir, çekirdek motor bağımlılıksız kalır. Katmanın kanonik kuralları, güvenlik kapısı semantiği ve "belgeden adım üretilmez" sınırı: JEV.md. - Yapılandır. Sunucu köküne
workflow.yaml:docs_dir,tool_prefix,categories. Dördüncü alan yazılırsa motor yüklenmez; kategori listesi boş olamaz. - Sar. Tek araç +
action:library.dispatch(action, params). Araç açıklamasını ve yıkıcılık işaretiniACTIONStablosundan üret. Onay kapısı sunucunun işidir:confirmverilmemişsewritevedeletedry_run=Trueile çağrılır ve plan döner,confirm=Trueile gerçek yazma. Araç listesi canlı kayıttanregistered_tools, kaynağıtool_sourceolarak verilir. Hata zarfı (ok,type) sarmalayıcıda; motor istisna fırlatır. - Yayımla.
from workflow_core.adapters.<çerçeve> import register;register(server, library)somut listeyi veworkflow://{id}şablonunu birlikte kaydeder. Somut liste kayıt anının anlık görüntüsüdür: sonradan eklenen belge şablon adresle okunur, listeye sunucu yeniden başlatılınca girer. Bu bedel bilinçli (tasarım kılavuzu §4); yalnız somut liste kurulursa yeni belge hiç okunamaz. - Doğrula. Yeniden başlat, sonra canlı: büyük
İ'li Türkçe sorgu sonuç döndürüyor mu,validatenotunda araç listesinin kaynağı yazıyor mu,workflow://<kimlik>okunuyor mu,dry_rundiske dokunmuyor mu.success: truekanıt değildir.
Ret bir karardır, hata değil. Motor yazmayı ya da silmeyi reddettiğinde istisna
fırlatmaz; allowed, blocked_by, written / deleted taşıyan planı döndürür ve
sonuca kendi hükmünü koyar. ok yalnız "diske yapıldı" demektir: kuru çalıştırmada ve
rette daima false, gerçek koşuda geri okuma doğrulayınca true; planın geçip
geçmeyeceği allowed alanında. Zarfı motorun alanlarından türetin, ok'u koşulsuz
yazmayın; hangi sırayla yazarsanız yazın motorun değeri onaysız planı "yapıldı"
göstermez. İlk bağlantıda reddedilen bir silme koşulsuz ok yüzünden başarılı
görünmüştü (2026-08-25); 0.1.1 kuru çalıştırmada "yapılabilir" anlamında true yazınca
üç sunucuda onaysız plan yapılmış göründü (2026-08-26), 0.2.0 bunu kapattı.
Eski motor dosyası bağlantıdan sonra silinir; kopya kalırsa çatallanma geri gelir. İlk
doğrulamada yeni kurallar uyarı üretir (missing_verified_on, frontmatter içi yorum
satırı); belge uyumu sunucunun işidir, sayılar Faz 1 planının SC-006 tablosunda.
Depo düzeni
workflow_core/ motor paketi: yapılandırma, belge modeli, arama, doğrulama, yazma, kaynak, dağıtıcı
adapters/ çerçeveye dokunan tek yer; çerçeve başına bir dosya
tests/ pytest: modül başına test + kapanış, sessizlik, adsız çıktı testleri
korpus/, golden/ deneme belgeleri ve sorgu-beklenti seti
.sdd/ süreç belgeleri: anayasa, yol haritası, görevler, şartnameler
features/00N-*/ Faz 0 fark tablosu; Faz 1 şartname, plan, yetenek envanteri
_olcumler/ gerçek korpus ölçümleri (sürüm kontrolü dışında)
JEV.md Jev katmanının kanonik kural gövdesi; tüketiciler buna işaret eder
pyproject.toml paket tanımı, sürümün tek kaynağı, ruff ayarı
.test-komutu push öncesi kapının koştuğu test komutu
Geliştirme
Python 3.11 gerekir. Sanal ortam aç, paketi düzenlenebilir kur (tüketici sunucular da aynı komutla, kendi sanal ortamlarına kurar):
python -m venv .venv
.venv\Scripts\python.exe -m pip install -e ".[dev]" # motor + pytest + ruff
python -m pytest tests -q # testler (kaynak ağacından da koşar)
ruff check . ; ruff format --check . # linter ve biçim
python .sdd/scripts/sdd.py durum # aktif özellik, kapılar, sıradaki adım
python .sdd/scripts/sdd.py denetle # belge düzeni denetimi
python .sdd/scripts/sdd.py sizinti # ortama bağlı iz taraması
Push öncesi kapı (pre-push) testleri ve düzen denetimini kendisi koşar; kırmızı testle
push yapılamaz.
İş akışı şartname odaklıdır: bir iş önce .sdd/ROADMAP.md'de durur, sdd yeni ile
şartnamesi açılır, onaylanır, planı yazılır, sdd kontrol sıfır dönünce görevleri
.sdd/TODO.md'ye düşer. Onay sohbette değil dosyada verilir.
Belgeler
| Dosya | Ne için |
|---|---|
| .sdd/CONSTITUTION.md | kural gövdesi, tek nüsha |
| .sdd/ROADMAP.md | yön, aşamalar, bilinçli olarak girilmeyen yollar |
| .sdd/ARCHITECTURE.md | tarihli mimari kararlar ve reddedilen alternatifler |
| .sdd/TODO.md | açık işler |
| .sdd/CHANGELOG.md | tamamlanan dalgalar ve nedenleri |
| .sdd/features/001-faz0-davranis-farki/fark-tablosu.md | Faz 0 çıktısı: kopyaların davranış farkı, hükümler, kusur listesi |
| .sdd/features/002-faz1-motor-paketi/plan.md | Faz 1 planı: tasarım kararları, yetenek envanteri, kapanış testleri, gerçek korpus ölçümleri |
Metadata
Release files for mcp-workflow-core 0.5.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mcp_workflow_core-0.5.5.tar.gz | 48.2 kB | Without provenance | Details for mcp_workflow_core-0.5.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mcp_workflow_core-0.5.5-py3-none-any.whl | Python 3 | none | any | Details for mcp_workflow_core-0.5.5-py3-none-any.whl |
Total release size: 105.8 kB
Release files / mcp_workflow_core-0.5.5.tar.gz
| Download URL | mcp_workflow_core-0.5.5.tar.gz |
|---|---|
| Size | 48.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
df829e42d5a70c94934459e2e434b70e3c76224a680c19b75bc3407df3550557
|
|
BLAKE2b-256 checksum How to use checksums |
5faa69ad3df439aa41441c5d14e79de4449ef8875d0f6043597916c96c84c604
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Release files / mcp_workflow_core-0.5.5-py3-none-any.whl
| Download URL | mcp_workflow_core-0.5.5-py3-none-any.whl |
|---|---|
| Size | 57.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9604fda2e22d20961e8d1e7598cae7133225ddf4e0e4fe0f8ec4ef4927fc1291
|
|
BLAKE2b-256 checksum How to use checksums |
09c9549fc30d8331dedcf619d488ff797927823df6c7d1c0cb106d75c74f6b5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Security for mcp-workflow-core 0.5.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.