Skip to main content

Add your description here

Project description

Logseq API MCP Server

Model Context Protocol server for Logseq API integration with dynamic tool discovery

Python Version MCP MIT License UV Tests Quality PR Validation

Table of Contents

Overview

The Logseq API MCP Server provides seamless integration between Model Context Protocol clients and Logseq knowledge bases. This server enables AI assistants and other MCP clients to interact with your Logseq notes, extract educational content, analyze knowledge relationships, and work with structured information through a comprehensive set of specialized tools.

๐Ÿš€ Key Innovation: Features a dynamic tool discovery system that automatically detects, imports, and registers any new tools added to the src/tools/ directory - zero configuration required!

Perfect for:

  • ๐Ÿ“š Educational Content Management - Extract and organize flashcards and study materials
  • ๐ŸŽ“ Learning Systems - Build AI-powered study assistants and spaced repetition tools
  • ๐Ÿ” Knowledge Base Analysis - Discover relationships and patterns in your notes
  • ๐Ÿ“Š Content Discovery - Navigate complex knowledge graphs with AI assistance
  • ๐Ÿง  Academic Research - Analyze course materials and learning resources

Features

๐Ÿ› ๏ธ Core Tools (9 Available)

Read Operations

  1. get_all_pages - Complete page listing with metadata
  2. get_page_blocks - Hierarchical block structure analysis
  3. get_page_links - Page relationship and reference discovery
  4. get_block_content - Detailed block content with children
  5. get_all_page_content - Comprehensive page content extraction
  6. get_linked_flashcards - Advanced flashcard collection and analysis

Write Operations

  1. append_block_in_page - Append blocks to pages with positioning options
  2. create_page - Create new pages with properties and format
  3. edit_block - Edit existing blocks with content, properties, and cursor control

๐Ÿ”„ Dynamic Tool Discovery

  • Auto-Discovery - Automatically finds and imports tools from src/tools/
  • Zero Configuration - No manual imports or registrations needed
  • Instant Integration - New tools are immediately available
  • CI Validation - Automated testing ensures all tools work correctly

๐ŸŽฏ Optimized for AI/LLM Consumption

  • Clean Structured Output - Emoji-enhanced, hierarchical formatting
  • Educational Content Focus - Specialized flashcard and learning material extraction
  • Comprehensive Metadata - Block IDs, UUIDs, timestamps, properties, and relationships
  • Smart Content Organization - Automatic categorization and summary generation
  • Language Agnostic - Works with any Logseq knowledge base language

Installation

Prerequisites

  • Python 3.11+ - Modern Python with async/await support
  • uv - Fast Python package manager and project management
  • Running Logseq instance with API enabled
  • Logseq API token for authentication

Quick Setup

  1. Clone the repository

    git clone https://github.com/gustavo-meilus/logseq-api-mcp.git
    cd logseq-api-mcp
    
  2. Install with uv

    uv sync
    
  3. Configure environment

    cp .env.template .env
    # Edit .env with your Logseq API details
    
  4. Start the server

    uv run mcp run src/server.py
    

Configuration

Create a .env file in the project root:

# Logseq API Configuration
LOGSEQ_API_ENDPOINT=http://127.0.0.1:12315/api
LOGSEQ_API_TOKEN=your_api_token_here

