observee


Nameobservee JSON
Version 0.1.20 PyPI version JSON
download
home_pageNone
SummaryObservee SDK - Tool usage logging, monitoring, authentication, and agent system for LLM integrations
upload_time2025-07-23 22:45:55
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords mcp agent llm anthropic openai gemini tools logging monitoring oauth authentication
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Observee SDK

**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**.

## What's Included

This SDK includes all Observee components:

- 🤖 **Agents** - MCP tool integration with LLM providers ([npm](https://www.npmjs.com/package/@observee/agents) | [pypi](https://pypi.org/project/mcp-agents/))
- 🔐 **Auth** - OAuth authentication for 15+ services ([npm](https://www.npmjs.com/package/@observee/auth) | [pypi](https://pypi.org/project/auth-mcp/))
- 📊 **Logger** - Structured logging and monitoring ([npm](https://www.npmjs.com/package/@observee/logger) | [pypi](https://pypi.org/project/mcp-logger/))

## Quick Start

### TypeScript/JavaScript

```bash
# Install everything at once
npm install @observee/sdk

# Or install individual packages
npm install @observee/agents @observee/auth @observee/logger
```

### Python

```bash
# Install individual packages (no meta-package yet)
pip install mcp-agents auth-mcp mcp-logger

# Or install all at once
pip install observee
```

### Usage Examples

#### TypeScript/JavaScript

**Option 1: Import from main package**

```typescript
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**

```typescript
import { chatWithTools } from "@observee/agents";
import { callMcpAuthLogin } from "@observee/auth";
import { Logger } from "@observee/logger";
```

#### Python

```python
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']}")

```

## Complete Example

### TypeScript/JavaScript

```typescript
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();
```

### Python

```python
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())
```

## Package Documentation

Each component has detailed documentation:

### TypeScript/JavaScript

- **Agents**: [README](https://github.com/observee-ai/observee/tree/main/agents/ts/README.md) | [npm](https://www.npmjs.com/package/@observee/agents)
- **Auth**: [README](https://github.com/observee-ai/observee/tree/main/auth/ts/README.md) | [npm](https://www.npmjs.com/package/@observee/auth)
- **Logger**: [README](https://github.com/observee-ai/observee/tree/main/logger/ts/README.md) | [npm](https://www.npmjs.com/package/@observee/logger)

### Python

- **Agents**: [README](https://github.com/observee-ai/observee/tree/main/agents/python/README.md) | [pypi](https://pypi.org/project/mcp-agents/)
- **Auth**: [README](https://github.com/observee-ai/observee/tree/main/auth/python/README.md) | [pypi](https://pypi.org/project/auth-mcp/)
- **Logger**: [README](https://github.com/observee-ai/observee/tree/main/logger/python/README.md) | [pypi](https://pypi.org/project/mcp-logger/)

### General Documentation

- [Observee Docs](https://docs.observee.ai)

## Configuration

### Environment Variables (Recommended)

Set up your environment variables:

```bash
# Core Observee configuration
export OBSERVEE_API_KEY="obs_your_key_here"
export OBSERVEE_CLIENT_ID="your_client_id"

# LLM Provider keys (for agents)
export ANTHROPIC_API_KEY="your_anthropic_key"
export OPENAI_API_KEY="your_openai_key"
export GOOGLE_API_KEY="your_google_key"
```

When environment variables are set, you can use the SDK without passing API keys to functions:

```typescript
// No need to pass observeeApiKey when OBSERVEE_API_KEY is set
const result = await chatWithTools("Search for news", {
  provider: "anthropic",
});

const logger = new Logger("my-server", {
  apiKey: process.env.OBSERVEE_API_KEY,
});
```

### Direct Parameter Passing

Alternatively, you can pass API keys directly to functions:

```typescript
// Pass API key as parameter
const result = await chatWithTools("Search for news", {
  provider: "anthropic",
  observeeApiKey: "obs_your_key",
});

const logger = new Logger("my-server", {
  apiKey: "obs_your_key",
});
```

**Note**: API keys passed as parameters take precedence over environment variables.

## Features Overview

### 🤖 AI Agents (@observee/agents)

- **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

### 🔐 Authentication (@observee/auth)

- **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

### 📊 Logging (@observee/logger)

- **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

## Support

- 📖 [Documentation](https://docs.observee.ai)
- 🐛 [Issue Tracker](https://github.com/observee-ai/observee/issues)
- 💬 [Discord Community](https://discord.gg/jnf8yHWJ)
- 📧 [Email Support](mailto:contact@observee.ai)

## License

All rights reserved. This software is proprietary and confidential.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "observee",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Observee Team <contact@observee.ai>",
    "keywords": "mcp, agent, llm, anthropic, openai, gemini, tools, logging, monitoring, oauth, authentication",
    "author": null,
    "author_email": "Observee Team <contact@observee.ai>",
    "download_url": "https://files.pythonhosted.org/packages/d2/13/00beb50996eb9f85715eaf2821afd036addbd9d327f96850f8b097f106b6/observee-0.1.20.tar.gz",
    "platform": null,
    "description": "# Observee SDK\n\n**The complete Observee SDK - All-in-one package for using MCPs with AI agents, authentication management for MCPs, and complete observability for MCP Builders.**\n\nAvailable for both **TypeScript/JavaScript** and **Python**.\n\n## What's Included\n\nThis SDK includes all Observee components:\n\n- \ud83e\udd16 **Agents** - MCP tool integration with LLM providers ([npm](https://www.npmjs.com/package/@observee/agents) | [pypi](https://pypi.org/project/mcp-agents/))\n- \ud83d\udd10 **Auth** - OAuth authentication for 15+ services ([npm](https://www.npmjs.com/package/@observee/auth) | [pypi](https://pypi.org/project/auth-mcp/))\n- \ud83d\udcca **Logger** - Structured logging and monitoring ([npm](https://www.npmjs.com/package/@observee/logger) | [pypi](https://pypi.org/project/mcp-logger/))\n\n## Quick Start\n\n### TypeScript/JavaScript\n\n```bash\n# Install everything at once\nnpm install @observee/sdk\n\n# Or install individual packages\nnpm install @observee/agents @observee/auth @observee/logger\n```\n\n### Python\n\n```bash\n# Install individual packages (no meta-package yet)\npip install mcp-agents auth-mcp mcp-logger\n\n# Or install all at once\npip install observee\n```\n\n### Usage Examples\n\n#### TypeScript/JavaScript\n\n**Option 1: Import from main package**\n\n```typescript\nimport { chatWithTools, callMcpAuthLogin, Logger } from \"@observee/sdk\";\n\n// Use agents\nconst result = await chatWithTools(\"Search for news\", {\n  provider: \"anthropic\",\n  observeeApiKey: \"obs_your_key\",\n});\n\n// Use auth\nconst authResponse = await callMcpAuthLogin({\n  authServer: \"gmail\",\n});\n\n// Use logger\nconst logger = new Logger({ apiKey: \"obs_your_key\" });\nlogger.info(\"Application started\");\n```\n\n**Option 2: Import from specific sub-packages**\n\n```typescript\nimport { chatWithTools } from \"@observee/agents\";\nimport { callMcpAuthLogin } from \"@observee/auth\";\nimport { Logger } from \"@observee/logger\";\n```\n\n#### Python\n\n```python\nfrom observee_agents import chat_with_tools\nfrom observee_auth import call_mcpauth_login\n\n# Use agents\nresult = chat_with_tools(\n    \"Search for news\",\n    provider=\"anthropic\",\n    observee_api_key=\"obs_your_key\"\n)\n\n# Use auth\nauth_response = call_mcpauth_login(auth_server=\"gmail\")\nprint(f\"Login URL: {auth_response['auth_url']}\")\n\n```\n\n## Complete Example\n\n### TypeScript/JavaScript\n\n```typescript\nimport { chatWithTools, callMcpAuthLogin, Logger } from \"@observee/sdk\";\n\n// Set up logging\nconst logger = new Logger({\n  apiKey: \"obs_your_key\",\n  service: \"my-app\",\n});\n\nasync function main() {\n  try {\n    // Authenticate with Gmail\n    logger.info(\"Starting Gmail authentication\");\n    const auth = await callMcpAuthLogin({\n      authServer: \"gmail\",\n    });\n    console.log(\"Visit:\", auth.url);\n\n    // Use AI agent with tools\n    logger.info(\"Starting AI chat with tools\");\n    const result = await chatWithTools(\"Search my emails for project updates\", {\n      provider: \"anthropic\",\n      observeeApiKey: \"obs_your_key\",\n    });\n\n    console.log(\"AI Response:\", result.content);\n    logger.info(\"AI chat completed\", {\n      toolsUsed: result.toolCalls?.length || 0,\n    });\n  } catch (error) {\n    logger.error(\"Application error\", { error: error.message });\n  }\n}\n\nmain();\n```\n\n### Python\n\n```python\nfrom observee_agents import chat_with_tools call_mcpauth_login\nimport asyncio\n\n\nasync def main():\n    try:\n        # Authenticate with Gmail\n        logger.info(\"Starting Gmail authentication\")\n        auth = call_mcpauth_login(auth_server=\"gmail\")\n        print(f\"Visit: {auth['auth_url']}\")\n\n        # Use AI agent with tools\n        logger.info(\"Starting AI chat with tools\")\n        result = await chat_with_tools(\n            \"Search my emails for project updates\",\n            provider=\"anthropic\",\n            observee_api_key=\"obs_your_key\"\n        )\n\n        print(f\"AI Response: {result['content']}\")\n    except Exception as error:\n        logger.error(\"Application error\", {\"error\": str(error)})\n\n# Run the async function\nasyncio.run(main())\n```\n\n## Package Documentation\n\nEach component has detailed documentation:\n\n### TypeScript/JavaScript\n\n- **Agents**: [README](https://github.com/observee-ai/observee/tree/main/agents/ts/README.md) | [npm](https://www.npmjs.com/package/@observee/agents)\n- **Auth**: [README](https://github.com/observee-ai/observee/tree/main/auth/ts/README.md) | [npm](https://www.npmjs.com/package/@observee/auth)\n- **Logger**: [README](https://github.com/observee-ai/observee/tree/main/logger/ts/README.md) | [npm](https://www.npmjs.com/package/@observee/logger)\n\n### Python\n\n- **Agents**: [README](https://github.com/observee-ai/observee/tree/main/agents/python/README.md) | [pypi](https://pypi.org/project/mcp-agents/)\n- **Auth**: [README](https://github.com/observee-ai/observee/tree/main/auth/python/README.md) | [pypi](https://pypi.org/project/auth-mcp/)\n- **Logger**: [README](https://github.com/observee-ai/observee/tree/main/logger/python/README.md) | [pypi](https://pypi.org/project/mcp-logger/)\n\n### General Documentation\n\n- [Observee Docs](https://docs.observee.ai)\n\n## Configuration\n\n### Environment Variables (Recommended)\n\nSet up your environment variables:\n\n```bash\n# Core Observee configuration\nexport OBSERVEE_API_KEY=\"obs_your_key_here\"\nexport OBSERVEE_CLIENT_ID=\"your_client_id\"\n\n# LLM Provider keys (for agents)\nexport ANTHROPIC_API_KEY=\"your_anthropic_key\"\nexport OPENAI_API_KEY=\"your_openai_key\"\nexport GOOGLE_API_KEY=\"your_google_key\"\n```\n\nWhen environment variables are set, you can use the SDK without passing API keys to functions:\n\n```typescript\n// No need to pass observeeApiKey when OBSERVEE_API_KEY is set\nconst result = await chatWithTools(\"Search for news\", {\n  provider: \"anthropic\",\n});\n\nconst logger = new Logger(\"my-server\", {\n  apiKey: process.env.OBSERVEE_API_KEY,\n});\n```\n\n### Direct Parameter Passing\n\nAlternatively, you can pass API keys directly to functions:\n\n```typescript\n// Pass API key as parameter\nconst result = await chatWithTools(\"Search for news\", {\n  provider: \"anthropic\",\n  observeeApiKey: \"obs_your_key\",\n});\n\nconst logger = new Logger(\"my-server\", {\n  apiKey: \"obs_your_key\",\n});\n```\n\n**Note**: API keys passed as parameters take precedence over environment variables.\n\n## Features Overview\n\n### \ud83e\udd16 AI Agents (@observee/agents)\n\n- **Multi-Provider Support**: Anthropic Claude, OpenAI GPT, Google Gemini\n- **MCP Tool Integration**: 15+ pre-built tools (Gmail, YouTube, Linear, etc.)\n- **Smart Filtering**: BM25, local embeddings, cloud-based filtering\n- **Streaming Support**: Real-time responses\n- **Conversation Memory**: Persistent chat history\n\n### \ud83d\udd10 Authentication (@observee/auth)\n\n- **OAuth 2.0 Flows**: Gmail, Slack, Notion, Linear, GitHub, and more\n- **Simple Integration**: One-line authentication\n- **Secure Token Management**: Automatic storage and refresh\n- **Custom Redirects**: Support for self-hosted servers\n\n### \ud83d\udcca Logging (@observee/logger)\n\n- **Structured Logging**: JSON-based log format\n- **Usage Tracking**: Monitor API usage and costs\n- **Multiple Transports**: Console, file, and cloud logging\n- **Performance Monitoring**: Track response times and errors\n\n## Support\n\n- \ud83d\udcd6 [Documentation](https://docs.observee.ai)\n- \ud83d\udc1b [Issue Tracker](https://github.com/observee-ai/observee/issues)\n- \ud83d\udcac [Discord Community](https://discord.gg/jnf8yHWJ)\n- \ud83d\udce7 [Email Support](mailto:contact@observee.ai)\n\n## License\n\nAll rights reserved. This software is proprietary and confidential.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Observee SDK - Tool usage logging, monitoring, authentication, and agent system for LLM integrations",
    "version": "0.1.20",
    "project_urls": {
        "Bug Reports": "https://github.com/observee-ai/observee/issues",
        "Documentation": "https://docs.observee.ai",
        "Homepage": "https://observee.ai",
        "Repository": "https://github.com/observee-ai/observee"
    },
    "split_keywords": [
        "mcp",
        " agent",
        " llm",
        " anthropic",
        " openai",
        " gemini",
        " tools",
        " logging",
        " monitoring",
        " oauth",
        " authentication"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6a72540ceef40ef082be64af6db5a3531a14d90e75f688faf7c5cbd4e853ce87",
                "md5": "ab5193e1d45c7d3a7a838d44fff81c6d",
                "sha256": "fb73a5b70b4be67ae61ccc90cf0ff67286c9ab353449bd8034c1bb77ee0102b8"
            },
            "downloads": -1,
            "filename": "observee-0.1.20-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ab5193e1d45c7d3a7a838d44fff81c6d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 59702,
            "upload_time": "2025-07-23T22:45:54",
            "upload_time_iso_8601": "2025-07-23T22:45:54.434756Z",
            "url": "https://files.pythonhosted.org/packages/6a/72/540ceef40ef082be64af6db5a3531a14d90e75f688faf7c5cbd4e853ce87/observee-0.1.20-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d21300beb50996eb9f85715eaf2821afd036addbd9d327f96850f8b097f106b6",
                "md5": "4558fd8739aaf262de5f1f602817f70d",
                "sha256": "2370355095e2af9a31febcd0a04e44dbb4d0282bcfb1a1611a4619a559aaf7ca"
            },
            "downloads": -1,
            "filename": "observee-0.1.20.tar.gz",
            "has_sig": false,
            "md5_digest": "4558fd8739aaf262de5f1f602817f70d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 50431,
            "upload_time": "2025-07-23T22:45:55",
            "upload_time_iso_8601": "2025-07-23T22:45:55.776747Z",
            "url": "https://files.pythonhosted.org/packages/d2/13/00beb50996eb9f85715eaf2821afd036addbd9d327f96850f8b097f106b6/observee-0.1.20.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-23 22:45:55",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "observee-ai",
    "github_project": "observee",
    "github_not_found": true,
    "lcname": "observee"
}
        
Elapsed time: 0.69445s