Skip to content

OpaqueGlass/syplugin-anMCPServer

Repository files navigation

An MCP server for siyuan-note

δΈ­ζ–‡

A plugin that provides MCP service for Siyuan Note.

🌻 Features

  • Most tools support the exclude document function.
  • It includes certain input parameter validation and is not a direct API wrapper for SiYuan Note.
  • Ready to use once the plugin is installed and enabled on the desktop client; Docker and mobile platforms are not supported.

✨ Quick Start

  • Download from the marketplace or 1. unzip the package.zip in Release, 2. move the folder to workspace/data/plugins/, 3. and rename the folder to syplugin-anMCPServer;
  • Enable the plugin;
  • The plugin listens on port 16806 by default (Host: 127.0.0.1), please use http://127.0.0.1:16806/sse as the server access address;

⭐ If this is helpful to you, please consider giving it a star!

πŸ›  Supported Tools (Summary)

For detailed tools, supported excluded documents, and other notes, please refer to the Supported Tools section.

  • Document and block operations: create, read, update, and delete;
  • Database operations:
    • Create databases, add/delete/update database rows, add/delete database columns, and retrieve database structure information;
  • Attribute operations: create, read, update, and delete;
  • Flashcard operations: create flashcards from Markdown content, create flashcards by block ID, delete flashcards by block ID;
  • Template operations: retrieve existing templates, get raw template file content, preview template rendering results, preview Sprig rendering results, create or overwrite templates, render templates and insert at the beginning of a document, delete existing templates;
  • Notebook operations: list notebooks, rename notebooks;

❓ Frequently Asked Questions

  • Q1: How to use it in an MCP client? Please refer to the subsequent sections.

  • Q2: What are some common MCP clients?

  • Q3: Does the plugin support authentication?

    • Version v0.2.0 and above support authentication. After setting an authentication token in the plugin settings, you must set the authorization request header in your MCP client with the value Bearer YourToken.
  • Q4: Can it be used in Docker?

    • No. The plugin depends on a Node.js environment and does not support running on mobile devices or within Docker.

      To support SiYuan deployed in Docker, it is recommended to switch to other MCP projects. Some projects are listed here.

      Alternatively, you can modify the code to decouple this plugin from the SiYuan frontend.

  • Q5: How can I view the configured authorization code?

    • Authorization codes are saved as hashes. You can only modify them; you cannot view the currently active authorization code.
  • Q6: When connecting an MCP client, I get an error Invalid Host: x.x.x.x or something similar. How do I fix it?

    {
      "jsonrpc": "2.0",
      "error": {
        "code": -32000,
        "message": "Invalid Host: x.x.x.x"
      },
      "id": null
    }
    • By default, for security reasons, the service only handles requests from localhost. If you need to access it via a specific domain or connect to the MCP service in a non-local environment, you must manually declare it in Plugin Settings - Allowed Hosts.
    • Fill in this setting with the corresponding local network IP of the computer or the bound domain name.
    • Simply put: whatever IP or domain name you entered in the MCP client must also be entered here.
  • Q7: I only connected once, why does the settings page show a connection count greater than 1?

    • Delayed Statistics: Please click the refresh status button manually to get the latest results.
    • Connection Leak: Some MCP clients do not send a standard disconnect signal when closing, causing old connections to remain occupied in the background. When the function is restarted, the system establishes a new overlapping connection.
    • Multi-device Connection: Please confirm if other software is accessing the MCP service or the relevant port.
    • Still having issues? Please check the plugin logs or set an authorization code to prevent information leakage.
  • Q8: What is the "Vector Index Client Plugin - Query" tool?

    • This tool retrieves matching content blocks or answers questions directly via Knowledge Graph/Vector Search.
    • To use this tool, you need to download, enable, and correctly configure the syplugin-vectorIndexClient plugin.
    • Currently, this plugin only supports lightRAG-server.
  • Q9: How to better utilize the MCP services provided by the plugin?

    • Limit available tools for different tasks. For example, disable template-related tools when you don't need to manipulate templates.
    • The plugin provides Prompts suitable for certain task types. You need to use these related prompts in your MCP client; please refer to each client's documentation for specific operation methods.
  • Q10: Can I create an HTTPS-based service?

    • Yes. You need to place two files, server-key.pem and server-cert.pem, in the directory Workspace/data/storage/petal/syplugin-anMCPServer, then restart SiYuan Note. If the notification message when the MCP service starts ends with with HTTPS, it means it has been enabled.

    • Q10.1: MCP client shows net::ERR_CERT_AUTHORITY_INVALID

      • This is expected with self-signed certificates. Refer to the previous point: a) Delete the two certificate files and continue using HTTP; b) Replace them with certificates issued by an authoritative CA; c) Or add the self-signed certificate to your trust list (not recommended).
    • Q10.2: MCP client shows net::ERR_EMPTY_RESPONSE

      • Please check: if HTTPS is used, the client URL must start with https://. Otherwise, delete the two certificate files and continue using HTTP.
    • Q10.3: MCP client shows net::ERR_CERT_COMMON_NAME_INVALID

      • When generating the certificate, ensure the correctness of the CN (Common Name) field and add the subjectAltName (SAN) field. Using localhost as an example:
        openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes -keyout server-key.pem -out server-cert.pem -subj "/CN=localhost" -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"
        

