notebooklm-mcp


Namenotebooklm-mcp JSON
Version 2.0.10 PyPI version JSON
download
home_pageNone
SummaryFastMCP v2 server for NotebookLM automation with modern async support
upload_time2025-09-15 17:35:47
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords fastmcp mcp notebooklm automation ai llm fastmcp-v2
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ๐Ÿš€ NotebookLM MCP

**Professional MCP server for Google NotebookLM automation โ€ข Available on PyPI โ€ข Production Ready**

[![PyPI](https://img.shields.io/pypi/v/notebooklm-mcp.svg)](https://pypi.org/project/notebooklm-mcp/)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![FastMCP v2](https://img.shields.io/badge/FastMCP-v2.0+-green.svg)](https://github.com/jlowin/fastmcp)
[![UV](https://img.shields.io/badge/UV-latest-orange.svg)](https://github.com/astral-sh/uv)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Tests](https://github.com/khengyun/notebooklm-mcp/actions/workflows/test.yml/badge.svg)](https://github.com/khengyun/notebooklm-mcp/actions)
[![codecov](https://codecov.io/gh/khengyun/notebooklm-mcp/branch/main/graph/badge.svg)](https://codecov.io/gh/khengyun/notebooklm-mcp)

## โœจ Key Features

- **๐Ÿ”ฅ FastMCP v2**: Modern decorator-based MCP framework
- **โšก UV Python Manager**: Lightning-fast dependency management
- **๐Ÿš€ Multiple Transports**: STDIO, HTTP, SSE support
- **๐ŸŽฏ Type Safety**: Full Pydantic validation
- **๐Ÿ”’ Persistent Auth**: Automatic Google session management
- **๐Ÿ“Š Rich CLI**: Beautiful terminal interface with Taskfile automation
- **๐Ÿณ Production Ready**: Docker support with monitoring

## ๐Ÿƒโ€โ™‚๏ธ Quick Start

### ๐ŸŽฏ For End Users (Recommended)

```bash
# Install UV (modern Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install NotebookLM MCP from PyPI
uv add notebooklm-mcp

# Initialize with your NotebookLM URL
uv run notebooklm-mcp init https://notebooklm.google.com/notebook/YOUR_NOTEBOOK_ID
```

**What happens after `init`:**

- โœ… Creates `notebooklm-config.json` with your settings
- โœ… Creates `chrome_profile_notebooklm/` folder for persistent authentication
- โœ… Opens browser for one-time Google login (if needed)
- โœ… Saves session for future headless operation

```bash
# Start server (STDIO for MCP clients)
uv run notebooklm-mcp --config notebooklm-config.json server

# Start HTTP server for web testing
uv run notebooklm-mcp --config notebooklm-config.json server --transport http --port 8001

# Interactive chat mode
uv run notebooklm-mcp --config notebooklm-config.json chat  --message "Who are you ?"
```

### ๐Ÿ‘จโ€๐Ÿ’ป For Developers

If you're contributing to this project, check out our [Taskfile](./Taskfile.yml) for enhanced developer experience:

```bash
git clone https://github.com/khengyun/notebooklm-mcp.git
cd notebooklm-mcp

# Complete setup with development tools
task setup

# Show all available development tasks
task --list
```

## ๐Ÿ”ง Alternative Installation

If you prefer pip over UV:

```bash
# Install with pip
pip install notebooklm-mcp

# Initialize
notebooklm-mcp init https://notebooklm.google.com/notebook/YOUR_NOTEBOOK_ID

# Start server
notebooklm-mcp --config notebooklm-config.json server
```

## ๏ฟฝ Project Structure After Init

After running `init`, your working directory will contain:

```text
your-project/
โ”œโ”€โ”€ notebooklm-config.json          # Configuration file
โ”œโ”€โ”€ chrome_profile_notebooklm/      # Browser profile (persistent auth)
โ”‚   โ”œโ”€โ”€ Default/                    # Chrome profile data
โ”‚   โ”œโ”€โ”€ SingletonSocket             # Session files
โ”‚   โ””โ”€โ”€ ...                         # Other Chrome data
โ””โ”€โ”€ your-other-files
```

**Key files:**

- **`notebooklm-config.json`**: Contains notebook ID, server settings, auth configuration
- **`chrome_profile_notebooklm/`**: Stores Google authentication session (enables headless operation)

## ๏ฟฝ๐Ÿ› ๏ธ Available Tools

| Tool | Description | Parameters |
|------|-------------|------------|
| `healthcheck` | Server health status | None |
| `send_chat_message` | Send message to NotebookLM | `message: str`, `wait_for_response: bool` |
| `get_chat_response` | Get response with timeout | `timeout: int` |
| `chat_with_notebook` | Complete interaction | `message: str`, `notebook_id?: str` |
| `navigate_to_notebook` | Switch notebooks | `notebook_id: str` |
| `get_default_notebook` | Current notebook | None |
| `set_default_notebook` | Set default | `notebook_id: str` |
| `get_quick_response` | Instant response | None |

## ๐Ÿ‘จโ€๐Ÿ’ป Developer Workflow

For contributors and advanced users who want enhanced productivity, we provide a comprehensive Taskfile with 20+ automation tasks:

```bash
# ๐Ÿ“ฆ Dependency Management
task deps-add -- requests       # Add dependency
task deps-add-dev -- pytest     # Add dev dependency
task deps-remove -- requests    # Remove dependency
task deps-list                  # List dependencies
task deps-update                # Update all dependencies

# ๐Ÿงช Testing & Quality
task test                       # Run all tests
task test-quick                 # Quick validation test
task test-coverage              # Coverage analysis
task enforce-test               # MANDATORY after function changes
task lint                       # Run all linting
task format                     # Format code (Black + isort + Ruff)

# ๐Ÿ—๏ธ Build & Release
task build                      # Build package
task clean                      # Clean artifacts

# ๐Ÿš€ Server Commands
task server-stdio              # STDIO server
task server-http               # HTTP server
task server-sse                # SSE server

# Show all available tasks
task --list
```

> **๐Ÿ’ก Pro Tip**: Install [Task](https://taskfile.dev/) for the best developer experience: `go install github.com/go-task/task/v3/cmd/task@latest`

## ๐ŸŒ Transport Options

### STDIO (Default)

```bash
task server-stdio
# For: LangGraph, CrewAI, AutoGen
```

### HTTP

```bash
task server-http  
# Access: http://localhost:8001/mcp
# For: Web testing, REST APIs
```

### SSE

```bash
task server-sse
# Access: http://localhost:8002/
# For: Real-time streaming
```

## ๐Ÿงช Testing & Development

### HTTP Client Testing

```python
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport

transport = StreamableHttpTransport(url="http://localhost:8001/mcp")
async with Client(transport) as client:
    tools = await client.list_tools()
    result = await client.call_tool("healthcheck", {})
```

### Command Line Testing

```bash
# Test with curl
curl -X POST http://localhost:8001/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'
```

## ๐Ÿ“Š Client Integration

### LangGraph

```python
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport

# HTTP transport
transport = StreamableHttpTransport(url="http://localhost:8001/mcp")
client = Client(transport)
tools = await client.list_tools()
```

### CrewAI

```python
from crewai_tools import BaseTool
from fastmcp import Client

class NotebookLMTool(BaseTool):
    name = "notebooklm"
    description = "Chat with NotebookLM"
    
    async def _arun(self, message: str):
        client = Client("http://localhost:8001/mcp")
        result = await client.call_tool("chat_with_notebook", {"message": message})
        return result
```

## ๐Ÿ”’ Authentication

### Automatic Setup

```bash
# First time - opens browser for login
notebooklm-mcp init https://notebooklm.google.com/notebook/abc123

# Subsequent runs - uses saved session
notebooklm-mcp --config notebooklm-config.json server
```

### Manual Setup

```bash
# Interactive browser login
notebooklm-mcp --config notebooklm-config.json server

# Check connection
notebooklm-mcp --config notebooklm-config.json test --notebook YOUR_NOTEBOOK_ID
```

## ๐Ÿณ Docker Deployment

### Quick Start

```bash
docker run -e NOTEBOOKLM_NOTEBOOK_ID="YOUR_ID" notebooklm-mcp
```

### With Compose

```yaml
version: '3.8'
services:
  notebooklm-mcp:
    image: notebooklm-mcp:latest
    ports:
      - "8001:8001"
    environment:
      - NOTEBOOKLM_NOTEBOOK_ID=your-notebook-id
      - TRANSPORT=http
    volumes:
      - ./chrome_profile:/app/chrome_profile
```

## โš™๏ธ Configuration

### Config File (`notebooklm-config.json`)

```json
{
  "default_notebook_id": "your-notebook-id",
  "headless": true,
  "timeout": 30,
  "auth": {
    "profile_dir": "./chrome_profile_notebooklm"
  },
  "debug": false
}
```

### Environment Variables

```bash
export NOTEBOOKLM_NOTEBOOK_ID="your-notebook-id"
export NOTEBOOKLM_HEADLESS=true
export NOTEBOOKLM_DEBUG=false
```

## ๐Ÿš€ Performance

### FastMCP v2 Benefits

- **โšก 5x faster** tool registration with decorators
- **๐Ÿ“‹ Auto-generated schemas** from Python type hints  
- **๐Ÿ”’ Built-in validation** with Pydantic
- **๐Ÿงช Better testing** and debugging capabilities
- **๐Ÿ“Š Type safety** throughout the stack

### Benchmarks

| Feature | Traditional MCP | FastMCP v2 |
|---------|----------------|------------|
| Tool registration | Manual schema | Auto-generated |
| Type validation | Manual | Automatic |
| Error handling | Basic | Enhanced |
| Development speed | Standard | 5x faster |
| HTTP support | Limited | Full |

## ๐Ÿ› ๏ธ Development

### Setup

```bash
git clone https://github.com/khengyun/notebooklm-mcp
cd notebooklm-mcp

# With UV (recommended)
uv sync --all-groups

# Or with pip
pip install -e ".[dev]"
```

### Testing

```bash
# Run tests with UV
uv run pytest

# With coverage
uv run pytest --cov=notebooklm_mcp

# Integration tests  
uv run pytest tests/test_integration.py

# Or use Taskfile for development
task test
task test-coverage
```

### Code Quality

```bash
# Format code with UV
uv run black src/ tests/
uv run ruff check src/ tests/

# Type checking
uv run mypy src/

# Or use Taskfile shortcuts
task format
task lint
```

## ๐Ÿ“š Documentation

- **[Quick Setup Guide](docs/quick-setup-guide.md)** - Get started in 2 minutes
- **[HTTP Server Guide](docs/http-server-guide.md)** - Web testing & integration
- **[FastMCP v2 Guide](docs/fastmcp-v2-guide.md)** - Modern MCP features
- **[Docker Deployment](docs/docker-deployment.md)** - Production setup
- **[API Reference](docs/api-reference.md)** - Complete tool documentation

## ๐Ÿ”— Related Projects

- **[FastMCP](https://github.com/jlowin/fastmcp)** - Modern MCP framework
- **[MCP Specification](https://spec.modelcontextprotocol.io/)** - Official MCP spec
- **[NotebookLM](https://notebooklm.google.com/)** - Google's AI notebook

## ๐Ÿ“„ License

MIT License - see [LICENSE](LICENSE) file for details.

## ๐Ÿ†˜ Support

- **Issues**: [GitHub Issues](https://github.com/khengyun/notebooklm-mcp/issues)
- **Discussions**: [GitHub Discussions](https://github.com/khengyun/notebooklm-mcp/discussions)
- **Documentation**: [Read the Docs](https://notebooklm-mcp.readthedocs.io)

---

**Built with โค๏ธ using FastMCP v2 - Modern MCP development made simple!**

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "notebooklm-mcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "NotebookLM MCP Team <support@notebooklm-mcp.dev>",
    "keywords": "fastmcp, mcp, notebooklm, automation, ai, llm, fastmcp-v2",
    "author": null,
    "author_email": "NotebookLM MCP Team <support@notebooklm-mcp.dev>",
    "download_url": "https://files.pythonhosted.org/packages/e6/1c/6063727dd88f7efe5827855b75d15493ad9994530d51a332b516d014ed06/notebooklm_mcp-2.0.10.tar.gz",
    "platform": null,
    "description": "# \ud83d\ude80 NotebookLM MCP\n\n**Professional MCP server for Google NotebookLM automation \u2022 Available on PyPI \u2022 Production Ready**\n\n[![PyPI](https://img.shields.io/pypi/v/notebooklm-mcp.svg)](https://pypi.org/project/notebooklm-mcp/)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![FastMCP v2](https://img.shields.io/badge/FastMCP-v2.0+-green.svg)](https://github.com/jlowin/fastmcp)\n[![UV](https://img.shields.io/badge/UV-latest-orange.svg)](https://github.com/astral-sh/uv)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Tests](https://github.com/khengyun/notebooklm-mcp/actions/workflows/test.yml/badge.svg)](https://github.com/khengyun/notebooklm-mcp/actions)\n[![codecov](https://codecov.io/gh/khengyun/notebooklm-mcp/branch/main/graph/badge.svg)](https://codecov.io/gh/khengyun/notebooklm-mcp)\n\n## \u2728 Key Features\n\n- **\ud83d\udd25 FastMCP v2**: Modern decorator-based MCP framework\n- **\u26a1 UV Python Manager**: Lightning-fast dependency management\n- **\ud83d\ude80 Multiple Transports**: STDIO, HTTP, SSE support\n- **\ud83c\udfaf Type Safety**: Full Pydantic validation\n- **\ud83d\udd12 Persistent Auth**: Automatic Google session management\n- **\ud83d\udcca Rich CLI**: Beautiful terminal interface with Taskfile automation\n- **\ud83d\udc33 Production Ready**: Docker support with monitoring\n\n## \ud83c\udfc3\u200d\u2642\ufe0f Quick Start\n\n### \ud83c\udfaf For End Users (Recommended)\n\n```bash\n# Install UV (modern Python package manager)\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Install NotebookLM MCP from PyPI\nuv add notebooklm-mcp\n\n# Initialize with your NotebookLM URL\nuv run notebooklm-mcp init https://notebooklm.google.com/notebook/YOUR_NOTEBOOK_ID\n```\n\n**What happens after `init`:**\n\n- \u2705 Creates `notebooklm-config.json` with your settings\n- \u2705 Creates `chrome_profile_notebooklm/` folder for persistent authentication\n- \u2705 Opens browser for one-time Google login (if needed)\n- \u2705 Saves session for future headless operation\n\n```bash\n# Start server (STDIO for MCP clients)\nuv run notebooklm-mcp --config notebooklm-config.json server\n\n# Start HTTP server for web testing\nuv run notebooklm-mcp --config notebooklm-config.json server --transport http --port 8001\n\n# Interactive chat mode\nuv run notebooklm-mcp --config notebooklm-config.json chat  --message \"Who are you ?\"\n```\n\n### \ud83d\udc68\u200d\ud83d\udcbb For Developers\n\nIf you're contributing to this project, check out our [Taskfile](./Taskfile.yml) for enhanced developer experience:\n\n```bash\ngit clone https://github.com/khengyun/notebooklm-mcp.git\ncd notebooklm-mcp\n\n# Complete setup with development tools\ntask setup\n\n# Show all available development tasks\ntask --list\n```\n\n## \ud83d\udd27 Alternative Installation\n\nIf you prefer pip over UV:\n\n```bash\n# Install with pip\npip install notebooklm-mcp\n\n# Initialize\nnotebooklm-mcp init https://notebooklm.google.com/notebook/YOUR_NOTEBOOK_ID\n\n# Start server\nnotebooklm-mcp --config notebooklm-config.json server\n```\n\n## \ufffd Project Structure After Init\n\nAfter running `init`, your working directory will contain:\n\n```text\nyour-project/\n\u251c\u2500\u2500 notebooklm-config.json          # Configuration file\n\u251c\u2500\u2500 chrome_profile_notebooklm/      # Browser profile (persistent auth)\n\u2502   \u251c\u2500\u2500 Default/                    # Chrome profile data\n\u2502   \u251c\u2500\u2500 SingletonSocket             # Session files\n\u2502   \u2514\u2500\u2500 ...                         # Other Chrome data\n\u2514\u2500\u2500 your-other-files\n```\n\n**Key files:**\n\n- **`notebooklm-config.json`**: Contains notebook ID, server settings, auth configuration\n- **`chrome_profile_notebooklm/`**: Stores Google authentication session (enables headless operation)\n\n## \ufffd\ud83d\udee0\ufe0f Available Tools\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `healthcheck` | Server health status | None |\n| `send_chat_message` | Send message to NotebookLM | `message: str`, `wait_for_response: bool` |\n| `get_chat_response` | Get response with timeout | `timeout: int` |\n| `chat_with_notebook` | Complete interaction | `message: str`, `notebook_id?: str` |\n| `navigate_to_notebook` | Switch notebooks | `notebook_id: str` |\n| `get_default_notebook` | Current notebook | None |\n| `set_default_notebook` | Set default | `notebook_id: str` |\n| `get_quick_response` | Instant response | None |\n\n## \ud83d\udc68\u200d\ud83d\udcbb Developer Workflow\n\nFor contributors and advanced users who want enhanced productivity, we provide a comprehensive Taskfile with 20+ automation tasks:\n\n```bash\n# \ud83d\udce6 Dependency Management\ntask deps-add -- requests       # Add dependency\ntask deps-add-dev -- pytest     # Add dev dependency\ntask deps-remove -- requests    # Remove dependency\ntask deps-list                  # List dependencies\ntask deps-update                # Update all dependencies\n\n# \ud83e\uddea Testing & Quality\ntask test                       # Run all tests\ntask test-quick                 # Quick validation test\ntask test-coverage              # Coverage analysis\ntask enforce-test               # MANDATORY after function changes\ntask lint                       # Run all linting\ntask format                     # Format code (Black + isort + Ruff)\n\n# \ud83c\udfd7\ufe0f Build & Release\ntask build                      # Build package\ntask clean                      # Clean artifacts\n\n# \ud83d\ude80 Server Commands\ntask server-stdio              # STDIO server\ntask server-http               # HTTP server\ntask server-sse                # SSE server\n\n# Show all available tasks\ntask --list\n```\n\n> **\ud83d\udca1 Pro Tip**: Install [Task](https://taskfile.dev/) for the best developer experience: `go install github.com/go-task/task/v3/cmd/task@latest`\n\n## \ud83c\udf10 Transport Options\n\n### STDIO (Default)\n\n```bash\ntask server-stdio\n# For: LangGraph, CrewAI, AutoGen\n```\n\n### HTTP\n\n```bash\ntask server-http  \n# Access: http://localhost:8001/mcp\n# For: Web testing, REST APIs\n```\n\n### SSE\n\n```bash\ntask server-sse\n# Access: http://localhost:8002/\n# For: Real-time streaming\n```\n\n## \ud83e\uddea Testing & Development\n\n### HTTP Client Testing\n\n```python\nfrom fastmcp import Client\nfrom fastmcp.client.transports import StreamableHttpTransport\n\ntransport = StreamableHttpTransport(url=\"http://localhost:8001/mcp\")\nasync with Client(transport) as client:\n    tools = await client.list_tools()\n    result = await client.call_tool(\"healthcheck\", {})\n```\n\n### Command Line Testing\n\n```bash\n# Test with curl\ncurl -X POST http://localhost:8001/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json, text/event-stream\" \\\n  -d '{\"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"tools/list\", \"params\": {}}'\n```\n\n## \ud83d\udcca Client Integration\n\n### LangGraph\n\n```python\nfrom fastmcp import Client\nfrom fastmcp.client.transports import StreamableHttpTransport\n\n# HTTP transport\ntransport = StreamableHttpTransport(url=\"http://localhost:8001/mcp\")\nclient = Client(transport)\ntools = await client.list_tools()\n```\n\n### CrewAI\n\n```python\nfrom crewai_tools import BaseTool\nfrom fastmcp import Client\n\nclass NotebookLMTool(BaseTool):\n    name = \"notebooklm\"\n    description = \"Chat with NotebookLM\"\n    \n    async def _arun(self, message: str):\n        client = Client(\"http://localhost:8001/mcp\")\n        result = await client.call_tool(\"chat_with_notebook\", {\"message\": message})\n        return result\n```\n\n## \ud83d\udd12 Authentication\n\n### Automatic Setup\n\n```bash\n# First time - opens browser for login\nnotebooklm-mcp init https://notebooklm.google.com/notebook/abc123\n\n# Subsequent runs - uses saved session\nnotebooklm-mcp --config notebooklm-config.json server\n```\n\n### Manual Setup\n\n```bash\n# Interactive browser login\nnotebooklm-mcp --config notebooklm-config.json server\n\n# Check connection\nnotebooklm-mcp --config notebooklm-config.json test --notebook YOUR_NOTEBOOK_ID\n```\n\n## \ud83d\udc33 Docker Deployment\n\n### Quick Start\n\n```bash\ndocker run -e NOTEBOOKLM_NOTEBOOK_ID=\"YOUR_ID\" notebooklm-mcp\n```\n\n### With Compose\n\n```yaml\nversion: '3.8'\nservices:\n  notebooklm-mcp:\n    image: notebooklm-mcp:latest\n    ports:\n      - \"8001:8001\"\n    environment:\n      - NOTEBOOKLM_NOTEBOOK_ID=your-notebook-id\n      - TRANSPORT=http\n    volumes:\n      - ./chrome_profile:/app/chrome_profile\n```\n\n## \u2699\ufe0f Configuration\n\n### Config File (`notebooklm-config.json`)\n\n```json\n{\n  \"default_notebook_id\": \"your-notebook-id\",\n  \"headless\": true,\n  \"timeout\": 30,\n  \"auth\": {\n    \"profile_dir\": \"./chrome_profile_notebooklm\"\n  },\n  \"debug\": false\n}\n```\n\n### Environment Variables\n\n```bash\nexport NOTEBOOKLM_NOTEBOOK_ID=\"your-notebook-id\"\nexport NOTEBOOKLM_HEADLESS=true\nexport NOTEBOOKLM_DEBUG=false\n```\n\n## \ud83d\ude80 Performance\n\n### FastMCP v2 Benefits\n\n- **\u26a1 5x faster** tool registration with decorators\n- **\ud83d\udccb Auto-generated schemas** from Python type hints  \n- **\ud83d\udd12 Built-in validation** with Pydantic\n- **\ud83e\uddea Better testing** and debugging capabilities\n- **\ud83d\udcca Type safety** throughout the stack\n\n### Benchmarks\n\n| Feature | Traditional MCP | FastMCP v2 |\n|---------|----------------|------------|\n| Tool registration | Manual schema | Auto-generated |\n| Type validation | Manual | Automatic |\n| Error handling | Basic | Enhanced |\n| Development speed | Standard | 5x faster |\n| HTTP support | Limited | Full |\n\n## \ud83d\udee0\ufe0f Development\n\n### Setup\n\n```bash\ngit clone https://github.com/khengyun/notebooklm-mcp\ncd notebooklm-mcp\n\n# With UV (recommended)\nuv sync --all-groups\n\n# Or with pip\npip install -e \".[dev]\"\n```\n\n### Testing\n\n```bash\n# Run tests with UV\nuv run pytest\n\n# With coverage\nuv run pytest --cov=notebooklm_mcp\n\n# Integration tests  \nuv run pytest tests/test_integration.py\n\n# Or use Taskfile for development\ntask test\ntask test-coverage\n```\n\n### Code Quality\n\n```bash\n# Format code with UV\nuv run black src/ tests/\nuv run ruff check src/ tests/\n\n# Type checking\nuv run mypy src/\n\n# Or use Taskfile shortcuts\ntask format\ntask lint\n```\n\n## \ud83d\udcda Documentation\n\n- **[Quick Setup Guide](docs/quick-setup-guide.md)** - Get started in 2 minutes\n- **[HTTP Server Guide](docs/http-server-guide.md)** - Web testing & integration\n- **[FastMCP v2 Guide](docs/fastmcp-v2-guide.md)** - Modern MCP features\n- **[Docker Deployment](docs/docker-deployment.md)** - Production setup\n- **[API Reference](docs/api-reference.md)** - Complete tool documentation\n\n## \ud83d\udd17 Related Projects\n\n- **[FastMCP](https://github.com/jlowin/fastmcp)** - Modern MCP framework\n- **[MCP Specification](https://spec.modelcontextprotocol.io/)** - Official MCP spec\n- **[NotebookLM](https://notebooklm.google.com/)** - Google's AI notebook\n\n## \ud83d\udcc4 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## \ud83c\udd98 Support\n\n- **Issues**: [GitHub Issues](https://github.com/khengyun/notebooklm-mcp/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/khengyun/notebooklm-mcp/discussions)\n- **Documentation**: [Read the Docs](https://notebooklm-mcp.readthedocs.io)\n\n---\n\n**Built with \u2764\ufe0f using FastMCP v2 - Modern MCP development made simple!**\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "FastMCP v2 server for NotebookLM automation with modern async support",
    "version": "2.0.10",
    "project_urls": {
        "Changelog": "https://github.com/notebooklm-mcp/notebooklm-mcp/blob/main/CHANGELOG.md",
        "Documentation": "https://notebooklm-mcp.readthedocs.io",
        "Homepage": "https://github.com/notebooklm-mcp/notebooklm-mcp",
        "Issues": "https://github.com/notebooklm-mcp/notebooklm-mcp/issues",
        "Repository": "https://github.com/notebooklm-mcp/notebooklm-mcp"
    },
    "split_keywords": [
        "fastmcp",
        " mcp",
        " notebooklm",
        " automation",
        " ai",
        " llm",
        " fastmcp-v2"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5487dd818e32f8a241c0d600b72f0f2d48881d6b165e0b54a63c382afa7c34af",
                "md5": "87b16f7f1a8c77261737e3775d112a3a",
                "sha256": "c6c616da4950a842fe463f978bd7a3da347e99125c61b17c9cfd3168b1895a07"
            },
            "downloads": -1,
            "filename": "notebooklm_mcp-2.0.10-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "87b16f7f1a8c77261737e3775d112a3a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 26817,
            "upload_time": "2025-09-15T17:35:46",
            "upload_time_iso_8601": "2025-09-15T17:35:46.344966Z",
            "url": "https://files.pythonhosted.org/packages/54/87/dd818e32f8a241c0d600b72f0f2d48881d6b165e0b54a63c382afa7c34af/notebooklm_mcp-2.0.10-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e61c6063727dd88f7efe5827855b75d15493ad9994530d51a332b516d014ed06",
                "md5": "1055568106ce757b1815733012628b02",
                "sha256": "b4f92a340158b90581853425449a0492d59de63cf0972e5e6373175ecee701c6"
            },
            "downloads": -1,
            "filename": "notebooklm_mcp-2.0.10.tar.gz",
            "has_sig": false,
            "md5_digest": "1055568106ce757b1815733012628b02",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 49473,
            "upload_time": "2025-09-15T17:35:47",
            "upload_time_iso_8601": "2025-09-15T17:35:47.607448Z",
            "url": "https://files.pythonhosted.org/packages/e6/1c/6063727dd88f7efe5827855b75d15493ad9994530d51a332b516d014ed06/notebooklm_mcp-2.0.10.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-15 17:35:47",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "notebooklm-mcp",
    "github_project": "notebooklm-mcp",
    "github_not_found": true,
    "lcname": "notebooklm-mcp"
}
        
Elapsed time: 2.34287s