Getting Your Logseq API Token

  1. Open Logseq application
  2. Go to Settings โ†’ Features โ†’ Developer mode
  3. Enable "HTTP APIs server"
  4. Copy the displayed API token
  5. Note the API endpoint (default: http://127.0.0.1:12315/api)
  6. Activate the API

Available Tools

Tool Description Output Best For
get_all_pages Lists all pages with essential metadata 568 pages (135 journal, 433 regular) Navigation, page discovery
get_page_blocks Hierarchical block tree structure Multi-level tree with IDs, UUIDs Structure analysis, navigation
get_page_links Pages linking to target page Reference analysis with metadata Relationship discovery
get_block_content Detailed block info with children Block content + immediate children Deep content analysis
get_all_page_content Complete page content + references Full content with linked sources Comprehensive content review
get_linked_flashcards Flashcards from page + linked pages 20 flashcards across 2 pages Study material extraction
append_block_in_page Append blocks to pages with positioning Success confirmation with details Content creation, organization
create_page Create new pages with properties Page creation confirmation Page management, structure
edit_block Edit existing blocks with full control Edit confirmation with changes Content modification, updates

Tool Details & Examples

๐Ÿ—‚๏ธ get_all_pages

Purpose: Get a clean listing of all pages in your knowledge base

Output Format:

๐Ÿ“Š LOGSEQ PAGES LISTING
๐Ÿ“ˆ Total pages: 568
๐Ÿ“… Journal pages: 135
๐Ÿ“„ Regular pages: 433

๐Ÿ“„ REGULAR PAGES:
๐Ÿ“„ Domain Driven Design (DDD) I | ID: 3460 | UUID: 682cfd19-7df6-46e0-a6f3-c09eca3b2530
๐Ÿ“„ MBA Engenharia de Software | ID: 170 | UUID: 682fa28c-a3cc-47f2-ae65-7b7db57e1d67

Use Cases:

  • Knowledge base exploration
  • Page inventory and organization
  • Finding specific pages by name or metadata

๐ŸŒณ get_page_blocks

Purpose: Get hierarchical block structure of any page

Example Input: "Domain Driven Design (DDD) I"

Output Features:

  • Tree structure with indentation levels
  • Block IDs, UUIDs, and parent-child relationships
  • Property extraction and metadata
  • Multi-level hierarchy support (up to 8+ levels)

Sample Output:

๐ŸŒณ PAGE BLOCKS TREE STRUCTURE
๐Ÿ“„ Page: Domain Driven Design (DDD) I (ID: 3460)
๐Ÿ“Š Total blocks: 1

๐Ÿ“‹ tipo:: #aula curso:: [[MBA Engenharia de Software]]
   ๐Ÿ“Š ID:3544 | UUID:682cfd19-2826-46b7-8222-0821b11abc60 | Level:1
   ๐Ÿ‘‡ Children: 7

  H1 # Flashcards [heading: 1]
     ๐Ÿ“Š ID:3552 | UUID:682cfd19-4c9c-40dd-8cb1-c2625315b8ae | Level:2
     ๐Ÿ‘‡ Children: 10

๐Ÿ”— get_page_links

Purpose: Find all pages that link to a target page

Example Result for "Domain Driven Design (DDD) I":

๐Ÿ”— PAGE LINKS ANALYSIS
๐Ÿ“„ Target Page: Domain Driven Design (DDD) I
๐Ÿ“Š Found 1 pages linking to this page

๐Ÿ“„ 1. Domain Driven Design (DDD) II
   ๐Ÿ”‘ ID: 3588 | UUID: 682cfd19-3a24-4636-a5d5-c62ea57d352e
   ๐Ÿ“Š References: 1 | Journal: No
   โš™๏ธ Properties: relacionado: Domain Driven Design (DDD) I

Applications:

  • Discover related content and cross-references
  • Build knowledge maps and relationship graphs
  • Find course sequences and learning paths

๐Ÿ” get_block_content

Purpose: Get detailed information about a specific block and its immediate children

Example Input: UUID 682cfd19-3c3f-427c-a0be-c5a3a197ea20

Output:

๐Ÿ” MAIN BLOCK
๐Ÿ“Œ Block ID: 3465
๐Ÿ”‘ UUID: 682cfd19-3c3f-427c-a0be-c5a3a197ea20

๐Ÿ“ CONTENT:
๐Ÿ’ก Flashcard
Por que o DDD prioriza a colaboraรงรฃo entre desenvolvedores e especialistas do domรญnio? #card
+ [ ] Porque os especialistas do domรญnio sรฃo responsรกveis apenas por aprovar a infraestrutura tecnolรณgica.
+ [ ] Para garantir que o software seja construรญdo com base no conhecimento profundo do domรญnio, reduzindo ambiguidades e erros.

๐Ÿ‘ถ IMMEDIATE CHILDREN:
๐Ÿ”ธ CHILD 1:
Resposta Correta: Para garantir que o software seja construรญdo com base no conhecimento profundo do domรญnio, reduzindo ambiguidades e erros.

๐Ÿ“– get_all_page_content

Purpose: Extract comprehensive content from a page including properties, blocks, and linked references

Key Features:

  • Complete hierarchical content structure
  • Property extraction and formatting
  • Flashcard identification and extraction
  • Linked references analysis
  • Educational content optimization

Example Summary:

๐Ÿ“– Domain Driven Design (DDD) I
๐Ÿ“Š 1 blocks | 1 linked sources

๐Ÿ“„ COMPREHENSIVE CONTENT:
๐Ÿ“„ Page Properties [3544]
   ๐Ÿ“‹ curso: MBA Engenharia de Software | tipo: aula | professor: Guilherme Bezerra de Lima

๐ŸŽฏ # Flashcards [3552]
   ๐Ÿ’ก Flashcard [3465]
      โ“ Q: Por que o DDD prioriza a colaboraรงรฃo entre desenvolvedores e especialistas do domรญnio?

โœ๏ธ append_block_in_page

Purpose: Append new blocks to any page with precise positioning control

Key Features:

  • Positioning Options - Insert before specific blocks, as siblings, or at page end
  • Page-level Blocks - Support for page-level block creation
  • Content Flexibility - Support for any text content including markdown
  • Immediate Feedback - Detailed confirmation with positioning information

Example Usage:

# Basic block append
await append_block_in_page("My Page", "New content here")

# Positioned before specific block
await append_block_in_page("My Page", "Important note", before="block-uuid-123")

# As sibling of another block
await append_block_in_page("My Page", "Related content", sibling="block-uuid-456")

# Page-level block
await append_block_in_page("My Page", "Page property", is_page_block=True)

Output Example:

โœ… **BLOCK APPENDED SUCCESSFULLY**
๐Ÿ“„ Page: My Page
๐Ÿ“ Content: New content here
๐Ÿ“ Positioned: At the end of the page
๐Ÿ”— **NEXT STEPS:**
โ€ข Check your Logseq graph to see the new block
โ€ข Use get_page_blocks to verify the block was added
โ€ข Use get_block_content to get details of the new block

๐Ÿ“„ create_page

Purpose: Create new pages with custom properties and formatting

Key Features:

  • Property Support - Add custom properties and metadata
  • Format Options - Support for markdown and org formats
  • Journal Detection - Automatic journal page recognition
  • Comprehensive Metadata - Full page entity information

Example Usage:

# Basic page creation
await create_page("New Page")

# With properties
properties = {"status": "active", "priority": "high"}
await create_page("Project Page", properties=properties)

# With format specification
await create_page("Org Page", format="org")

# Complete page with all options
await create_page("Complete Page", properties=properties, format="markdown")

Output Example:

โœ… **PAGE CREATED SUCCESSFULLY**
๐Ÿ“„ Page: New Page
โš™๏ธ Properties set: 2 items
๐Ÿ“ Format: markdown
๐Ÿ”— **NEXT STEPS:**
โ€ข Check your Logseq graph to see the new page
โ€ข Use get_all_pages to verify the page was created
โ€ข Use get_page_blocks to start adding content

โœ๏ธ edit_block

Purpose: Edit existing blocks with full control over content, properties, and behavior

Key Features:

  • Content Editing - Modify block content with preview
  • Property Management - Add, update, or remove block properties
  • Cursor Control - Position cursor at specific locations
  • Focus Management - Control block focus after editing

Example Usage:

# Edit content only
await edit_block("block-uuid-123", content="Updated content")

# Update properties
properties = {"status": "completed", "priority": "high"}
await edit_block("block-uuid-123", properties=properties)

# Set cursor position and focus
await edit_block("block-uuid-123", cursor_position=10, focus=True)

# Complete edit with all options
await edit_block("block-uuid-123",
                content="New content",
                properties=properties,
                cursor_position=5,
                focus=True)

Output Example:

โœ… **BLOCK EDITED SUCCESSFULLY**
๐Ÿ”‘ Block UUID: block-uuid-123
๐Ÿ“ **UPDATED CONTENT:**

New content

โš™๏ธ **UPDATED PROPERTIES:**
โ€ข status: completed
โ€ข priority: high
๐Ÿ“ Cursor positioned at index 5
๐ŸŽฏ Focus: Enabled
๐Ÿ”— **NEXT STEPS:**
โ€ข Check your Logseq graph to see the updated block
โ€ข Use get_block_content to verify the changes
โ€ข Continue editing or add more content

๐Ÿง  get_linked_flashcards

Purpose: Comprehensive flashcard extraction from target page and all linked pages

Real Example Results for "Domain Driven Design (DDD) I":

๐ŸŽฏ LINKED FLASHCARDS ANALYSIS
๐Ÿ“„ Target Page: Domain Driven Design (DDD) I
๐Ÿ”— Searched 2 pages (target + 1 linked)
๐Ÿ’ก Found 20 flashcards total

๐Ÿ“š Domain Driven Design (DDD) I (10 flashcards)
๐Ÿ“š Domain Driven Design (DDD) II (10 flashcards)

๐Ÿ“Š SUMMARY:
โ€ข Total flashcards: 20
โ€ข Total answer blocks: 0
โ€ข Pages with flashcards: 2
โ€ข Average answers per flashcard: 0.0

Advanced Features:

  • Multi-choice question support
  • Answer block extraction and linking
  • Cross-page flashcard discovery
  • Educational metadata preservation
  • Learning system integration ready

Usage Examples

Add to your Claude Desktop MCP settings (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "logseq-api": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/logseq-api-mcp",
        "python",
        "src/server.py"
      ],
      "env": {
        "LOGSEQ_API_ENDPOINT": "http://127.0.0.1:12315/api",
        "LOGSEQ_API_TOKEN": "your_token_here"
      }
    }
  }
}