How to Configure in an MCP Client?

Different MCP clients require different configuration methods. Please refer to the MCP client documentation.

MCP clients are continuously updated, so the configuration or usage instructions here may not be directly applicable and are for reference only.

Here, we assume: the plugin’s port is 16806, and the authorization token is abcdefg.

Modify the MCP application’s configuration, select the Streamable HTTP type, and configure the endpoint.

Clients Supporting Streamable HTTP

The following configuration uses Cherry Studio as an example. Different MCP clients may require different configuration formatsβ€”please refer to the MCP client documentation.

Plugin Without Authorization Token

  1. Type: Select Streamable HTTP (streamablehttp);
  2. URL: http://127.0.0.1:16806/mcp;
  3. Headers: Leave empty;

Plugin With Authorization Token

  1. Type: Select Streamable HTTP (streamablehttp);
  2. URL: http://127.0.0.1:16806/mcp;
  3. Headers: Authorization=Bearer abcedfg;

Clients Supporting Only Stdio

If the MCP client does not support HTTP-based communication and only supports stdio, a conversion method is needed.

Here, we use node.js + mcp-remote@next.

  1. Download Node.js: https://nodejs.org/en/download

  2. Install mcp-remote@next:

npm install -g mcp-remote@next  

The following configuration uses 5ire as an example. Different MCP clients may require different configuration formatsβ€”please refer to the MCP client documentation.

Plugin Without Authorization Token

Command:

npx mcp-remote@next http://127.0.0.1:16806/mcp  

Plugin With Authorization Token

Command:

npx mcp-remote@next http://127.0.0.1:16806/mcp --header Authorization:${AUTH_HEADER}  

Environment Variable:

Name: AUTH_HEADER
Value: Bearer abcdefg

πŸ”§ Supported Tools

Warning

Not all tools enforce strict excluded document validation. Before using excluded documents or after updating MCP tools, please read the tool support list carefully and consider disabling some tools.

Target R/W Destructive / Manual review available
Tool Function Excluded Doc Status / Notes
Documents & Blocks
Read Search using SQL ⚠️ Excluded documents are only checked if the result contains IDs and the number of returned items < 300
Get document Markdown by ID βœ… β€”
Get block Kramdown by ID βœ… β€”
List child documents of a document βœ… β€”
List child blocks βœ… β€”
Vector Retrieval Client Plugin - Query ❌ Requires downloading and properly configuring the syplugin-vectorIndexClient plugin
Excluded documents are not yet supported for this tool
Get backlinks by ID βœ… β€”
Write Append content to daily note βœ… β€”
Append content to specified document by ID βœ… domstring not supported
Create new document at specified position by ID βœ… domstring not supported
Insert child block (before / after) βœ… domstring not supported
Insert block at specified position βœ… domstring not supported
Yes / Yes Update block βœ… domstring not supported
Rename document βœ… β€”
Yes / No Move document βœ… β€”
Yes / No Move block βœ… ⚠️ Moving headings requires folding first, which will cause folding state to be lost
Yes / Yes Delete document βœ… β€”
Yes / Yes Delete block βœ… β€”
Database Only basic database operations are supported, see reference
Read Get database schema βœ… β€”
Get database view schema βœ… β€”
Query database results βœ… β€”
Get block ID where database is located βœ… β€”
Search Existing Databases βœ… β€”
Write Create database βœ… β€”
Add new database row βœ… β€”
Modify database row βœ… Rollup, template and relation column types are not supported
Yes / Yes Delete database row βœ… β€”
Add database column βœ… β€”
Yes / Yes Delete database column βœ… β€”
Attributes
Read Read attributes βœ… β€”
Write Modify attributes (add / delete / update) βœ… β€”
Flashcards
Write Create flashcard from Markdown content βœ… β€”
Create flashcard by block ID βœ… β€”
Yes / No Delete flashcard by block ID ❌ β€”
Templates
Read List existing templates ❌ β€”
Raw template file content ❌ β€”
Preview template rendering result ⚠️ Only kramdown is returned; checks may be bypassed via getBlock
Preview Sprig rendering result ❌ Does not involve user documents
Write Create or overwrite template ❌ Does not involve user documents
Render template and insert at document start ⚠️ Insertion is fixed at document start and cannot be specified
Since functions like getBlock can be used in templates, this tool may bypass checks to access excluded documents
Delete existing template ❌ β€”
Notebooks
Read List notebooks ❌ Does not involve user documents
Write Rename notebook βœ… β€”

πŸ™ References & Acknowledgements

Some dependencies are listed in package.json.

Developer/Project Project Description Citation
thuanpham582002/tabby-mcp-server Provides MCP service within the terminal software Tabby; MIT License Implementation method of MCP service
wilsons / Frostime System Prompt CC BY-SA 4.0 System Prompts etc. which locate at static/

About

A plugin that provide simple MCP service for Siyuan-note

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors