mimory-mcp-focus-langchain


Namemimory-mcp-focus-langchain JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryLangChain integration for mimory-mcp-focus
upload_time2025-10-08 18:54:10
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords mcp langchain focus ai tools
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # mimory-mcp-focus-langchain

[![PyPI version](https://badge.fury.io/py/mimory-mcp-focus-langchain.svg)](https://badge.fury.io/py/mimory-mcp-focus-langchain)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

LangChain integration for [mimory-mcp-focus](https://github.com/mimoryinc/mimory-mcp-focus), providing focus capabilities to your LangChain MCP implementations.

## Overview

`mimory-mcp-focus-langchain` extends LangChain's MCP (Model Context Protocol) integration with powerful focus capabilities. It allows you to:

- **Restrict tool access** to specific MCP tools
- **Control parameter values** with whitelists and ranges
- **Apply composite focus** for complex tool-specific restrictions
- **Integrate seamlessly** with LangChain's tool ecosystem

## Installation

```bash
pip install mimory-mcp-focus-langchain
```

### Dependencies

This package requires:
- Python 3.10+
- [mimory-mcp-focus](https://github.com/mimoryinc/mimory-mcp-focus) - Core focus functionality
- [langchain-mcp-adapters](https://github.com/langchain-ai/langchain-mcp-adapters) - LangChain MCP integration
- [langchain-core](https://github.com/langchain-ai/langchain) - LangChain core functionality

## Quick Start

### Basic Usage with FocusMultiServerMCPClient

```python
import asyncio
from mim_mcp_focus_langchain import FocusMultiServerMCPClient
from langchain_mcp_adapters.sessions import Connection

async def main():
    # Define MCP server connections
    connections = {
        "everything": {
            "transport": "stdio",
            "command": "npx",
            "args": ["-y", "@modelcontextprotocol/server-everything"]
        },
        "time": {
            "transport": "stdio", 
            "command": "python",
            "args": ["-m", "mcp_server_time"]
        }
    }
    
    # Configure focus restrictions
    focus_configs = {
        "everything": {
            "focus_tools": ["echo", "add"],  # Only allow these tools
            "focus_params": {
                "message": ["hello", "world"],  # Restrict message values
                "a": ["range:1-10"]  # Restrict 'a' parameter to 1-10
            }
        },
        "time": {
            "focus_tools": ["get_current_time"],  # Only allow time tool
            "focus_params": {
                "timezone": ["America/New_York", "Europe/London"]  # Restrict timezones
            }
        }
    }
    
    # Create focus-enabled client
    client = FocusMultiServerMCPClient(connections, focus_configs)
    
    # Get tools with focus applied
    tools = await client.get_tools()
    
    # Use tools in your LangChain application
    for tool in tools:
        print(f"Tool: {tool.name} - {tool.description}")

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

### Using Core FocusClient with LangChain

```python
import asyncio
from mimory_mcp_focus import focus_client_simple, focus_client_composite
from langchain_mcp_adapters.sessions import Connection, create_session
from langchain_mcp_adapters.tools import load_mcp_tools

async def main():
    # Create MCP connection
    connection = {
        "transport": "stdio",
        "command": "npx", 
        "args": ["-y", "@modelcontextprotocol/server-everything"]
    }
    
    # Create focus-enabled session
    async with create_session(connection) as session:
        await session.initialize()
        
        # Apply focus restrictions using simple focus
        focus_session = focus_client_simple(
            session,
            focus_tools=["echo", "add"],
            focus_params={
                "message": ["hello", "world"],
                "a": ["range:1-10"]
            },
            strict=False
        )
        
        # Load tools with focus applied
        tools = await load_mcp_tools(focus_session)
        
        # Use tools in LangChain
        for tool in tools:
            print(f"Tool: {tool.name}")

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

## Focus Configuration

### Simple Focus

Restrict tools and parameters globally:

```python
focus_config = {
    "focus_tools": ["tool1", "tool2"],  # Allowed tools
    "focus_params": {
        "param1": ["value1", "value2"],  # Allowed values
        "param2": ["range:1-100"]  # Numeric range
    },
    "focus_type": "simple",  # How the focus params are encoded
    "strict": False  # Whether to enforce strict mode
}
```

### Composite Focus

Apply different restrictions per tool:

```python
focus_config = {
    "focus": {
        "tool1": {
            "param1": ["value1", "value2"],
            "param2": ["range:1-10"]
        },
        "tool2": {
            "param3": ["value3", "value4"],
            "param4": ["value5"]
        }
    },
    "focus_type": "composite",  # How the focus params are encoded
    "strict": True
}
```

### Focus Configuration Structure

The `focus_config` dictionary supports the following structure:

**For Simple Focus (`focus_type: "simple"`):**
- `focus_tools`: List of allowed tool names (use `["*"]` to allow all tools)
- `focus_params`: Dictionary mapping parameter names to allowed values
- `focus_type`: Must be `"simple"`
- `strict`: Boolean indicating whether to enforce strict mode

**For Composite Focus (`focus_type: "composite"`):**
- `focus`: Dictionary mapping tool names to their parameter restrictions
- `focus_type`: Must be `"composite"`
- `strict`: Boolean indicating whether to enforce strict mode

**Parameter Value Formats:**
- Exact values: `["value1", "value2"]`
- Numeric ranges: `["range:1-100"]` (inclusive)
- Wildcard: `["*"]` (allows any value)

## API Reference

### FocusMultiServerMCPClient

Main class for focus-enabled multi-server MCP operations.

#### Constructor

```python
FocusMultiServerMCPClient(
    connections: Optional[Dict[str, Connection]] = None,
    focus_configs: Optional[Dict[str, Dict[str, Any]]] = None
)
```

**Parameters:**
- `connections`: Dictionary mapping server names to connection configurations
- `focus_configs`: Dictionary mapping server names to focus configurations

#### Methods

##### `async get_tools(server_name: Optional[str] = None) -> List[BaseTool]`

Get LangChain tools with focus restrictions applied.

**Parameters:**
- `server_name`: Optional name of specific server. If None, returns tools from all servers.

**Returns:**
- List of LangChain tools with focus applied

##### `async session(server_name: str, *, auto_initialize: bool = True) -> AsyncIterator[ClientSession]`

Create a focus-enabled MCP session.

**Parameters:**
- `server_name`: Name of the server to connect to
- `auto_initialize`: Whether to automatically initialize the session

**Returns:**
- Async context manager yielding a focus-enabled ClientSession

## Examples

### Example 1: Basic Tool Restriction

```python
# examples/basic_restriction.py
import asyncio
from mim_mcp_focus_langchain import FocusMultiServerMCPClient

async def main():
    connections = {
        "everything": {
            "transport": "stdio",
            "command": "npx",
            "args": ["-y", "@modelcontextprotocol/server-everything"]
        }
    }
    
    focus_configs = {
        "everything": {
            "focus_tools": ["echo"],  # Only allow echo tool
            "focus_params": {
                "message": ["hello", "world", "test"]  # Restrict message values
            },
            "focus_type": "simple",
            "strict": False
        }
    }
    
    client = FocusMultiServerMCPClient(connections, focus_configs)
    tools = await client.get_tools()
    
    print("Available tools:")
    for tool in tools:
        print(f"- {tool.name}: {tool.description}")

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

### Example 2: Multi-Server with Composite Focus

```python
# examples/multi_server_composite.py
import asyncio
from mim_mcp_focus_langchain import FocusMultiServerMCPClient

async def main():
    connections = {
        "everything": {
            "transport": "stdio",
            "command": "npx",
            "args": ["-y", "@modelcontextprotocol/server-everything"]
        },
        "time": {
            "transport": "stdio",
            "command": "python", 
            "args": ["-m", "mcp_server_time"]
        }
    }
    
    focus_configs = {
        "everything": {
            "focus": {
                "echo": {
                    "message": ["hello", "world"]
                },
                "add": {
                    "a": ["range:1-5"],
                    "b": ["range:1-5"]
                }
            },
            "focus_type": "composite",
            "strict": False
        },
        "time": {
            "focus_tools": ["get_current_time"],
            "focus_params": {
                "timezone": ["America/New_York", "Europe/London"]
            },
            "focus_type": "simple",
            "strict": False
        }
    }
    
    client = FocusMultiServerMCPClient(connections, focus_configs)
    tools = await client.get_tools()
    
    print("Available tools:")
    for tool in tools:
        print(f"- {tool.name}: {tool.description}")

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

### Example 3: Using with LangChain Agents

```python
# examples/langchain_agent.py
import asyncio
from mim_mcp_focus_langchain import FocusMultiServerMCPClient
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_openai import ChatOpenAI

async def main():
    # Setup MCP connections with focus
    connections = {
        "everything": {
            "transport": "stdio",
            "command": "npx",
            "args": ["-y", "@modelcontextprotocol/server-everything"]
        }
    }
    
    focus_configs = {
        "everything": {
            "focus_tools": ["echo", "add"],
            "focus_params": {
                "message": ["hello", "world", "test"],
                "a": ["range:1-10"],
                "b": ["range:1-10"]
            },
            "focus_type": "simple",
            "strict": False
        }
    }
    
    # Create focus-enabled client
    client = FocusMultiServerMCPClient(connections, focus_configs)
    
    # Get tools
    tools = await client.get_tools()
    
    # Create LangChain agent
    llm = ChatOpenAI(model="gpt-4", temperature=0)
    agent = create_tool_calling_agent(llm, tools, "You are a helpful assistant with access to focused MCP tools.")
    agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
    
    # Run agent
    result = await agent_executor.ainvoke({"input": "Echo 'hello' and add 5 + 3"})
    print(result)

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

## Error Handling

The library uses standard Python exceptions for error handling. Focus-related errors will be raised as appropriate exceptions that you can catch and handle as needed.

## Contributing

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

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Links

- [LangChain Python SDK](https://github.com/langchain-ai/langchain)
- [LangChain MCP Adapters](https://github.com/langchain-ai/langchain-mcp-adapters)
- [mimory-mcp-focus](https://github.com/mimoryinc/mimory-mcp-focus)
- [Model Context Protocol](https://modelcontextprotocol.io/)

## Author

**Travis McQueen** - [oss@mimory.io](mailto:oss@mimory.io)

## Support

For support, please open an issue on [GitHub](https://github.com/mimoryinc/mimory-mcp-focus-langchain/issues).

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mimory-mcp-focus-langchain",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "mcp, langchain, focus, ai, tools",
    "author": null,
    "author_email": "Travis McQueen <oss@mimory.io>",
    "download_url": "https://files.pythonhosted.org/packages/5b/3f/4ff66c3b2d60d3ccfbe0063ae32b370f64e5ecc00845bd0e73e82e0483d4/mimory_mcp_focus_langchain-0.1.0.tar.gz",
    "platform": null,
    "description": "# mimory-mcp-focus-langchain\n\n[![PyPI version](https://badge.fury.io/py/mimory-mcp-focus-langchain.svg)](https://badge.fury.io/py/mimory-mcp-focus-langchain)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nLangChain integration for [mimory-mcp-focus](https://github.com/mimoryinc/mimory-mcp-focus), providing focus capabilities to your LangChain MCP implementations.\n\n## Overview\n\n`mimory-mcp-focus-langchain` extends LangChain's MCP (Model Context Protocol) integration with powerful focus capabilities. It allows you to:\n\n- **Restrict tool access** to specific MCP tools\n- **Control parameter values** with whitelists and ranges\n- **Apply composite focus** for complex tool-specific restrictions\n- **Integrate seamlessly** with LangChain's tool ecosystem\n\n## Installation\n\n```bash\npip install mimory-mcp-focus-langchain\n```\n\n### Dependencies\n\nThis package requires:\n- Python 3.10+\n- [mimory-mcp-focus](https://github.com/mimoryinc/mimory-mcp-focus) - Core focus functionality\n- [langchain-mcp-adapters](https://github.com/langchain-ai/langchain-mcp-adapters) - LangChain MCP integration\n- [langchain-core](https://github.com/langchain-ai/langchain) - LangChain core functionality\n\n## Quick Start\n\n### Basic Usage with FocusMultiServerMCPClient\n\n```python\nimport asyncio\nfrom mim_mcp_focus_langchain import FocusMultiServerMCPClient\nfrom langchain_mcp_adapters.sessions import Connection\n\nasync def main():\n    # Define MCP server connections\n    connections = {\n        \"everything\": {\n            \"transport\": \"stdio\",\n            \"command\": \"npx\",\n            \"args\": [\"-y\", \"@modelcontextprotocol/server-everything\"]\n        },\n        \"time\": {\n            \"transport\": \"stdio\", \n            \"command\": \"python\",\n            \"args\": [\"-m\", \"mcp_server_time\"]\n        }\n    }\n    \n    # Configure focus restrictions\n    focus_configs = {\n        \"everything\": {\n            \"focus_tools\": [\"echo\", \"add\"],  # Only allow these tools\n            \"focus_params\": {\n                \"message\": [\"hello\", \"world\"],  # Restrict message values\n                \"a\": [\"range:1-10\"]  # Restrict 'a' parameter to 1-10\n            }\n        },\n        \"time\": {\n            \"focus_tools\": [\"get_current_time\"],  # Only allow time tool\n            \"focus_params\": {\n                \"timezone\": [\"America/New_York\", \"Europe/London\"]  # Restrict timezones\n            }\n        }\n    }\n    \n    # Create focus-enabled client\n    client = FocusMultiServerMCPClient(connections, focus_configs)\n    \n    # Get tools with focus applied\n    tools = await client.get_tools()\n    \n    # Use tools in your LangChain application\n    for tool in tools:\n        print(f\"Tool: {tool.name} - {tool.description}\")\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### Using Core FocusClient with LangChain\n\n```python\nimport asyncio\nfrom mimory_mcp_focus import focus_client_simple, focus_client_composite\nfrom langchain_mcp_adapters.sessions import Connection, create_session\nfrom langchain_mcp_adapters.tools import load_mcp_tools\n\nasync def main():\n    # Create MCP connection\n    connection = {\n        \"transport\": \"stdio\",\n        \"command\": \"npx\", \n        \"args\": [\"-y\", \"@modelcontextprotocol/server-everything\"]\n    }\n    \n    # Create focus-enabled session\n    async with create_session(connection) as session:\n        await session.initialize()\n        \n        # Apply focus restrictions using simple focus\n        focus_session = focus_client_simple(\n            session,\n            focus_tools=[\"echo\", \"add\"],\n            focus_params={\n                \"message\": [\"hello\", \"world\"],\n                \"a\": [\"range:1-10\"]\n            },\n            strict=False\n        )\n        \n        # Load tools with focus applied\n        tools = await load_mcp_tools(focus_session)\n        \n        # Use tools in LangChain\n        for tool in tools:\n            print(f\"Tool: {tool.name}\")\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n## Focus Configuration\n\n### Simple Focus\n\nRestrict tools and parameters globally:\n\n```python\nfocus_config = {\n    \"focus_tools\": [\"tool1\", \"tool2\"],  # Allowed tools\n    \"focus_params\": {\n        \"param1\": [\"value1\", \"value2\"],  # Allowed values\n        \"param2\": [\"range:1-100\"]  # Numeric range\n    },\n    \"focus_type\": \"simple\",  # How the focus params are encoded\n    \"strict\": False  # Whether to enforce strict mode\n}\n```\n\n### Composite Focus\n\nApply different restrictions per tool:\n\n```python\nfocus_config = {\n    \"focus\": {\n        \"tool1\": {\n            \"param1\": [\"value1\", \"value2\"],\n            \"param2\": [\"range:1-10\"]\n        },\n        \"tool2\": {\n            \"param3\": [\"value3\", \"value4\"],\n            \"param4\": [\"value5\"]\n        }\n    },\n    \"focus_type\": \"composite\",  # How the focus params are encoded\n    \"strict\": True\n}\n```\n\n### Focus Configuration Structure\n\nThe `focus_config` dictionary supports the following structure:\n\n**For Simple Focus (`focus_type: \"simple\"`):**\n- `focus_tools`: List of allowed tool names (use `[\"*\"]` to allow all tools)\n- `focus_params`: Dictionary mapping parameter names to allowed values\n- `focus_type`: Must be `\"simple\"`\n- `strict`: Boolean indicating whether to enforce strict mode\n\n**For Composite Focus (`focus_type: \"composite\"`):**\n- `focus`: Dictionary mapping tool names to their parameter restrictions\n- `focus_type`: Must be `\"composite\"`\n- `strict`: Boolean indicating whether to enforce strict mode\n\n**Parameter Value Formats:**\n- Exact values: `[\"value1\", \"value2\"]`\n- Numeric ranges: `[\"range:1-100\"]` (inclusive)\n- Wildcard: `[\"*\"]` (allows any value)\n\n## API Reference\n\n### FocusMultiServerMCPClient\n\nMain class for focus-enabled multi-server MCP operations.\n\n#### Constructor\n\n```python\nFocusMultiServerMCPClient(\n    connections: Optional[Dict[str, Connection]] = None,\n    focus_configs: Optional[Dict[str, Dict[str, Any]]] = None\n)\n```\n\n**Parameters:**\n- `connections`: Dictionary mapping server names to connection configurations\n- `focus_configs`: Dictionary mapping server names to focus configurations\n\n#### Methods\n\n##### `async get_tools(server_name: Optional[str] = None) -> List[BaseTool]`\n\nGet LangChain tools with focus restrictions applied.\n\n**Parameters:**\n- `server_name`: Optional name of specific server. If None, returns tools from all servers.\n\n**Returns:**\n- List of LangChain tools with focus applied\n\n##### `async session(server_name: str, *, auto_initialize: bool = True) -> AsyncIterator[ClientSession]`\n\nCreate a focus-enabled MCP session.\n\n**Parameters:**\n- `server_name`: Name of the server to connect to\n- `auto_initialize`: Whether to automatically initialize the session\n\n**Returns:**\n- Async context manager yielding a focus-enabled ClientSession\n\n## Examples\n\n### Example 1: Basic Tool Restriction\n\n```python\n# examples/basic_restriction.py\nimport asyncio\nfrom mim_mcp_focus_langchain import FocusMultiServerMCPClient\n\nasync def main():\n    connections = {\n        \"everything\": {\n            \"transport\": \"stdio\",\n            \"command\": \"npx\",\n            \"args\": [\"-y\", \"@modelcontextprotocol/server-everything\"]\n        }\n    }\n    \n    focus_configs = {\n        \"everything\": {\n            \"focus_tools\": [\"echo\"],  # Only allow echo tool\n            \"focus_params\": {\n                \"message\": [\"hello\", \"world\", \"test\"]  # Restrict message values\n            },\n            \"focus_type\": \"simple\",\n            \"strict\": False\n        }\n    }\n    \n    client = FocusMultiServerMCPClient(connections, focus_configs)\n    tools = await client.get_tools()\n    \n    print(\"Available tools:\")\n    for tool in tools:\n        print(f\"- {tool.name}: {tool.description}\")\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### Example 2: Multi-Server with Composite Focus\n\n```python\n# examples/multi_server_composite.py\nimport asyncio\nfrom mim_mcp_focus_langchain import FocusMultiServerMCPClient\n\nasync def main():\n    connections = {\n        \"everything\": {\n            \"transport\": \"stdio\",\n            \"command\": \"npx\",\n            \"args\": [\"-y\", \"@modelcontextprotocol/server-everything\"]\n        },\n        \"time\": {\n            \"transport\": \"stdio\",\n            \"command\": \"python\", \n            \"args\": [\"-m\", \"mcp_server_time\"]\n        }\n    }\n    \n    focus_configs = {\n        \"everything\": {\n            \"focus\": {\n                \"echo\": {\n                    \"message\": [\"hello\", \"world\"]\n                },\n                \"add\": {\n                    \"a\": [\"range:1-5\"],\n                    \"b\": [\"range:1-5\"]\n                }\n            },\n            \"focus_type\": \"composite\",\n            \"strict\": False\n        },\n        \"time\": {\n            \"focus_tools\": [\"get_current_time\"],\n            \"focus_params\": {\n                \"timezone\": [\"America/New_York\", \"Europe/London\"]\n            },\n            \"focus_type\": \"simple\",\n            \"strict\": False\n        }\n    }\n    \n    client = FocusMultiServerMCPClient(connections, focus_configs)\n    tools = await client.get_tools()\n    \n    print(\"Available tools:\")\n    for tool in tools:\n        print(f\"- {tool.name}: {tool.description}\")\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### Example 3: Using with LangChain Agents\n\n```python\n# examples/langchain_agent.py\nimport asyncio\nfrom mim_mcp_focus_langchain import FocusMultiServerMCPClient\nfrom langchain.agents import AgentExecutor, create_tool_calling_agent\nfrom langchain_openai import ChatOpenAI\n\nasync def main():\n    # Setup MCP connections with focus\n    connections = {\n        \"everything\": {\n            \"transport\": \"stdio\",\n            \"command\": \"npx\",\n            \"args\": [\"-y\", \"@modelcontextprotocol/server-everything\"]\n        }\n    }\n    \n    focus_configs = {\n        \"everything\": {\n            \"focus_tools\": [\"echo\", \"add\"],\n            \"focus_params\": {\n                \"message\": [\"hello\", \"world\", \"test\"],\n                \"a\": [\"range:1-10\"],\n                \"b\": [\"range:1-10\"]\n            },\n            \"focus_type\": \"simple\",\n            \"strict\": False\n        }\n    }\n    \n    # Create focus-enabled client\n    client = FocusMultiServerMCPClient(connections, focus_configs)\n    \n    # Get tools\n    tools = await client.get_tools()\n    \n    # Create LangChain agent\n    llm = ChatOpenAI(model=\"gpt-4\", temperature=0)\n    agent = create_tool_calling_agent(llm, tools, \"You are a helpful assistant with access to focused MCP tools.\")\n    agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)\n    \n    # Run agent\n    result = await agent_executor.ainvoke({\"input\": \"Echo 'hello' and add 5 + 3\"})\n    print(result)\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n## Error Handling\n\nThe library uses standard Python exceptions for error handling. Focus-related errors will be raised as appropriate exceptions that you can catch and handle as needed.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Links\n\n- [LangChain Python SDK](https://github.com/langchain-ai/langchain)\n- [LangChain MCP Adapters](https://github.com/langchain-ai/langchain-mcp-adapters)\n- [mimory-mcp-focus](https://github.com/mimoryinc/mimory-mcp-focus)\n- [Model Context Protocol](https://modelcontextprotocol.io/)\n\n## Author\n\n**Travis McQueen** - [oss@mimory.io](mailto:oss@mimory.io)\n\n## Support\n\nFor support, please open an issue on [GitHub](https://github.com/mimoryinc/mimory-mcp-focus-langchain/issues).\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "LangChain integration for mimory-mcp-focus",
    "version": "0.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/mimoryinc/mimory-mcp-focus-langchain/issues",
        "Homepage": "https://github.com/mimoryinc/mimory-mcp-focus-langchain",
        "Repository": "https://github.com/mimoryinc/mimory-mcp-focus-langchain"
    },
    "split_keywords": [
        "mcp",
        " langchain",
        " focus",
        " ai",
        " tools"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e82cbf415478bc5249c88d4c8bc8dbf738aa1b3cd981299ee620dcad2f575501",
                "md5": "6e522c8fa86643d8cfdf6cd4c47e5891",
                "sha256": "78ff58165bb746115d1c39e95ba31d1521a7d0da8ad1e60ad83b0eb25b307b7a"
            },
            "downloads": -1,
            "filename": "mimory_mcp_focus_langchain-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6e522c8fa86643d8cfdf6cd4c47e5891",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 9839,
            "upload_time": "2025-10-08T18:54:08",
            "upload_time_iso_8601": "2025-10-08T18:54:08.563479Z",
            "url": "https://files.pythonhosted.org/packages/e8/2c/bf415478bc5249c88d4c8bc8dbf738aa1b3cd981299ee620dcad2f575501/mimory_mcp_focus_langchain-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5b3f4ff66c3b2d60d3ccfbe0063ae32b370f64e5ecc00845bd0e73e82e0483d4",
                "md5": "5835b34e96ce8eccb8ab7436ece7b4f5",
                "sha256": "a066afc7d9e4a0a30827aa56a45cd61226b0e7384c19cfad25628408762fae1c"
            },
            "downloads": -1,
            "filename": "mimory_mcp_focus_langchain-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "5835b34e96ce8eccb8ab7436ece7b4f5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 12416,
            "upload_time": "2025-10-08T18:54:10",
            "upload_time_iso_8601": "2025-10-08T18:54:10.033984Z",
            "url": "https://files.pythonhosted.org/packages/5b/3f/4ff66c3b2d60d3ccfbe0063ae32b370f64e5ecc00845bd0e73e82e0483d4/mimory_mcp_focus_langchain-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-08 18:54:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mimoryinc",
    "github_project": "mimory-mcp-focus-langchain",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "mimory-mcp-focus-langchain"
}
        
Elapsed time: 1.31337s