Note: Replace /path/to/logseq-api-mcp with the actual path to your cloned repository.

Development

Project Structure

logseq-api-mcp/
โ”œโ”€โ”€ .github/
โ”‚   โ”œโ”€โ”€ workflows/             # GitHub Actions CI/CD
โ”‚   โ”‚   โ”œโ”€โ”€ test.yml           # Main test suite
โ”‚   โ”‚   โ”œโ”€โ”€ pr-validation.yml  # PR validation
โ”‚   โ”‚   โ”œโ”€โ”€ comprehensive-test.yml # Extended testing
โ”‚   โ”‚   โ””โ”€โ”€ quality.yml        # Code quality & security
โ”‚   โ”œโ”€โ”€ ISSUE_TEMPLATE/        # Issue templates
โ”‚   โ””โ”€โ”€ pull_request_template.md # PR template
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ server.py              # MCP server implementation
โ”‚   โ”œโ”€โ”€ registry.py            # Dynamic tool discovery & registration
โ”‚   โ””โ”€โ”€ tools/                 # Tool implementations (auto-discovered)
โ”‚       โ”œโ”€โ”€ __init__.py        # Dynamic tool importer
โ”‚       โ”œโ”€โ”€ get_all_pages.py   # Page listing tool
โ”‚       โ”œโ”€โ”€ get_page_blocks.py # Block structure tool
โ”‚       โ”œโ”€โ”€ get_page_links.py  # Page links tool
โ”‚       โ”œโ”€โ”€ get_block_content.py # Block detail tool
โ”‚       โ”œโ”€โ”€ get_all_page_content.py # Complete content tool
โ”‚       โ”œโ”€โ”€ get_linked_flashcards.py # Flashcard extraction tool
โ”‚       โ”œโ”€โ”€ append_block_in_page.py # Block creation tool
โ”‚       โ”œโ”€โ”€ create_page.py     # Page creation tool
โ”‚       โ””โ”€โ”€ edit_block.py      # Block editing tool
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ conftest.py            # Shared test fixtures
โ”‚   โ”œโ”€โ”€ test_append_block_in_page.py # Block creation tests
โ”‚   โ”œโ”€โ”€ test_create_page.py    # Page creation tests
โ”‚   โ”œโ”€โ”€ test_edit_block.py     # Block editing tests
โ”‚   โ”œโ”€โ”€ test_get_tools.py      # Read operation tests
โ”‚   โ”œโ”€โ”€ test_mcp_server.py     # Server validation tests
โ”‚   โ”œโ”€โ”€ test_runner.py         # Test runner utility
โ”‚   โ””โ”€โ”€ TEST_SUMMARY.md        # Test documentation
โ”œโ”€โ”€ pyproject.toml             # UV project configuration
โ”œโ”€โ”€ .env.template              # Environment template
โ””โ”€โ”€ README.md                  # This file

