[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73745":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":15,"starSnapshotCount":15,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},73745,"metorial","metorial\u002Fmetorial","Connect any AI model to 1200+ integrations (MCP, CLI, API)","https:\u002F\u002Fmetorial.com",null,"TypeScript",3303,365,18,1,0,3,8,34,9,73.09,"Apache License 2.0",false,"main",true,[26,27,28,29,30,31,32,33],"agent","agentic-ai","agentic-workflow","container","docker","mcp","modelcontextprotocol","security","2026-06-12 04:01:11","\u003Cimg src=\".\u002Fassets\u002Frepo-header.webp\" alt=\"Metorial\" width=\"100%\" \u002F>\n\n\u003Cbr \u002F>\n\n\u003Ch1 align=\"center\">Metorial (YC F25)\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\nOpen-source identity and access layer for AI agents. \u003Cbr \u002F>\nConnect agents to real systems with consistent auth, permissions, and observability.\n\u003C\u002Fp>\n\n> [!TIP]\n> _Skip the setup and go hosted:_ The fastest, simplest and most reliable way to use [Metorial](https:\u002F\u002Fmetorial.com) is to sign up to [our hosted platform](https:\u002F\u002Fplatform.metorial.com\u002F).\n>\n> ➡️ **[Get Started (for free)](https:\u002F\u002Fmetorial.com)**\n\n## Introduction\n\nAgents are being connected to production systems, but without a consistent identity and access layer around them: limited access control, no auditing, and no standard access restrictions. Metorial solves that.\n\nMetorial is a control plane for agent access to external systems. It sits between agents and integrations, handling auth, permissions, and observability in a consistent way. Instead of wiring integrations ad hoc, teams get a shared layer that standardizes how agents interact with systems.\n\n## Core Capabilities\n\n- **1200+ integrations** across SaaS tools, enterprise systems, data sources, and custom MCP servers.\n- **Auth and token lifecycle management** for OAuth, API keys, service accounts, and other credential flows.\n- **RBAC, SAML SSO, and IAM built in** so agent access follows your existing security model.\n- **Scoped permissions** per agent, workflow, team, or environment.\n- **Audit logs and traceability** for agent actions, including which agent acted with whose credentials.\n- **Shared access patterns** across teams and projects instead of one-off integration code.\n\n## Metorial for Developers\n\nMetorial gives developers a single interface for connecting agents to real systems.\n\n- Use integrations across tools like Claude Code, Codex, and Cursor without breaking security policies.\n- Expose integrations as tools to any agent framework.\n- Unify OAuth, API keys, and other auth flows into one magic URL.\n- Reuse connections across projects, environments, and people.\n- Avoid re-implementing integration and auth logic for every app.\n\nYou write against one API, or use one connection URL, and Metorial handles the rest.\n\n## Metorial for Security\n\nMetorial provides structure and visibility into how agents access systems.\n\n- Centralized access control with RBAC, SAML SSO, IAM, and scoped credentials.\n- Clear permission boundaries per agent.\n- Audit logs for all actions, including which agent performed them using whose credentials.\n- Controlled sharing of integrations.\n- Consistent and secure credential handling.\n\nThis makes agent activity enforceable and inspectable without relying on manual processes. Makes your Head of AI happy, lets your CISO sleep at night.\n\n## Ecosystem\n\n- [**Metorial**](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial): Integration catalog covering SaaS tools and enterprise systems.\n- [**Metorial Platform**](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-platform): Core engine, open source and self-hostable.\n- [**Metorial CLI**](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fcli): Agent-first CLI for interacting with integrations.\n- [**Lowerdeck**](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Flowerdeck): Shared libraries across the stack.\n- [**Starbase**](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fstarbase): MCP debugging and testing utility.\n\n## SDKs\n\nThe SDKs expose the Metorial API and integrate with agent frameworks.\n\nThey handle auth, access control, and tool exposure in a consistent way.\n\n- \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fmetorial\u002Fmetorial-platform\u002Frefs\u002Fheads\u002Fdev\u002Fassets\u002Ftypescript.png\" width=\"12px\" height=\"12px\" \u002F> [**JavaScript \u002F TypeScript**](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-node)\n- \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fmetorial\u002Fmetorial-platform\u002Frefs\u002Fheads\u002Fdev\u002Fassets\u002Fpython.svg\" width=\"12px\" height=\"12px\" \u002F> [**Python**](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-python)\n\nIf you want to build a custom integration, check out our [API documentation](https:\u002F\u002Fmetorial.com\u002Fapi) for details on how to use the Metorial API directly.\n\n## Self-Hosting\n\nThe [Metorial Platform](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-platform) is the code that powers the engine behind Metorial. It is open source and can be self-hosted. You can use it to run your own Metorial instance, powered by the MCP servers in this repo.\n\n## Quick Start\n\nThe simplest way to get started is with **Metorial Search**, a built-in web search provider that requires no auth configuration.\n\n### JavaScript \u002F TypeScript\n\n```typescript\nimport { Metorial } from 'metorial';\nimport { metorialAiSdk } from '@metorial\u002Fai-sdk';\nimport { anthropic } from '@ai-sdk\u002Fanthropic';\nimport { stepCountIs, streamText } from 'ai';\n\nlet metorial = new Metorial({ apiKey: process.env.METORIAL_API_KEY! });\n\nlet deployment = await metorial.providerDeployments.create({\n  name: 'Metorial Search',\n  providerId: 'metorial-search'\n});\n\nlet session = await metorial.connect({\n  adapter: metorialAiSdk(),\n  providers: [{ providerDeploymentId: deployment.id }]\n});\n\nlet result = streamText({\n  model: anthropic('claude-sonnet-4-20250514'),\n  prompt:\n    'Search the web for the latest news about AI agents and summarize the top 3 stories.',\n  stopWhen: stepCountIs(10),\n  tools: session.tools()\n});\n\nfor await (let part of result.textStream) {\n  process.stdout.write(part);\n}\n```\n\nInstall it with:\n\n```bash\nnpm install metorial @metorial\u002Fai-sdk @ai-sdk\u002Fanthropic ai\n```\n\n### Python\n\n```python\nimport asyncio\nimport os\n\nfrom metorial import Metorial\nfrom metorial import metorial_pydantic_ai\nfrom pydantic_ai import Agent\n\nasync def main():\n  metorial = Metorial(api_key=os.environ[\"METORIAL_API_KEY\"])\n\n  deployment = metorial.provider_deployments.create(\n    name=\"Metorial Search\",\n    provider_id=\"metorial-search\",\n  )\n\n  session = await metorial.connect(\n    adapter=metorial_pydantic_ai(),\n    providers=[{\"provider_deployment_id\": deployment.id}],\n  )\n\n  agent = Agent(\n    \"anthropic:claude-sonnet-4-20250514\",\n    system_prompt=\"You are a helpful research assistant.\",\n    tools=session.tools(),\n  )\n\n  result = await agent.run(\n    \"Search the web for the latest news about AI agents and summarize the top 3 stories.\"\n  )\n  print(result.output)\n\nasyncio.run(main())\n```\n\nInstall it with:\n\n```bash\npip install metorial pydantic-ai python-dotenv\n```\n\n## OAuth Integration\n\nWhen working with services that require user authentication, such as Slack, GitHub, Google Calendar, or SAP, Metorial provides setup sessions to handle the OAuth flow and then reuse the resulting auth config.\n\n### JavaScript \u002F TypeScript\n\n```typescript\nimport { Metorial } from 'metorial';\nimport { metorialAiSdk } from '@metorial\u002Fai-sdk';\n\nlet metorial = new Metorial({ apiKey: process.env.METORIAL_API_KEY! });\n\nlet setupSession = await metorial.providerDeployments.setupSessions.create({\n  providerId: 'your-slack-provider-id',\n  providerAuthMethodId: 'your-slack-auth-method-id'\n});\n\nconsole.log(`Authenticate here: ${setupSession.url}`);\n\nlet completed = await metorial.providerDeployments.setupSessions.waitForCompletion([\n  setupSession\n]);\n\nlet session = await metorial.connect({\n  adapter: metorialAiSdk(),\n  providers: [\n    {\n      providerDeploymentId: 'your-slack-deployment-id',\n      providerAuthConfigId: completed[0]!.authConfig!.id\n    }\n  ]\n});\n\n\u002F\u002F Pass session.tools() to your model SDK.\n```\n\n### Python\n\n```python\nimport os\n\nfrom metorial import Metorial\nfrom metorial import metorial_pydantic_ai\n\nmetorial = Metorial(api_key=os.environ[\"METORIAL_API_KEY\"])\n\nsetup_session = metorial.provider_deployments.setup_sessions.create(\n  provider_id=\"your-slack-provider-id\",\n  provider_auth_method_id=\"oauth\",\n  redirect_url=\"https:\u002F\u002Fyourapp.com\u002Foauth\u002Fcallback\",\n)\n\nprint(f\"Authenticate here: {setup_session.url}\")\n\ncompleted = await metorial.wait_for_setup_session([setup_session])\n\nsession = await metorial.connect(\n  adapter=metorial_pydantic_ai(),\n  providers=[\n    {\n      \"provider_deployment_id\": \"your-slack-deployment-id\",\n      \"provider_auth_config_id\": completed[0].auth_config.id,\n    }\n  ],\n)\ntools = session.tools()\n```\n\n### OAuth Flow Explained\n\n1. **Create a setup session**: Call `providerDeployments.setupSessions.create()` in TypeScript or `provider_deployments.setup_sessions.create()` in Python.\n2. **Send the URL**: Show the setup session URL to users so they can authenticate in their browser.\n3. **Wait for completion**: Wait for the setup session to finish and return an auth config.\n4. **Use the auth config**: Pass the auth config ID when configuring `providers`.\n\n### Provider Configuration Examples\n\nUse the same `providers` list to combine dashboard-managed deployments, pre-created auth configs, inline credentials, and reusable session templates:\n\n```typescript\nlet session = await metorial.connect({\n  adapter: metorialAiSdk(),\n  providers: [\n    { providerDeploymentId: 'your-search-deployment-id' },\n    {\n      providerDeploymentId: 'your-slack-deployment-id',\n      providerAuthConfigId: 'slack-auth-config-id'\n    },\n    {\n      providerDeploymentId: 'your-github-deployment-id',\n      providerAuthConfig: {\n        providerAuthMethodId: 'github-auth-method-id',\n        credentials: { access_token: 'ghp_...' }\n      }\n    },\n    { sessionTemplateId: 'your-template-id' }\n  ]\n});\n```\n\n```python\nsession = await metorial.connect(\n  adapter=metorial_pydantic_ai(),\n  providers=[\n    {\"provider_deployment_id\": \"your-search-deployment-id\"},\n    {\n      \"provider_deployment_id\": \"your-slack-deployment-id\",\n      \"provider_auth_config_id\": \"slack-auth-config-id\",\n    },\n    {\n      \"provider_deployment_id\": \"your-github-deployment-id\",\n      \"provider_auth_config\": {\n        \"provider_auth_method_id\": \"github-auth-method-id\",\n        \"credentials\": {\"access_token\": \"ghp_...\"},\n      },\n    },\n    {\"session_template_id\": \"your-template-id\"},\n  ],\n)\n```\n\n## Examples\n\nCheck out the SDK example directories for complete working examples:\n\n### TypeScript\n\n- [`typescript-quick-start`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-node\u002Ftree\u002Fmain\u002Fexamples\u002Ftypescript-quick-start) - Quick start with Metorial Search\n- [`typescript-ai-sdk`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-node\u002Ftree\u002Fmain\u002Fexamples\u002Ftypescript-ai-sdk) - Vercel AI SDK + Anthropic\n- [`typescript-openai`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-node\u002Ftree\u002Fmain\u002Fexamples\u002Ftypescript-openai) - OpenAI function calling\n- [`typescript-anthropic`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-node\u002Ftree\u002Fmain\u002Fexamples\u002Ftypescript-anthropic) - Anthropic Claude tool use\n- [`typescript-google`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-node\u002Ftree\u002Fmain\u002Fexamples\u002Ftypescript-google) - Google Gemini function declarations\n- [`typescript-openai-compatible`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-node\u002Ftree\u002Fmain\u002Fexamples\u002Ftypescript-openai-compatible) - Any OpenAI-compatible API\n- [`typescript-langchain`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-node\u002Ftree\u002Fmain\u002Fexamples\u002Ftypescript-langchain) - LangChain and LangGraph\n- [`typescript-provider-config`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-node\u002Ftree\u002Fmain\u002Fexamples\u002Ftypescript-provider-config) - Provider auth and session template patterns\n\n### Python\n\n- [`pydantic-ai`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-python\u002Ftree\u002Fmain\u002Fexamples\u002Fpydantic-ai) - PydanticAI + Anthropic\n- [`langchain`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-python\u002Ftree\u002Fmain\u002Fexamples\u002Flangchain) - LangChain agent tools\n- [`langgraph`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-python\u002Ftree\u002Fmain\u002Fexamples\u002Flanggraph) - LangGraph streaming agent\n- [`openai-agents`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-python\u002Ftree\u002Fmain\u002Fexamples\u002Fopenai-agents) - OpenAI Agents SDK\n- [`llamaindex`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-python\u002Ftree\u002Fmain\u002Fexamples\u002Fllamaindex) - LlamaIndex function agent\n- [`autogen`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-python\u002Ftree\u002Fmain\u002Fexamples\u002Fautogen) - AutoGen assistant with tool calls\n- [`crewai`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-python\u002Ftree\u002Fmain\u002Fexamples\u002Fcrewai) - CrewAI agent tools\n- [`google-adk`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-python\u002Ftree\u002Fmain\u002Fexamples\u002Fgoogle-adk) - Google ADK with Gemini\n- [`haystack`](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmetorial-python\u002Ftree\u002Fmain\u002Fexamples\u002Fhaystack) - Haystack pipeline with tools\n\n## Multi-Provider Support\n\nUse the same Metorial providers across different AI clients and frameworks.\n\n| Provider      | TypeScript adapter     | Python adapter                 | Model examples                             |\n| ------------- | ---------------------- | ------------------------------ | ------------------------------------------ |\n| AI SDK        | `@metorial\u002Fai-sdk`     | -                              | Any model via Vercel AI SDK                |\n| OpenAI        | `@metorial\u002Fopenai`     | `metorial_openai()`            | `gpt-4.1`, `gpt-4o`, `o1`, `o3`            |\n| Anthropic     | `@metorial\u002Fanthropic`  | `metorial_anthropic()`         | `claude-sonnet-4-5`, `claude-opus-4`       |\n| Google Gemini | `@metorial\u002Fgoogle`     | `metorial_google()`            | `gemini-2.5-pro`, `gemini-2.5-flash`       |\n| Mistral       | `@metorial\u002Fmistral`    | `metorial_mistral()`           | `mistral-large-latest`, `codestral-latest` |\n| DeepSeek      | `@metorial\u002Fdeepseek`   | `metorial_openai_compatible()` | `deepseek-chat`, `deepseek-reasoner`       |\n| TogetherAI    | `@metorial\u002Ftogetherai` | `metorial_openai_compatible()` | `Llama-4`, `Qwen-3`                        |\n| XAI           | `@metorial\u002Fxai`        | `metorial_openai_compatible()` | `grok-3`, `grok-3-mini`                    |\n| LangChain     | `@metorial\u002Flangchain`  | `metorial_langchain()`         | Any model via LangChain                    |\n| PydanticAI    | -                      | `metorial_pydantic_ai()`       | Any model via PydanticAI                   |\n\n## Motivation\n\nMCP is a powerful standard for connecting AI models to external data and tools, but it focuses on enabling AI clients (like Claude Desktop or Cursor) to connect to tools and data sources.\nMetorial builds on MCP but makes it a one-liner for developers to connect their AI apps to any API, data source, or tool.\nThereby we enable developers to create agentic AI applications that can interact with other systems in a reliable, simple, and secure way.\n\n## Tech Stack\n\n- [**Model Context Protocol (MCP)**](https:\u002F\u002Fmodelcontextprotocol.io) - Metorial is powered by the Model Context Protocol, a standard for connecting AI models to external data and tools.\n- [**Docker**](https:\u002F\u002Fwww.docker.com) - Metorial uses Docker to run MCP servers in a containerized environment, making it easy to deploy and manage.\n- [**MCP Containers**](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmcp-containers) - Metorial provides a collection of pre-built MCP servers in Docker containers.\n- [**Typescript**](https:\u002F\u002Fwww.typescriptlang.org) - Most of Metorial is written in TypeScript.\n- [**Bun**](https:\u002F\u002Fbun.sh) - The core of Metorial runs on Bun, a fast JavaScript runtime that is compatible with Node.js.\n- [**Go**](https:\u002F\u002Fgo.dev) - The MCP engine is written in Go, providing a high-performance backend for Metorial.\n- [**PostgreSQL**](https:\u002F\u002Fwww.postgresql.org) - Metorial uses PostgreSQL for data storage.\n- [**Redis**](https:\u002F\u002Fredis.io) - Metorial uses Redis for caching and real-time data processing.\n- [**MongoDB**](https:\u002F\u002Fwww.mongodb.com) - Metorial uses MongoDB for storing usage data and logs.\n- [**React**](https:\u002F\u002Freactjs.org) - The Metorial Dashboard is built with React.\n\n## Features\n\nMetorial is built to make it super easy for developers to connect their AI apps to external data and tools. Powered by the Model Context Protocol (MCP), Metorial is built on standards.\n\n### Large Server Catalog\n\nThe [Metorial server index](https:\u002F\u002Fgithub.com\u002Fmetorial\u002Fmcp-index) already contains more than 5000 MCP servers. It's a super easy to find and use MCP servers for your AI applications. Everything is searchable and neatly organized, so you can find the right server for your use case.\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fa171030e-0159-4ce2-9e92-f4fb3f7bfdc6\n\n### Embedded MCP Explorer\n\nTest and explore MCP servers directly in the Metorial Dashboard. The embedded MCP Explorer allows you to use any MCP server without leaving the dashboard. This makes it easy to test and debug your integrations before writing any code.\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Feeb73085-e1d6-4745-988a-385694d26500\n\n### Monitoring and Debugging\n\nEvery MCP session is recorded and can be reviewed in the Metorial Dashboard. This allows you to monitor and find issues in your integrations. And even better, if an error occurs, Metorial detects it and provides a detailed error report so you can quickly fix the issue.\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fc676411e-25b6-442a-af22-c8d99e2be25b\n\n### Built for Developers\n\nMetorial is built from the ground up for developers. Here are some of the key features that make Metorial a great choice for developers:\n\n- **Customizable**: Metorial is highly customizable, allowing you to configure your integrations to fit your needs.\n- **Open source**: Metorial is open source, so you can run it on your own infrastructure or use our hosted platform.\n- **Multi-instance support**: Create multiple instances of your Metorial Projects to test different configurations, environments or versions of your integrations.\n- **Powerful SDKs**: Metorial provides powerful SDKs for JavaScript\u002FTypeScript and Python, making it easy to integrate with your AI applications.\n- **Detailed documentation**: Metorial provides [detailed documentation](https:\u002F\u002Fmetorial.com\u002Fdocs) for all its features, including examples and tutorials to help you get started quickly.\n- **Full API access**: Every feature of Metorial is accessible via the API, allowing you to build custom integrations and automate your workflows. Theoretically, you could build your own dashboard using the API.\n- **Advanced dashboard**: The Metorial Dashboard provides a powerful interface for managing your integrations, monitoring your usage, and debugging your MCP servers.\n\n## License\n\nThe Metorial Catalog is licensed under the [Apache License 2.0](LICENSE).\n\n\u003Cdiv align=\"center\">\n  \u003Csub>Built with ❤️ by \u003Ca href=\"https:\u002F\u002Fmetorial.com\">Metorial\u003C\u002Fa>\u003C\u002Fsub>\n\u003C\u002Fdiv>\n","Metorial 是一个开源的身份和访问层，用于连接AI代理与实际系统。它支持超过1200种集成，涵盖SaaS工具、企业系统、数据源等，并通过统一的认证、权限管理和可观测性来标准化代理与系统的交互过程。项目采用TypeScript编写，核心功能包括OAuth和API密钥的生命周期管理、基于角色的访问控制（RBAC）、单点登录（SAML SSO）以及详细的审计日志记录。Metorial适用于需要将AI代理安全地接入生产环境的企业场景，特别是那些希望简化集成流程并增强安全性控制的开发团队。此外，它还为安全团队提供了集中式的访问控制和透明度，有助于满足合规性和监管要求。",2,"2026-06-11 03:47:12","high_star"]