arkaos 4.14.0 → 4.14.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/VERSION CHANGED
@@ -1 +1 @@
1
- 4.14.0
1
+ 4.14.1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_meta": {
3
3
  "generator": "scripts/marketplace_gen.py",
4
- "version": "4.14.0",
4
+ "version": "4.14.1",
5
5
  "marketplace": "arkaos"
6
6
  },
7
7
  "structural": {
@@ -0,0 +1,451 @@
1
+ """
2
+ ARKA OS — Command Registry for MCP Prompts Server.
3
+
4
+ Data-driven registry of all department commands exposed as MCP prompts.
5
+ Each command maps to a SKILL.md file that provides the full instruction set.
6
+ """
7
+
8
+ COMMANDS: dict[str, dict] = {
9
+ # ── System (arka) ────────────────────────────────────────────────────────
10
+ "arka_standup": {
11
+ "department": "system",
12
+ "skill_dir": "arka",
13
+ "slash_command": "/arka standup",
14
+ "title": "ARKA — Daily Standup",
15
+ "description": "Daily standup: summarize active projects, tasks, meetings, and priorities.",
16
+ "arguments": [],
17
+ },
18
+ "arka_status": {
19
+ "department": "system",
20
+ "skill_dir": "arka",
21
+ "slash_command": "/arka status",
22
+ "title": "ARKA — System Status",
23
+ "description": "System status: version, departments, personas, skills, MCPs.",
24
+ "arguments": [],
25
+ },
26
+ # ── Dev ───────────────────────────────────────────────────────────────────
27
+ "dev_do": {
28
+ "department": "dev",
29
+ "skill_dir": "arka-dev",
30
+ "slash_command": "/dev do",
31
+ "title": "Dev — Smart Orchestrator",
32
+ "description": "Smart orchestrator that routes to the correct dev workflow.",
33
+ "arguments": [
34
+ {"name": "description", "description": "What you want to build or fix", "required": True},
35
+ ],
36
+ },
37
+ "dev_feature": {
38
+ "department": "dev",
39
+ "skill_dir": "arka-dev",
40
+ "slash_command": "/dev feature",
41
+ "title": "Dev — Implement Feature",
42
+ "description": "Implement a feature with the full 8-phase development workflow.",
43
+ "arguments": [
44
+ {"name": "description", "description": "Feature description", "required": True},
45
+ ],
46
+ },
47
+ "dev_api": {
48
+ "department": "dev",
49
+ "skill_dir": "arka-dev",
50
+ "slash_command": "/dev api",
51
+ "title": "Dev — Generate API",
52
+ "description": "Generate API endpoints with tests and documentation.",
53
+ "arguments": [
54
+ {"name": "spec", "description": "API specification or description", "required": True},
55
+ ],
56
+ },
57
+ "dev_plan": {
58
+ "department": "dev",
59
+ "skill_dir": "arka-dev",
60
+ "slash_command": "/dev plan",
61
+ "title": "Dev — Architecture Plan",
62
+ "description": "Architecture planning only (no code output).",
63
+ "arguments": [
64
+ {"name": "description", "description": "What to plan", "required": True},
65
+ ],
66
+ },
67
+ "dev_debug": {
68
+ "department": "dev",
69
+ "skill_dir": "arka-dev",
70
+ "slash_command": "/dev debug",
71
+ "title": "Dev — Debug Issue",
72
+ "description": "Diagnose and fix a bug.",
73
+ "arguments": [
74
+ {"name": "issue", "description": "Bug or issue description", "required": True},
75
+ ],
76
+ },
77
+ "dev_refactor": {
78
+ "department": "dev",
79
+ "skill_dir": "arka-dev",
80
+ "slash_command": "/dev refactor",
81
+ "title": "Dev — Refactor Code",
82
+ "description": "Refactor code with quality gates.",
83
+ "arguments": [
84
+ {"name": "target", "description": "Code or component to refactor", "required": True},
85
+ ],
86
+ },
87
+ "dev_db": {
88
+ "department": "dev",
89
+ "skill_dir": "arka-dev",
90
+ "slash_command": "/dev db",
91
+ "title": "Dev — Database Schema",
92
+ "description": "Database schema design and migrations.",
93
+ "arguments": [
94
+ {"name": "description", "description": "Schema or migration description", "required": True},
95
+ ],
96
+ },
97
+ "dev_review": {
98
+ "department": "dev",
99
+ "skill_dir": "arka-dev",
100
+ "slash_command": "/dev review",
101
+ "title": "Dev — Code Review",
102
+ "description": "Code review of current changes.",
103
+ "arguments": [],
104
+ },
105
+ "dev_test": {
106
+ "department": "dev",
107
+ "skill_dir": "arka-dev",
108
+ "slash_command": "/dev test",
109
+ "title": "Dev — Run Tests",
110
+ "description": "Generate and run test suite.",
111
+ "arguments": [],
112
+ },
113
+ "dev_deploy": {
114
+ "department": "dev",
115
+ "skill_dir": "arka-dev",
116
+ "slash_command": "/dev deploy",
117
+ "title": "Dev — Deploy",
118
+ "description": "Deploy to an environment.",
119
+ "arguments": [
120
+ {"name": "environment", "description": "Target environment (dev/staging/prod)", "required": True},
121
+ ],
122
+ },
123
+ "dev_docs": {
124
+ "department": "dev",
125
+ "skill_dir": "arka-dev",
126
+ "slash_command": "/dev docs",
127
+ "title": "Dev — Documentation",
128
+ "description": "Generate technical documentation.",
129
+ "arguments": [],
130
+ },
131
+ "dev_research": {
132
+ "department": "dev",
133
+ "skill_dir": "arka-dev",
134
+ "slash_command": "/dev research",
135
+ "title": "Dev — Research",
136
+ "description": "Research a library, framework, or integration.",
137
+ "arguments": [
138
+ {"name": "topic", "description": "Research topic", "required": True},
139
+ ],
140
+ },
141
+ "dev_scaffold": {
142
+ "department": "dev",
143
+ "skill_dir": "arka-scaffold",
144
+ "slash_command": "/dev scaffold",
145
+ "title": "Dev — Scaffold Project",
146
+ "description": "Create a new project from a starter template.",
147
+ "arguments": [
148
+ {"name": "type", "description": "Project type (laravel, nuxt-saas, nuxt-landing, vue-saas, react, nextjs, etc.)", "required": True},
149
+ {"name": "name", "description": "Project name", "required": True},
150
+ ],
151
+ },
152
+ # ── Marketing ─────────────────────────────────────────────────────────────
153
+ "mkt_social": {
154
+ "department": "mkt",
155
+ "skill_dir": "arka-marketing",
156
+ "slash_command": "/mkt social",
157
+ "title": "Mkt — Social Media Posts",
158
+ "description": "Generate social media posts for multiple platforms.",
159
+ "arguments": [
160
+ {"name": "topic", "description": "Content topic", "required": True},
161
+ {"name": "persona", "description": "Persona name for style (optional)", "required": False},
162
+ ],
163
+ },
164
+ "mkt_calendar": {
165
+ "department": "mkt",
166
+ "skill_dir": "arka-marketing",
167
+ "slash_command": "/mkt calendar",
168
+ "title": "Mkt — Content Calendar",
169
+ "description": "Create a content calendar for a week or month.",
170
+ "arguments": [
171
+ {"name": "period", "description": "Time period (week or month)", "required": True},
172
+ ],
173
+ },
174
+ "mkt_email": {
175
+ "department": "mkt",
176
+ "skill_dir": "arka-marketing",
177
+ "slash_command": "/mkt email",
178
+ "title": "Mkt — Email Sequence",
179
+ "description": "Create email sequences (welcome, nurture, launch, cart).",
180
+ "arguments": [
181
+ {"name": "type", "description": "Email type (welcome, nurture, launch, cart)", "required": True},
182
+ {"name": "topic", "description": "Email topic", "required": True},
183
+ ],
184
+ },
185
+ "mkt_landing": {
186
+ "department": "mkt",
187
+ "skill_dir": "arka-marketing",
188
+ "slash_command": "/mkt landing",
189
+ "title": "Mkt — Landing Page Copy",
190
+ "description": "Generate landing page copy for a product.",
191
+ "arguments": [
192
+ {"name": "product", "description": "Product name or description", "required": True},
193
+ {"name": "persona", "description": "Persona name for style (optional)", "required": False},
194
+ ],
195
+ },
196
+ "mkt_ads": {
197
+ "department": "mkt",
198
+ "skill_dir": "arka-marketing",
199
+ "slash_command": "/mkt ads",
200
+ "title": "Mkt — Ad Copy",
201
+ "description": "Generate ad copy for multiple platforms.",
202
+ "arguments": [
203
+ {"name": "product", "description": "Product name or description", "required": True},
204
+ {"name": "persona", "description": "Persona name for style (optional)", "required": False},
205
+ ],
206
+ },
207
+ "mkt_blog": {
208
+ "department": "mkt",
209
+ "skill_dir": "arka-marketing",
210
+ "slash_command": "/mkt blog",
211
+ "title": "Mkt — Blog Article",
212
+ "description": "Write an SEO-optimized blog article.",
213
+ "arguments": [
214
+ {"name": "topic", "description": "Blog topic", "required": True},
215
+ {"name": "persona", "description": "Persona name for style (optional)", "required": False},
216
+ ],
217
+ },
218
+ # ── E-commerce ────────────────────────────────────────────────────────────
219
+ "ecom_audit": {
220
+ "department": "ecom",
221
+ "skill_dir": "arka-ecommerce",
222
+ "slash_command": "/ecom audit",
223
+ "title": "Ecom — Store Audit",
224
+ "description": "Full e-commerce store audit with parallel analysis.",
225
+ "arguments": [
226
+ {"name": "url", "description": "Store URL", "required": True},
227
+ ],
228
+ },
229
+ "ecom_product": {
230
+ "department": "ecom",
231
+ "skill_dir": "arka-ecommerce",
232
+ "slash_command": "/ecom product",
233
+ "title": "Ecom — Product Listing",
234
+ "description": "Create an optimized product listing.",
235
+ "arguments": [
236
+ {"name": "description", "description": "Product description", "required": True},
237
+ ],
238
+ },
239
+ "ecom_pricing": {
240
+ "department": "ecom",
241
+ "skill_dir": "arka-ecommerce",
242
+ "slash_command": "/ecom pricing",
243
+ "title": "Ecom — Pricing Strategy",
244
+ "description": "Pricing strategy analysis for a product.",
245
+ "arguments": [
246
+ {"name": "product", "description": "Product name", "required": True},
247
+ ],
248
+ },
249
+ "ecom_launch": {
250
+ "department": "ecom",
251
+ "skill_dir": "arka-ecommerce",
252
+ "slash_command": "/ecom launch",
253
+ "title": "Ecom — Store Launch",
254
+ "description": "New store launch plan.",
255
+ "arguments": [
256
+ {"name": "store", "description": "Store name", "required": True},
257
+ ],
258
+ },
259
+ # ── Finance ───────────────────────────────────────────────────────────────
260
+ "fin_report": {
261
+ "department": "fin",
262
+ "skill_dir": "arka-finance",
263
+ "slash_command": "/fin report",
264
+ "title": "Fin — Financial Report",
265
+ "description": "Generate a financial report (monthly/quarterly).",
266
+ "arguments": [
267
+ {"name": "period", "description": "Report period (month or quarter)", "required": True},
268
+ ],
269
+ },
270
+ "fin_forecast": {
271
+ "department": "fin",
272
+ "skill_dir": "arka-finance",
273
+ "slash_command": "/fin forecast",
274
+ "title": "Fin — Revenue Forecast",
275
+ "description": "Revenue and expense forecast.",
276
+ "arguments": [
277
+ {"name": "months", "description": "Number of months to project", "required": True},
278
+ ],
279
+ },
280
+ "fin_budget": {
281
+ "department": "fin",
282
+ "skill_dir": "arka-finance",
283
+ "slash_command": "/fin budget",
284
+ "title": "Fin — Budget Planning",
285
+ "description": "Project budget planning.",
286
+ "arguments": [
287
+ {"name": "project", "description": "Project name", "required": True},
288
+ ],
289
+ },
290
+ "fin_negotiate": {
291
+ "department": "fin",
292
+ "skill_dir": "arka-finance",
293
+ "slash_command": "/fin negotiate",
294
+ "title": "Fin — Negotiation Prep",
295
+ "description": "Prepare for bank or investor negotiation.",
296
+ "arguments": [
297
+ {"name": "context", "description": "Negotiation context", "required": True},
298
+ ],
299
+ },
300
+ "fin_pitch": {
301
+ "department": "fin",
302
+ "skill_dir": "arka-finance",
303
+ "slash_command": "/fin pitch",
304
+ "title": "Fin — Investor Pitch",
305
+ "description": "Investor pitch preparation.",
306
+ "arguments": [
307
+ {"name": "investor", "description": "Investor name or type", "required": True},
308
+ ],
309
+ },
310
+ # ── Operations ────────────────────────────────────────────────────────────
311
+ "ops_tasks": {
312
+ "department": "ops",
313
+ "skill_dir": "arka-operations",
314
+ "slash_command": "/ops tasks",
315
+ "title": "Ops — Task Management",
316
+ "description": "View and manage tasks (via ClickUp).",
317
+ "arguments": [],
318
+ },
319
+ "ops_email": {
320
+ "department": "ops",
321
+ "skill_dir": "arka-operations",
322
+ "slash_command": "/ops email",
323
+ "title": "Ops — Email",
324
+ "description": "Send or draft emails (via Gmail).",
325
+ "arguments": [
326
+ {"name": "type", "description": "Email type or action", "required": True},
327
+ ],
328
+ },
329
+ "ops_calendar": {
330
+ "department": "ops",
331
+ "skill_dir": "arka-operations",
332
+ "slash_command": "/ops calendar",
333
+ "title": "Ops — Calendar",
334
+ "description": "View and manage schedule (via Google Calendar).",
335
+ "arguments": [],
336
+ },
337
+ "ops_meeting": {
338
+ "department": "ops",
339
+ "skill_dir": "arka-operations",
340
+ "slash_command": "/ops meeting",
341
+ "title": "Ops — Meeting",
342
+ "description": "Schedule and prepare a meeting.",
343
+ "arguments": [
344
+ {"name": "topic", "description": "Meeting topic", "required": True},
345
+ ],
346
+ },
347
+ "ops_automate": {
348
+ "department": "ops",
349
+ "skill_dir": "arka-operations",
350
+ "slash_command": "/ops automate",
351
+ "title": "Ops — Automate Process",
352
+ "description": "Create automation for a routine process.",
353
+ "arguments": [
354
+ {"name": "process", "description": "Process description", "required": True},
355
+ ],
356
+ },
357
+ # ── Strategy ──────────────────────────────────────────────────────────────
358
+ "strat_brainstorm": {
359
+ "department": "strat",
360
+ "skill_dir": "arka-strategy",
361
+ "slash_command": "/strat brainstorm",
362
+ "title": "Strat — Brainstorm",
363
+ "description": "Structured brainstorming with 5 perspectives.",
364
+ "arguments": [
365
+ {"name": "topic", "description": "Brainstorm topic", "required": True},
366
+ ],
367
+ },
368
+ "strat_market": {
369
+ "department": "strat",
370
+ "skill_dir": "arka-strategy",
371
+ "slash_command": "/strat market",
372
+ "title": "Strat — Market Analysis",
373
+ "description": "Market analysis and opportunity mapping.",
374
+ "arguments": [
375
+ {"name": "sector", "description": "Market sector", "required": True},
376
+ ],
377
+ },
378
+ "strat_competitor": {
379
+ "department": "strat",
380
+ "skill_dir": "arka-strategy",
381
+ "slash_command": "/strat competitor",
382
+ "title": "Strat — Competitive Analysis",
383
+ "description": "Competitive intelligence analysis.",
384
+ "arguments": [
385
+ {"name": "url", "description": "Competitor URL or name", "required": True},
386
+ ],
387
+ },
388
+ "strat_swot": {
389
+ "department": "strat",
390
+ "skill_dir": "arka-strategy",
391
+ "slash_command": "/strat swot",
392
+ "title": "Strat — SWOT Analysis",
393
+ "description": "SWOT analysis for a business.",
394
+ "arguments": [
395
+ {"name": "business", "description": "Business name", "required": True},
396
+ ],
397
+ },
398
+ "strat_evaluate": {
399
+ "department": "strat",
400
+ "skill_dir": "arka-strategy",
401
+ "slash_command": "/strat evaluate",
402
+ "title": "Strat — Evaluate Idea",
403
+ "description": "Evaluate a new idea (pros, cons, risks, ROI).",
404
+ "arguments": [
405
+ {"name": "idea", "description": "Idea description", "required": True},
406
+ ],
407
+ },
408
+ # ── Knowledge Base ────────────────────────────────────────────────────────
409
+ "kb_learn": {
410
+ "department": "kb",
411
+ "skill_dir": "arka-knowledge",
412
+ "slash_command": "/kb learn",
413
+ "title": "KB — Learn from Content",
414
+ "description": "Queue URLs for async download and transcription.",
415
+ "arguments": [
416
+ {"name": "urls", "description": "One or more URLs to learn from", "required": True},
417
+ {"name": "persona", "description": "Persona name to associate (optional)", "required": False},
418
+ ],
419
+ },
420
+ "kb_search": {
421
+ "department": "kb",
422
+ "skill_dir": "arka-knowledge",
423
+ "slash_command": "/kb search",
424
+ "title": "KB — Search Knowledge",
425
+ "description": "Search the knowledge base by topic.",
426
+ "arguments": [
427
+ {"name": "query", "description": "Search query", "required": True},
428
+ ],
429
+ },
430
+ "kb_persona": {
431
+ "department": "kb",
432
+ "skill_dir": "arka-knowledge",
433
+ "slash_command": "/kb persona",
434
+ "title": "KB — View Persona",
435
+ "description": "View or manage a persona profile.",
436
+ "arguments": [
437
+ {"name": "name", "description": "Persona name", "required": True},
438
+ ],
439
+ },
440
+ "kb_write": {
441
+ "department": "kb",
442
+ "skill_dir": "arka-knowledge",
443
+ "slash_command": "/kb write",
444
+ "title": "KB — Generate Content",
445
+ "description": "Generate content using a persona's style and knowledge.",
446
+ "arguments": [
447
+ {"name": "persona", "description": "Persona name", "required": True},
448
+ {"name": "type", "description": "Content type to generate", "required": True},
449
+ ],
450
+ },
451
+ }
@@ -0,0 +1,15 @@
1
+ [project]
2
+ name = "arka-prompts"
3
+ version = "0.1.0"
4
+ description = "ARKA OS department commands as MCP prompts"
5
+ requires-python = ">=3.11"
6
+ dependencies = [
7
+ "mcp[cli]>=1.2.0",
8
+ ]
9
+
10
+ [tool.hatch.build.targets.wheel]
11
+ packages = ["."]
12
+
13
+ [build-system]
14
+ requires = ["hatchling"]
15
+ build-backend = "hatchling.build"
@@ -0,0 +1,156 @@
1
+ """
2
+ ARKA OS — MCP Prompts Server.
3
+
4
+ Exposes all ARKA OS department commands as MCP prompts so they work in
5
+ both Claude Code and Claude Desktop.
6
+
7
+ Usage:
8
+ uv run server.py
9
+ """
10
+
11
+ import os
12
+ from pathlib import Path
13
+
14
+ from mcp.server.fastmcp import FastMCP
15
+ from mcp.server.fastmcp.prompts.base import Prompt, PromptArgument
16
+
17
+ from commands import COMMANDS
18
+
19
+ mcp = FastMCP(
20
+ "arka-prompts",
21
+ instructions="ARKA OS department commands. Select a prompt to run an ARKA OS command.",
22
+ )
23
+
24
+
25
+ def _find_skills_dir() -> Path:
26
+ """Resolve the base skills directory where SKILL.md files live.
27
+
28
+ Resolution order:
29
+ 1. ARKA_OS env var -> parent dir is the skills root
30
+ 2. ~/.claude/skills/arka/.repo-path -> dev mode (read repo path from file)
31
+ 3. Fallback to ~/.claude/skills/
32
+ """
33
+ arka_os = os.environ.get("ARKA_OS")
34
+ if arka_os:
35
+ arka_path = Path(arka_os)
36
+ if arka_path.is_dir():
37
+ return arka_path.parent # e.g. ~/.claude/skills/
38
+
39
+ # Dev mode: .repo-path points to the repo checkout
40
+ repo_path_file = Path.home() / ".claude" / "skills" / "arka" / ".repo-path"
41
+ if repo_path_file.exists():
42
+ repo_path = Path(repo_path_file.read_text().strip())
43
+ if repo_path.is_dir():
44
+ return repo_path # Return repo root for dev mode resolution
45
+
46
+ return Path.home() / ".claude" / "skills"
47
+
48
+
49
+ def _load_skill(skill_dir: str) -> str | None:
50
+ """Load SKILL.md content for the given skill directory name.
51
+
52
+ Tries installed location first, then falls back to dev repo layout.
53
+ """
54
+ skills_base = _find_skills_dir()
55
+
56
+ # Installed layout: ~/.claude/skills/<skill_dir>/SKILL.md
57
+ installed = skills_base / skill_dir / "SKILL.md"
58
+ if installed.is_file():
59
+ return installed.read_text(encoding="utf-8")
60
+
61
+ # Dev repo layout: <repo>/departments/<dept>/SKILL.md
62
+ # Map skill_dir names to department directories
63
+ dept_map = {
64
+ "arka": "arka",
65
+ "arka-dev": "departments/dev",
66
+ "arka-marketing": "departments/marketing",
67
+ "arka-ecommerce": "departments/ecommerce",
68
+ "arka-finance": "departments/finance",
69
+ "arka-operations": "departments/operations",
70
+ "arka-strategy": "departments/strategy",
71
+ "arka-knowledge": "departments/knowledge",
72
+ "arka-scaffold": "departments/dev/skills/scaffold",
73
+ }
74
+ if skill_dir in dept_map:
75
+ dev_path = skills_base / dept_map[skill_dir] / "SKILL.md"
76
+ if dev_path.is_file():
77
+ return dev_path.read_text(encoding="utf-8")
78
+
79
+ return None
80
+
81
+
82
+ def _build_instruction(cmd_key: str, cmd: dict, user_args: dict[str, str]) -> str:
83
+ """Build the prompt message returned to the LLM."""
84
+ parts: list[str] = []
85
+
86
+ # Header with command context
87
+ parts.append(f"# ARKA OS — {cmd['title']}")
88
+ parts.append("")
89
+ parts.append(f"**Command:** `{cmd['slash_command']}`")
90
+
91
+ # Include user-provided arguments
92
+ if user_args:
93
+ parts.append("")
94
+ parts.append("**User input:**")
95
+ for arg_name, arg_value in user_args.items():
96
+ if arg_value:
97
+ parts.append(f"- **{arg_name}:** {arg_value}")
98
+
99
+ parts.append("")
100
+ parts.append("---")
101
+ parts.append("")
102
+
103
+ # Load and append the full SKILL.md
104
+ skill_content = _load_skill(cmd["skill_dir"])
105
+ if skill_content:
106
+ parts.append(skill_content)
107
+ else:
108
+ parts.append(
109
+ f"*SKILL.md not found for `{cmd['skill_dir']}`. "
110
+ f"Ensure ARKA OS is installed (`bash install.sh`).*"
111
+ )
112
+
113
+ parts.append("")
114
+ parts.append("---")
115
+ parts.append("")
116
+ parts.append(
117
+ f"Now execute the `{cmd['slash_command']}` command "
118
+ f"with the user input provided above."
119
+ )
120
+
121
+ return "\n".join(parts)
122
+
123
+
124
+ def _make_prompt_fn(cmd_key: str, cmd: dict):
125
+ """Create a prompt handler function for a command."""
126
+ arg_names = [a["name"] for a in cmd["arguments"]]
127
+
128
+ def handler(**kwargs: str) -> str:
129
+ user_args = {name: kwargs.get(name, "") for name in arg_names}
130
+ return _build_instruction(cmd_key, cmd, user_args)
131
+
132
+ return handler
133
+
134
+
135
+ # Register all commands as prompts
136
+ for cmd_key, cmd_data in COMMANDS.items():
137
+ prompt_args = [
138
+ PromptArgument(
139
+ name=a["name"],
140
+ description=a["description"],
141
+ required=a["required"],
142
+ )
143
+ for a in cmd_data["arguments"]
144
+ ]
145
+
146
+ prompt = Prompt(
147
+ name=cmd_key,
148
+ description=f"{cmd_data['title']}: {cmd_data['description']}",
149
+ arguments=prompt_args or None,
150
+ fn=_make_prompt_fn(cmd_key, cmd_data),
151
+ )
152
+ mcp.add_prompt(prompt)
153
+
154
+
155
+ if __name__ == "__main__":
156
+ mcp.run(transport="stdio")
@@ -0,0 +1,10 @@
1
+ [project]
2
+ name = "arka-tools"
3
+ version = "1.0.0"
4
+ description = "ArkaOS programmatic MCP tools — KB search, workflow state, Quality Gate, recipes, session memory, telemetry"
5
+ requires-python = ">=3.11"
6
+ dependencies = [
7
+ "mcp[cli]>=1.2.0",
8
+ "pydantic>=2.0",
9
+ "pyyaml>=6.0",
10
+ ]