Connect AI agents to 600+ integrations with a single interface - OAuth, scaling, and monitoring included
Add to Claude Desktop config.json
{
"mcpServers": {
"metorial-metorial": {
"command": "node",
"args": [
"~/.mcp/metorial/index.js"
]
}
}
} Get the source and run locally
git clone https://github.com/metorial/metorial.git ~/.mcp/metorial
cd ~/.mcp/metorial
Open-source identity and access layer for AI agents.
Connect agents to real systems with consistent auth, permissions, and observability.
[!TIP] Skip the setup and go hosted: The fastest, simplest and most reliable way to use Metorial is to sign up to our hosted platform.
Agents 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.
Metorial 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.
Metorial gives developers a single interface for connecting agents to real systems.
You write against one API, or use one connection URL, and Metorial handles the rest.
Metorial provides structure and visibility into how agents access systems.
This makes agent activity enforceable and inspectable without relying on manual processes. Makes your Head of AI happy, lets your CISO sleep at night.
The SDKs expose the Metorial API and integrate with agent frameworks.
They handle auth, access control, and tool exposure in a consistent way.
If you want to build a custom integration, check out our API documentation for details on how to use the Metorial API directly.
The Metorial 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.
The simplest way to get started is with Metorial Search, a built-in web search provider that requires no auth configuration.
import { Metorial } from 'metorial';
import { metorialAiSdk } from '@metorial/ai-sdk';
import { anthropic } from '@ai-sdk/anthropic';
import { stepCountIs, streamText } from 'ai';
let metorial = new Metorial({ apiKey: process.env.METORIAL_API_KEY! });
let deployment = await metorial.providerDeployments.create({
name: 'Metorial Search',
providerId: 'metorial-search'
});
let session = await metorial.connect({
adapter: metorialAiSdk(),
providers: [{ providerDeploymentId: deployment.id }]
});
let result = streamText({
model: anthropic('claude-sonnet-4-20250514'),
prompt:
'Search the web for the latest news about AI agents and summarize the top 3 stories.',
stopWhen: stepCountIs(10),
tools: session.tools()
});
for await (let part of result.textStream) {
process.stdout.write(part);
}
Install it with:
npm install metorial @metorial/ai-sdk @ai-sdk/anthropic ai
import asyncio
import os
from metorial import Metorial
from metorial import metorial_pydantic_ai
from pydantic_ai import Agent
async def main():
metorial = Metorial(api_key=os.environ["METORIAL_API_KEY"])
deployment = metorial.provider_deployments.create(
name="Metorial Search",
provider_id="metorial-search",
)
session = await metorial.connect(
adapter=metorial_pydantic_ai(),
providers=[{"provider_deployment_id": deployment.id}],
)
agent = Agent(
"anthropic:claude-sonnet-4-20250514",
system_prompt="You are a helpful research assistant.",
tools=session.tools(),
)
result = await agent.run(
"Search the web for the latest news about AI agents and summarize the top 3 stories."
)
print(result.output)
asyncio.run(main())
Install it with:
pip install metorial pydantic-ai python-dotenv
When 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.
import { Metorial } from 'metorial';
import { metorialAiSdk } from '@metorial/ai-sdk';
let metorial = new Metorial({ apiKey: process.env.METORIAL_API_KEY! });
let setupSession = await metorial.providerDeployments.setupSessions.create({
providerId: 'your-slack-provider-id',
providerAuthMethodId: 'your-slack-auth-method-id'
});
console.log(`Authenticate here: ${setupSession.url}`);
let completed = await metorial.providerDeployments.setupSessions.waitForCompletion([
setupSession
]);
let session = await metorial.connect({
adapter: metorialAiSdk(),
providers: [
{
providerDeploymentId: 'your-slack-deployment-id',
providerAuthConfigId: completed[0]!.authConfig!.id
}
]
});
// Pass session.tools() to your model SDK.
import os
from metorial import Metorial
from metorial import metorial_pydantic_ai
metorial = Metorial(api_key=os.environ["METORIAL_API_KEY"])
setup_session = metorial.provider_deployments.setup_sessions.create(
provider_id="your-slack-provider-id",
provider_auth_method_id="oauth",
redirect_url="https://yourapp.com/oauth/callback",
)
print(f"Authenticate here: {setup_session.url}")
completed = await metorial.wait_for_setup_session([setup_session])
session = await metorial.connect(
adapter=metorial_pydantic_ai(),
providers=[
{
"provider_deployment_id": "your-slack-deployment-id",
"provider_auth_config_id": completed[0].auth_config.id,
}
],
)
tools = session.tools()
providerDeployments.setupSessions.create() in TypeScript or provider_deployments.setup_sessions.create() in Python.providers.Use the same providers list to combine dashboard-managed deployments, pre-created auth configs, inline credentials, and reusable session templates:
let session = await metorial.connect({
adapter: metorialAiSdk(),
providers: [
{ providerDeploymentId: 'your-search-deployment-id' },
{
providerDeploymentId: 'your-slack-deployment-id',
providerAuthConfigId: 'slack-auth-config-id'
},
{
providerDeploymentId: 'your-github-deployment-id',
providerAuthConfig: {
providerAuthMethodId: 'github-auth-method-id',
credentials: { access_token: 'ghp_...' }
}
},
{ sessionTemplateId: 'your-template-id' }
]
});
session = await metorial.connect(
adapter=metorial_pydantic_ai(),
providers=[
{"provider_deployment_id": "your-search-deployment-id"},
{
"provider_deployment_id": "your-slack-deployment-id",
"provider_auth_config_id": "slack-auth-config-id",
},
{
"provider_deployment_id": "your-github-deployment-id",
"provider_auth_config": {
"provider_auth_method_id": "github-auth-method-id",
"credentials": {"access_token": "ghp_..."},
},
},
{"session_template_id": "your-template-id"},
],
)
Check out the SDK example directories for complete working examples:
typescript-quick-start - Quick start with Metorial Searchtypescript-ai-sdk - Vercel AI SDK + Anthropictypescript-openai - OpenAI function callingtypescript-anthropic - Anthropic Claude tool usetypescript-google - Google Gemini function declarationstypescript-openai-compatible - Any OpenAI-compatible APItypescript-langchain - LangChain and LangGraphtypescript-provider-config - Provider auth and session template patternspydantic-ai - PydanticAI + Anthropiclangchain - LangChain agent toolslanggraph - LangGraph streaming agentopenai-agents - OpenAI Agents SDKllamaindex - LlamaIndex function agentautogen - AutoGen assistant with tool callscrewai - CrewAI agent toolsgoogle-adk - Google ADK with Geminihaystack - Haystack pipeline with toolsUse the same Metorial providers across different AI clients and frameworks.
| Provider | TypeScript adapter | Python adapter | Model examples |
|---|---|---|---|
| AI SDK | @metorial/ai-sdk | - | Any model via Vercel AI SDK |
| OpenAI | @metorial/openai | metorial_openai() | gpt-4.1, gpt-4o, o1, o3 |
| Anthropic | @metorial/anthropic | metorial_anthropic() | claude-sonnet-4-5, claude-opus-4 |
| Google Gemini | @metorial/google | metorial_google() | gemini-2.5-pro, gemini-2.5-flash |
| Mistral | @metorial/mistral | metorial_mistral() | mistral-large-latest, codestral-latest |
| DeepSeek | @metorial/deepseek | metorial_openai_compatible() | deepseek-chat, deepseek-reasoner |
| TogetherAI | @metorial/togetherai | metorial_openai_compatible() | Llama-4, Qwen-3 |
| XAI | @metorial/xai | metorial_openai_compatible() | grok-3, grok-3-mini |
| LangChain | @metorial/langchain | metorial_langchain() | Any model via LangChain |
| PydanticAI | - | metorial_pydantic_ai() | Any model via PydanticAI |
MCP 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. Metorial builds on MCP but makes it a one-liner for developers to connect their AI apps to any API, data source, or tool. Thereby we enable developers to create agentic AI applications that can interact with other systems in a reliable, simple, and secure way.
Metorial 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.
The Metorial server 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.
https://github.com/user-attachments/assets/a171030e-0159-4ce2-9e92-f4fb3f7bfdc6
Test 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.
https://github.com/user-attachments/assets/eeb73085-e1d6-4745-988a-385694d26500
Every 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.
https://github.com/user-attachments/assets/c676411e-25b6-442a-af22-c8d99e2be25b
Metorial is built from the ground up for developers. Here are some of the key features that make Metorial a great choice for developers:
The Metorial Catalog is licensed under the Apache License 2.0.
MCP server that exercises all the features of the MCP protocol.
A high-level framework for building MCP servers in Python
Local-first system capturing screen/audio with timestamped indexing, SQL/embedding storage, semantic search, LLM-powered history analysis, and event-triggered actions - enables building context-aware AI agents through a NextJS plugin ecosystem.
Extract and convert YouTube video information.
Interacting with Obsidian via REST API
A high-level framework for building MCP servers in TypeScript