Development Setup

# Install with development dependencies
uv sync --dev

# Format code (auto-fixes issues)
uv run ruff check --fix && uv run ruff format

# Test server with MCP inspector
uv run mcp dev src/server.py

# Run server directly
uv run mcp run src/server.py

Adding New Tools

Thanks to the dynamic discovery system, adding new tools is incredibly simple:

1. Create Your Tool File

Create src/tools/your_new_tool.py:

def your_new_tool(param: str) -> dict:
    """
    Your tool description here.

    Args:
        param: Description of parameter

    Returns:
        Dict with tool results
    """
    return {
        "result": f"Processed: {param}",
        "status": "success"
    }

2. That's It! ๐ŸŽ‰

The system automatically:

  • โœ… Discovers your tool file
  • โœ… Imports the function
  • โœ… Registers it with the MCP server
  • โœ… Validates it in CI tests

Tool Requirements

  • File location: Must be in src/tools/ directory
  • Function visibility: Don't start function names with _
  • File naming: Don't start filenames with _
  • Documentation: Include docstring with description
  • Type hints: Use for better IDE support

Dynamic Discovery Process

New Tool File โ†’ Auto-Scan โ†’ Import โ†’ Registration โ†’ Validation
  1. Auto-Scan: src/tools/__init__.py scans directory for .py files
  2. Import: Dynamically imports all public functions
  3. Registration: src/registry.py auto-registers with MCP server
  4. Validation: Tests automatically verify tool presence

