Metadata-Version: 2.4
Name: lmcp-tool-builder
Version: 0.1.4
Summary: LMCP Tool Builder - A tool for discovering, building and loading tools from LMCP servers
Author-email: LMCP Tool Builder Team <example@example.com>
License: MIT
Project-URL: Homepage, https://github.com/example/lmcp-tool-builder
Project-URL: Repository, https://github.com/example/lmcp-tool-builder
Project-URL: Issues, https://github.com/example/lmcp-tool-builder/issues
Keywords: lmcp,tool,builder,api,tools
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.28.0
Requires-Dist: python-dotenv>=1.0.0
Dynamic: license-file

# LMCP Tool Builder

A Python library for discovering, building and loading tools from LMCP (Language Model Context Protocol) servers.

## Features

- **Tool Discovery**: Automatically discover tools from LMCP servers
- **Local Caching**: Cache tools locally for offline use
- **Auto Update**: Configurable auto-update behavior
- **Tool Testing**: Built-in testing functionality for discovered tools
- **Easy Integration**: Simple API for integrating with your applications

## Installation

```bash
pip install lmcp-tool-builder
```

## Quick Start

```python
from lmcp_tool_builder import LMCPToolBuilder
import os

# Create a tool builder instance
builder = LMCPToolBuilder(
    server_url="http://your-lmcp-server:8000",
    api_key=os.getenv("LMCP_API_KEY"),
    local_tools_file="bot_tools.py",
    debug=True,
    auto_update=True
)

# Build and load tools
tools = builder.build_and_load_tools()

# Use the tools
for tool in tools:
    print(f"Tool: {tool.__name__}")
```

## Configuration

### Environment Variables

Create a `.env` file in your project:

```env
LMCP_API_KEY=your_api_key_here
LMCP_LOCAL_TOOLS_FILE=bot_tools.py
```

### LMCPToolBuilder Parameters

- `server_url`: URL of the LMCP server (default: "http://localhost:8000")
- `api_key`: API key for authentication (default: "")
- `local_tools_file`: Path to local tools cache file (default: "bot_tools.py")
- `debug`: Enable debug output (default: False)
- `auto_update`: Auto-update tools from server (default: False)

## API Reference

### LMCPToolBuilder Class

#### Methods

- `discover_tools()`: Discover tools from LMCP server or local cache
- `build_tools_module(server_tools)`: Build a Python module from server tools
- `save_tools_module(module_code)`: Save module to local file
- `load_tools_from_module()`: Load tools from local module
- `build_and_load_tools()`: Main method to build and load tools
- `test_tools(tools)`: Test loaded tools with sample inputs

## Example Usage

```python
from langchain_openai import ChatOpenAI
from langchain.agents import create_agent
from lmcp_tool_builder import LMCPToolBuilder # lmcp_tool_builder
import asyncio

import os
from dotenv import load_dotenv

load_dotenv()

# 到lmcp平台注册创建应用、绑定工具、获得api_key（略）
print(f'[LMCP] 开始更新工具...')

# 创建工具构建器
builder = LMCPToolBuilder(
    server_url="http://aicity.wang:8000",
    api_key=os.getenv("aca8942ed1b43ab16f796eb223db10dc12edaa0c3fad7d41b85215bcb6aceefb"),
    local_tools_file=os.getenv("LMCP_LOCAL_TOOLS_FILE", "bot_tools.py"),
    debug=True,
    auto_update=False
)

# 构建并加载工具
tools = builder.build_and_load_tools()

# 构建agent
agent = create_agent(
    model=ChatOpenAI(
        model="deepseek-chat",
        api_key="your api key",
        base_url="https://api.deepseek.com/v1"
    ),
    tools=tools
)


# 异步流式输出
async def async_stream_agent():
    async for message, metadata in agent.astream(
        {"messages": [("user", "你必须使用工具，异步计算2+8=？告诉我你使用哪工具")]}, 
        stream_mode="messages"
    ):
        # 实时打印 Token
        if message.content:
            print(message.content, end="", flush=True)

# 同步流式输出
def stream_agent():
    for token, metadata in agent.stream(
        {"messages": [{"role": "user", "content": "1+2=?"}]},
        stream_mode="messages" #update
    ):
        if token.content:
            print(token.content, end="", flush=True)


if __name__ == "__main__":
    stream_agent()
    asyncio.run(async_stream_agent())
```

## Development

### Setup Development Environment

```bash
# Clone the repository
git clone https://github.com/example/lmcp-tool-builder.git
cd lmcp-tool-builder

# Install in development mode
pip install -e .
```

### Running Tests

```bash
python -m pytest tests/
```

## License

MIT License - see LICENSE file for details.

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.
