
π Website Β |Β π Docs Β |Β π¬ Discord Β |Β πΌ LinkedIn Β |Β π
β If you like Observee, please star us on GitHub!
The complete Observee SDK - All-in-one package for using MCPs with AI agents, authentication management for MCPs, and complete observability for MCP Builders.
Available for both TypeScript/JavaScript and Python.
This SDK includes all Observee components:
- π€ Agents - MCP tool integration with LLM providers (npm | pypi)
- π Auth - OAuth authentication for 15+ services (npm | pypi)
- π Logger - Structured logging and monitoring (npm | pypi)
# Install everything at once
npm install @observee/sdk
# Or install individual packages
npm install @observee/agents @observee/auth @observee/logger
# Install individual packages (no meta-package yet)
pip install mcp-agents agent-oauth mcp-logger
# Or install all at once
pip install observee
Option 1: Import from main package
import { chatWithTools, callMcpAuthLogin, Logger } from "@observee/sdk";
// Use agents
const result = await chatWithTools("Search for news", {
provider: "anthropic",
observeeApiKey: "obs_your_key",
});
// Use auth
const authResponse = await callMcpAuthLogin({
authServer: "gmail",
});
// Use logger
const logger = new Logger({ apiKey: "obs_your_key" });
logger.info("Application started");
Option 2: Import from specific sub-packages
import { chatWithTools } from "@observee/agents";
import { callMcpAuthLogin } from "@observee/auth";
import { Logger } from "@observee/logger";
from observee_agents import chat_with_tools
from observee_auth import call_mcpauth_login
# Use agents
result = chat_with_tools(
"Search for news",
provider="anthropic",
observee_api_key="obs_your_key"
)
# Use auth
auth_response = call_mcpauth_login(auth_server="gmail")
print(f"Login URL: {auth_response['auth_url']}")
import { chatWithTools, callMcpAuthLogin, Logger } from "@observee/sdk";
// Set up logging
const logger = new Logger({
apiKey: "obs_your_key",
service: "my-app",
});
async function main() {
try {
// Authenticate with Gmail
logger.info("Starting Gmail authentication");
const auth = await callMcpAuthLogin({
authServer: "gmail",
});
console.log("Visit:", auth.url);
// Use AI agent with tools
logger.info("Starting AI chat with tools");
const result = await chatWithTools("Search my emails for project updates", {
provider: "anthropic",
observeeApiKey: "obs_your_key",
});
console.log("AI Response:", result.content);
logger.info("AI chat completed", {
toolsUsed: result.toolCalls?.length || 0,
});
} catch (error) {
logger.error("Application error", { error: error.message });
}
}
main();
from observee_agents import chat_with_tools call_mcpauth_login
import asyncio
async def main():
try:
# Authenticate with Gmail
logger.info("Starting Gmail authentication")
auth = call_mcpauth_login(auth_server="gmail")
print(f"Visit: {auth['auth_url']}")
# Use AI agent with tools
logger.info("Starting AI chat with tools")
result = await chat_with_tools(
"Search my emails for project updates",
provider="anthropic",
observee_api_key="obs_your_key"
)
print(f"AI Response: {result['content']}")
except Exception as error:
logger.error("Application error", {"error": str(error)})
# Run the async function
asyncio.run(main())
- Multi-Provider Support: Anthropic Claude, OpenAI GPT, Google Gemini
- MCP Tool Integration: 15+ pre-built tools (Gmail, YouTube, Linear, etc.)
- Smart Filtering: BM25, local embeddings, cloud-based filtering
- Streaming Support: Real-time responses
- Conversation Memory: Persistent chat history
- OAuth 2.0 Flows: Gmail, Slack, Notion, Linear, GitHub, and more
- Simple Integration: One-line authentication
- Secure Token Management: Automatic storage and refresh
- Custom Redirects: Support for self-hosted servers
- Structured Logging: JSON-based log format
- Usage Tracking: Monitor API usage and costs
- Multiple Transports: Console, file, and cloud logging
- Performance Monitoring: Track response times and errors
- π Documentation
- π Issue Tracker
- π¬ Discord Community
- π§ Email Support
If you use Observee in your research or project, please cite:
@software{observee,
title={Observee},
author={observee-ai},
year={2025},
publisher = {GitHub},
url={https://github.com/observee-ai/observee}
}