{"id":50420096,"url":"https://github.com/vinkius-labs/discover-mcp","last_synced_at":"2026-05-31T08:02:19.414Z","repository":{"id":357032062,"uuid":"1228257637","full_name":"vinkius-labs/discover-mcp","owner":"vinkius-labs","description":"Universal MCP server gateway for AI agents. Discover, activate, and orchestrate 3,400+ Model Context Protocol tools from a single config. Semantic routing, JIT tool loading, FSM gating. TypeScript/stdio.","archived":false,"fork":false,"pushed_at":"2026-05-11T01:45:13.000Z","size":119,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-11T03:29:58.506Z","etag":null,"topics":["ai-agent","claude-desktop","function-calling","llm-tools","mcp","mcp-client","mcp-server","model-context-protocol","npx","semantic-routing","stdio","tool-use","typescript"],"latest_commit_sha":null,"homepage":"https://vinkius.com","language":"TypeScript","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/vinkius-labs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-05-03T19:54:32.000Z","updated_at":"2026-05-11T01:45:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vinkius-labs/discover-mcp","commit_stats":null,"previous_names":["vinkius-labs/discover-mcp"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/vinkius-labs/discover-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinkius-labs%2Fdiscover-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinkius-labs%2Fdiscover-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinkius-labs%2Fdiscover-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinkius-labs%2Fdiscover-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vinkius-labs","download_url":"https://codeload.github.com/vinkius-labs/discover-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinkius-labs%2Fdiscover-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33723549,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"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":["ai-agent","claude-desktop","function-calling","llm-tools","mcp","mcp-client","mcp-server","model-context-protocol","npx","semantic-routing","stdio","tool-use","typescript"],"created_at":"2026-05-31T08:02:18.053Z","updated_at":"2026-05-31T08:02:19.405Z","avatar_url":"https://github.com/vinkius-labs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @vinkius-core/discover-mcp\n\n**Stop configuring MCP servers one by one. Be smart — let your agent discover them.**\n\nEvery MCP server you add to your agent is another config block, another API key, another package version, another thing that breaks at 2 AM. At 5 servers it's annoying. At 15 it's a full-time job. At 50 it's impossible.\n\nDiscover replaces all of them with one line:\n\n```json\n{\n  \"mcpServers\": {\n    \"vinkius\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@vinkius-core/discover-mcp\"],\n      \"env\": { \"VINKIUS_CATALOG_TOKEN\": \"vk_catalog_YOUR_TOKEN\" }\n    }\n  }\n}\n```\n\nYour agent now has access to 3,400+ MCP servers on [Vinkius](https://vinkius.com). It finds what it needs, activates it, uses it, and moves on — without you lifting a finger.\n\n---\n\n## The problem nobody talks about\n\nMCP is incredible. But every real-world setup looks like this:\n\n```json\n{\n  \"mcpServers\": {\n    \"github\":     { \"command\": \"npx\", \"args\": [\"@modelcontextprotocol/server-github\"],  \"env\": { \"GITHUB_TOKEN\": \"...\" } },\n    \"stripe\":     { \"command\": \"npx\", \"args\": [\"@stripe/mcp\"],                          \"env\": { \"STRIPE_KEY\": \"...\" } },\n    \"slack\":      { \"command\": \"npx\", \"args\": [\"@anthropic/mcp-slack\"],                  \"env\": { \"SLACK_TOKEN\": \"...\" } },\n    \"fred\":       { \"command\": \"npx\", \"args\": [\"@mcp/fred-server\"],                      \"env\": { \"FRED_API_KEY\": \"...\" } },\n    \"salesforce\": { \"command\": \"npx\", \"args\": [\"@mcp/salesforce\"],                       \"env\": { \"SF_TOKEN\": \"...\", \"SF_INSTANCE\": \"...\" } },\n    \"snowflake\":  { \"command\": \"npx\", \"args\": [\"@mcp/snowflake\"],                        \"env\": { \"SF_ACCOUNT\": \"...\", \"SF_USER\": \"...\", \"SF_PASS\": \"...\" } },\n    \"jira\":       { \"command\": \"npx\", \"args\": [\"@mcp/jira-server\"],                      \"env\": { \"JIRA_TOKEN\": \"...\", \"JIRA_URL\": \"...\" } },\n    \"datadog\":    { \"command\": \"npx\", \"args\": [\"@mcp/datadog\"],                          \"env\": { \"DD_API_KEY\": \"...\", \"DD_APP_KEY\": \"...\" } },\n    \"notion\":     { \"command\": \"npx\", \"args\": [\"@mcp/notion\"],                           \"env\": { \"NOTION_TOKEN\": \"...\" } },\n    \"hubspot\":    { \"command\": \"npx\", \"args\": [\"@mcp/hubspot\"],                          \"env\": { \"HS_TOKEN\": \"...\" } }\n  }\n}\n```\n\nTen servers. Ten npm packages. Fourteen environment variables. And this is just the beginning.\n\n**Here's what actually happens as you scale:**\n\n| Problem | Why it hurts |\n|---------|-------------|\n| 🧠 **Context window flooding** | Every server dumps its tools into your agent's prompt. 10 servers × 15 tools = 150 tool definitions competing for context. Accuracy drops. Costs spike. |\n| 🔑 **Token sprawl** | Each server needs its own API key. Rotate one? Hope you remember which `.env`, which CI secret, which config file it lives in. |\n| 💥 **Version rot** | `@stripe/mcp` just shipped v3. `@mcp/notion` needs Node 20. `@mcp/jira-server` is deprecated — the new one is `@atlassian/mcp-jira`. Good luck keeping 10+ packages in sync. |\n| 🧊 **Frozen capabilities** | Your agent can only use what you pre-configured. Need weather data for a one-off question? Stop everything, find the package, get the API key, add the config, restart the agent. |\n| 🔇 **Silent failures** | Server 7 of 10 crashes on startup. Your agent doesn't tell you — it just silently loses access to Notion. You find out three days later when a workflow breaks. |\n\nThe irony: **MCP was designed to give agents superpowers, but managing the servers takes the power away from you.**\n\n---\n\n## What if your agent managed its own tools?\n\nThat's Discover.\n\nInstead of pre-loading every server your agent *might* need, you give it access to a catalog of 3,400+ servers on [Vinkius](https://vinkius.com). When your agent hits a problem, it searches the catalog, finds the right tool, activates it on the fly, and keeps working.\n\n**You configure one server. Your agent discovers the rest.**\n\n```json\n{\n  \"mcpServers\": {\n    \"vinkius\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@vinkius-core/discover-mcp\"],\n      \"env\": { \"VINKIUS_CATALOG_TOKEN\": \"vk_catalog_YOUR_TOKEN\" }\n    }\n  }\n}\n```\n\n\u003e 10 servers → 1. Fourteen tokens → 1. Zero maintenance.\n\n---\n\n## See it in action\n\nYou ask your agent: *\"How has U.S. inflation affected our revenue this year?\"*\n\nYour agent has never seen economic data before. But it doesn't need you to install anything:\n\n1. **Recognizes the gap** — \"I need macroeconomic data, but I don't have a tool for that\"\n2. **Searches the catalog** — finds **FRED**, a database with 816,000+ economic time series on [Vinkius](https://vinkius.com)\n3. **Activates it** — FRED tools appear instantly, on demand\n4. **Pulls CPI data** — last 24 months of U.S. Consumer Price Index\n5. **Connects to Stripe** — correlates inflation trends with your actual revenue\n6. **Posts to Slack** — sends the analysis to your #finance channel\n\nYou configured none of that. You didn't know FRED existed. You didn't write a Stripe integration. **Your agent discovered what it needed and used it** — across three completely different domains, in a single conversation.\n\nTomorrow it might need weather data, or satellite imagery, or OSHA compliance records. You'll never have to configure those either.\n\n---\n\n## 3,400+ servers on [Vinkius](https://vinkius.com)\n\n| Category | What your agent can access |\n|----------|---|\n| **Industry Titans** | Salesforce · SAP S/4HANA · Dynamics 365 · Oracle NetSuite · Okta · HubSpot CRM |\n| **Money Moves** | Stripe · PayPal · Plaid · Brex · Mercury · QuickBooks · Shopify · DocuSign |\n| **Ship It** | GitHub · GitLab · Jira · Cloudflare (25 tools!) · CircleCI · Bitbucket · Linear |\n| **AI Frontier** | OpenAI · Anthropic · NVIDIA · Databricks · Cohere · Azure AI · Amazon Bedrock |\n| **The Unthinkable** | FRED (816K+ economic series) · NOAA (36 tools) · Eurostat · U.S. Census · ECB · BLS · EIA |\n| **Fort Knox** | CrowdStrike Falcon · Snyk · CyberArk · Checkmarx · Auth0 · Black Duck |\n| **Growth Engine** | Google Ads · Meta Ads · Facebook Ads · Mailchimp · Amplitude · Ahrefs · ActiveCampaign |\n| **Talk to Me** | Slack · WhatsApp · Twilio · Zoom · Discord · Intercom · Zendesk |\n| **Brain Trust** | Snowflake · BigQuery · Notion · Confluence · Databricks · Elasticsearch |\n| **Superpower** | Midjourney · Wolfram Alpha · ArcGIS · E2B · Home Assistant · Alexa |\n| **Friends of MCP** | Firecrawl · LangSmith · LangGraph · LlamaIndex · Mem0 · Zapier · Make |\n\nEvery server is production-grade and governed: DLP, FinOps, and SSRF protection on every call.\n\n\u003e Browse the full catalog at [vinkius.com](https://vinkius.com)\n\n---\n\n## How it works\n\nInstead of flooding your agent's context with thousands of tool definitions (which kills accuracy and burns tokens), Discover uses **just-in-time activation**: your agent loads only what it needs, when it needs it.\n\n1. **Agent recognizes a gap** — \"I need economic data but I don't have a tool for that\"\n2. **Agent searches the catalog** — finds the right server among 3,400+ on [vinkius.com](https://vinkius.com)\n3. **Agent activates it** — tools appear instantly, zero config\n4. **Agent uses the tools** — as if they were always there\n5. **Agent moves on** — next task, next domain, same conversation\n\nThis works across any combination of domains in a single session. Economics → payments → communications → analytics — your agent handles it seamlessly.\n\n**No restarts. No config changes. No context wasted on tools you're not using.**\n\n---\n\n## Quick start\n\n1. Create a free account at [cloud.vinkius.com](https://cloud.vinkius.com)\n2. Go to **Settings → Catalog Tokens** → Create a token\n3. Add to your config:\n\n#### Claude Desktop / Cursor / Windsurf\n\n```json\n{\n  \"mcpServers\": {\n    \"vinkius\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@vinkius-core/discover-mcp\"],\n      \"env\": {\n        \"VINKIUS_CATALOG_TOKEN\": \"vk_catalog_YOUR_TOKEN_HERE\"\n      }\n    }\n  }\n}\n```\n\nThat's it. Your agent now has access to everything on [Vinkius](https://vinkius.com).\n\n---\n\n## Built-in tools\n\n| Tool | What it does |\n|------|---|\n| `catalog_request_capability` | Describe what you need — the engine finds and ranks the best servers automatically |\n| `catalog_search` | Search by intent — \"process refunds\", \"monitor Kubernetes\", \"analyze sentiment\" |\n| `catalog_browse` | Explore all available categories |\n| `catalog_activate` | Activate a server (free = instant, paid = checkout link) |\n| `catalog_deactivate` | Deactivate a server and remove its tools |\n| `catalog_tools` | List all tools currently available |\n| `catalog_analytics` | Usage stats for your active servers |\n| `catalog_execute` | Run any tool from any active server |\n| `catalog_inspect` | View full parameters and schema for any tool before calling it |\n\n---\n\n## Built with [Vurb.ts](https://vurb.vinkius.com)\n\nDiscover is powered by [Vurb.ts](https://github.com/vinkius-labs/vurb.ts) — the MVA (Model-View-Agent) framework for the Model Context Protocol. Every tool in this project uses the full Vurb architecture:\n\n```typescript\n// This is actual code from this project — not a demo.\n\nconst search = catalog.query('search')\n  .describe('Search the Vinkius MCP marketplace to find servers by keyword.')\n  .instructions(\n    'Use this when the user asks about specific tools or integrations. ' +\n    'For structured capability requests, prefer catalog.request_capability.',\n  )\n  .withString('query', 'What you need (e.g., \"track cloud spending\")')\n  .withOptionalNumber('limit', 'Max results to return (default: 10)')\n  .cached()\n  .tags('discovery')\n  .bindState(['idle', 'exploring', 'activated'], 'SEARCH')\n  .egress(16_000)\n  .returns(SearchPresenter)\n  .handle(async (input, ctx) =\u003e {\n    const result = await ctx.client.search(input.query, input.limit ?? 10);\n    return result.servers;\n  });\n```\n\n**Vurb primitives in use:**\n\n| Primitive | What it does here |\n|-----------|---|\n| `f.router()` | Groups all 9 tools under `catalog.*` — zero prefix repetition |\n| `.returns(Presenter)` | MVA View layer — formats responses with tables, suggestions, and system rules |\n| `.instructions()` | AI-first prompt engineering baked into every tool definition |\n| `.cached()` / `.stale()` | Epistemic cache hints — tells the LLM when data might be outdated |\n| `.bindState()` | FSM temporal gating — prevents the agent from calling `execute` before `activate` |\n| `.invalidates()` | Cache invalidation — `activate` automatically invalidates `tools` and `analytics` |\n| `.concurrency()` | Intent Mutex — prevents the LLM from double-firing `execute` calls |\n| `.egress()` | Payload size guards — protects the agent's context budget |\n| `f.fsm()` | Finite state machine tracking the discovery lifecycle |\n| `f.error()` | Structured self-healing errors with recovery suggestions |\n| `f.prompt()` | Prompt Engine — exposes `/discover` as a slash-command in MCP clients |\n| `definePresenter()` | Response formatting with HATEOAS suggestions and agent limits |\n| `defineModel()` | Domain schemas with Zod validation |\n\n\u003e Build your own MCP server with Vurb - Open Source Framework - at [vurb.vinkius.com](https://github.com/vinkius-labs/vurb.ts)\n\n---\n\n## Security\n\nEvery call flows through the [Vinkius AI Gateway](https://vinkius.com):\n\n- 🔐 One token, per-server credentials resolved transparently\n- 🛡️ PII redaction on every response\n- 💰 Token budget protection\n- 🔒 DNS-pinned upstream fetches — your agent never connects to APIs directly\n\n## Environment variables\n\n| Variable | Required | Default |\n|----------|----------|---------|\n| `VINKIUS_CATALOG_TOKEN` | ✅ | — |\n\n## Development\n\n```bash\nnpm install\nVINKIUS_CATALOG_TOKEN=vk_catalog_... \nnpm run dev\nnpm test        # 202+ tests\nnpm run build\n```\n\n## License\n\nApache 2.0 — see [LICENSE](./LICENSE)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eStop configuring servers one by one. Let your agent figure it out.\u003c/strong\u003e\u003cbr/\u003e\n  Built by \u003ca href=\"https://vinkius.com\"\u003eVinkius\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinkius-labs%2Fdiscover-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvinkius-labs%2Fdiscover-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinkius-labs%2Fdiscover-mcp/lists"}