{"id":49521861,"url":"https://github.com/vpakarinen2/marrow","last_synced_at":"2026-05-02T00:02:45.950Z","repository":{"id":352865408,"uuid":"1216964333","full_name":"vpakarinen2/marrow","owner":"vpakarinen2","description":"Orchestrator to manage a modular ecosystem of MCP servers.","archived":false,"fork":false,"pushed_at":"2026-04-21T12:27:50.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T14:28:38.237Z","etag":null,"topics":["agent-orchestrator","agentic-ai","agentic-rag","autonomous-agents","json-rpc","mcp","mcp-server","model-context-protocol","orchestration"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vpakarinen2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-21T12:09:21.000Z","updated_at":"2026-04-21T13:02:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vpakarinen2/marrow","commit_stats":null,"previous_names":["vpakarinen2/marrow"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/vpakarinen2/marrow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpakarinen2%2Fmarrow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpakarinen2%2Fmarrow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpakarinen2%2Fmarrow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpakarinen2%2Fmarrow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vpakarinen2","download_url":"https://codeload.github.com/vpakarinen2/marrow/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpakarinen2%2Fmarrow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32517232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-orchestrator","agentic-ai","agentic-rag","autonomous-agents","json-rpc","mcp","mcp-server","model-context-protocol","orchestration"],"created_at":"2026-05-02T00:02:45.168Z","updated_at":"2026-05-02T00:02:45.945Z","avatar_url":"https://github.com/vpakarinen2.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🦴 Marrow\n\nOrchestrator designed to manage a modular ecosystem of MCP (Model Context Protocol) servers.\n\n## ✨ Key Features\n\n* **Logic \u0026 Output:** Prevents context-flooding by giving the LLM a dedicated `reasoning` and a `final_answer` field.\n  \n* **Orchestrator:** Built on LlamaIndex workflows, ensuring every \"thought\" is strictly typed to a Pydantic schema.\n  \n* **Short-Term Memory:** Retains the user's original objective across complex, multi-step tool invocations.\n  \n* **Stealth Scraping:** Uses Playwright (Chromium) and human-like delays to bypass basic bot protection.\n  \n* **Self-Correction:** If a tool fails, Marrow reads the Python error log and understands the failure.\n  \n* **FastMCP:** Skills run as isolated local servers using the Model Context Protocol.\n\n## 🚀 Installation\n\n### 1. Prerequisites\nYou will need the **`uv`** package manager installed. \n\n### 2. Set Up the Environment\n\n```bash\n# Pin the Python version\nuv python pin 3.12\n\n# Create the virtual environment\nuv venv\n\n# Activate the environment\n.venv\\Scripts\\activate # Windows\nsource .venv/bin/activate # macOS/Linux\n```\n\n### 3. Install Dependencies\n```bash\nuv add fastapi pydantic pydantic-settings ruff rich pytest llama-index instructor openai loguru mcp fastmcp markitdown playwright polars\n```\n\n### 4. Install Playwright Browser\n```bash\nuv run playwright install chromium\n```\n\n### 4. Environment Variables\nCreate a ```.env``` file and add your OpenAI API key.\n\n```bash\nOPENAI_API_KEY=your_sk_key_here\n```\n\n## 🧠 Usage\n\n```bash\nuv run main.py\n```\n\n## ❔Example\n\n```\n╭────────────────────╮\n│  🦴 Marrow | v1.0  │\n╰─ Powered by Llama ─╯\n2026-04-24 17:04:15.160 | INFO     | core:__init__:50 - Marrow orchestrator initialized and ready.\n\nWhat should Marrow do?: use web scraper to fetch https://apnews.com/live/iran-war-israel-trump-04-24-2026 and summarize today's live news\n2026-04-24 17:05:01.459 | INFO     | core:think:73 - Marrow is planning...\n2026-04-24 17:05:03.114 | WARNING  | core:act:106 - ACTION: Connecting to web_scraper...\n2026-04-24 17:05:05.253 | INFO     | core:act:146 - Cleaned URL for Playwright: https://apnews.com/live/iran-war-israel-trump-04-24-2026\n2026-04-24 17:05:05.253 | INFO     | core:act:156 - Invoking fetch_website_content...\n2026-04-24 17:05:11.414 | SUCCESS  | core:act:169 - Skill web_scraper returned 211881 characters.\n2026-04-24 17:05:11.415 | INFO     | core:think:73 - Marrow is planning...\n2026-04-24 17:05:28.604 | DEBUG    | core:think:93 - Plan: I need to provide a clear and concise summary of the live news updates about Iran. From the extracted content, the latest key events include diplomatic movements by Iranian Foreign Minister Abbas Araghchi towards ceasefire talks.\n```\n\n## Author\n\nVille Pakarinen (@vpakarinen2)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpakarinen2%2Fmarrow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvpakarinen2%2Fmarrow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpakarinen2%2Fmarrow/lists"}