Testing

Automated Testing

The project includes comprehensive automated testing with 68 test cases covering all functionality:

# Run the full test suite
uv run pytest tests/ --cov=src/tools --cov-report=html

# Run specific tool tests
uv run python tests/test_runner.py --tool append_block_in_page
uv run python tests/test_runner.py --tool create_page
uv run python tests/test_runner.py --tool edit_block

# Run server validation
uv run python tests/test_mcp_server.py

Test Coverage:

  • โœ… 68 Test Cases - Comprehensive coverage of all 9 tools
  • โœ… Server Health - Ensures MCP server starts correctly
  • โœ… Tool Discovery - Validates automatic tool detection
  • โœ… Dynamic Registration - Confirms all tools are registered
  • โœ… Write Operations - Tests for append, create, and edit tools
  • โœ… Read Operations - Tests for all get_* tools
  • โœ… Error Handling - HTTP errors, network issues, edge cases
  • โœ… CI Integration - Runs automatically on all commits
  • โœ… Coverage Reporting - 80% minimum coverage requirement

Manual Testing

# Test with MCP Inspector (interactive)
uv run mcp dev src/server.py

# Direct server testing
uv run mcp run src/server.py

Test Output Example

๐Ÿ” Testing MCP Server Health and Tools...
๐Ÿ”ง Discovered tools (auto-discovery): ['append_block_in_page', 'create_page', 'edit_block', 'get_all_page_content', 'get_all_pages', 'get_block_content', 'get_linked_flashcards', 'get_page_blocks', 'get_page_links']

๐Ÿฅ Testing server health...
โœ… Server started and responded successfully
โœ… Dynamic tool discovery working correctly

๐ŸŽ‰ MCP Server test completed successfully!
   ๐Ÿ“Š Tools auto-discovered: 9
   ๐Ÿฅ Server health: OK
   ๐Ÿ”„ Dynamic discovery: OK

CI/CD Pipeline

The project includes a comprehensive CI/CD pipeline with automated testing, code quality checks, and security scanning.

๐Ÿš€ Automated Workflows

Pull Request Validation

  • โœ… Test Coverage - 80% minimum coverage requirement
  • โœ… Code Quality - Ruff linting and MyPy type checking
  • โœ… Security Scanning - Bandit security analysis
  • โœ… Tool Discovery - Automated tool validation
  • โœ… MCP Server Testing - Server startup and functionality tests

Main Test Suite

  • โœ… Multi-Python Testing - Python 3.11, 3.12, and 3.13
  • โœ… Cross-Platform - Ubuntu, Windows, and macOS
  • โœ… Performance Testing - Memory usage and test duration
  • โœ… Integration Testing - Real MCP server with tools

Code Quality & Security

  • โœ… Daily Security Scans - Automated vulnerability detection
  • โœ… Dependency Checking - Safety and license validation
  • โœ… Code Standards - Automated formatting and linting
  • โœ… Secret Detection - Hardcoded credential scanning

๐Ÿ“Š Quality Gates

All workflows must pass for:

  • โœ… Code to be merged to main
  • โœ… Releases to be published
  • โœ… PRs to be approved

๐Ÿ”ง Local Testing

Run the same checks locally:

# Install dependencies
uv sync --dev

# Run tests with coverage
uv run pytest tests/ --cov=src/tools --cov-report=html

# Run linting
uv run ruff check src/ tests/
uv run ruff format --check src/ tests/

# Run type checking
uv run mypy src/ --ignore-missing-imports

# Run security scan
uv run bandit -r src/

# Run dependency check
uv run safety check

๐Ÿ“ˆ Coverage Requirements

  • Minimum Coverage: 80% for PR validation
  • Target Coverage: 85% for comprehensive testing
  • Coverage Tools: pytest-cov with HTML and XML reports

๐Ÿ›ก๏ธ Security Features

  • Bandit - Python security linter
  • Safety - Dependency vulnerability scanner
  • Secret Detection - Hardcoded credential detection
  • License Check - Dependency license validation

Contributing

We follow GitHub Flow for all contributions. See CONTRIBUTING.md for complete details.

Quick Start

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/add-search-tool
    
  3. Create your tool (just add the file - automatic integration!)
    # Create src/tools/search_tool.py with your function
    
  4. Format and test
    uv run ruff check --fix && uv run ruff format
    uv run python tests/test_mcp_server.py
    
  5. Commit and push
    git commit -m "feat: add search tool for content discovery"
    git push origin feature/add-search-tool
    
  6. Open a Pull Request

Development Benefits

  • Zero Configuration - No manual imports or registrations
  • Instant Feedback - Tools work immediately after creation
  • Automated Validation - CI tests verify everything works
  • Clean Architecture - Dynamic system keeps code organized
  • Comprehensive Testing - 68 test cases with 80% coverage
  • Quality Assurance - Automated linting, type checking, and security
  • CI/CD Pipeline - Automated testing on every PR and push

Code Quality Standards

  • Python 3.11+ with modern async/await patterns
  • PEP 8 compliance via Ruff formatting
  • Type hints for better IDE support
  • Error handling with comprehensive exception management
  • Environment variables for configuration
  • Modular design with dynamic tool loading

Documentation & Resources

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments


Made for the Logseq and MCP communities

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_gustavo_meilus_logseq_api_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_gustavo_meilus_logseq_api_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 40.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_gustavo_meilus_logseq_api_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 743ae7888b8a8763661dcd02640847dba28cc42a87d557e4c93e3e1d0fe17640
MD5 3a733c77c47d8dcb3ea087a3ba69a3bd
BLAKE2b-256 7ca861d13d6b0a84ea1c5ca7330affa8c3ac68430bf172759226055598b76943

See more details on using hashes here.

File details

Details for the file iflow_mcp_gustavo_meilus_logseq_api_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_gustavo_meilus_logseq_api_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 36.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_gustavo_meilus_logseq_api_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f3d0af0ca545a21c578986cd2659a1bcddd984c87081b5ab8975c014b836fab0
MD5 beda32d82ebb6e60470e333e02c8717f
BLAKE2b-256 cf2a77b5665a05060141beb2b44c57e3559dde38c876a30e02f8e12a60891389

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page