Notemd MCP
About
A backend server for the Notemd Obsidian plugin, offering AI-powered text processing and knowledge management.
Details
- Author
- jacobinwwey
- Categories
- Productivity, Other, Knowledge Base, AI
- Tags
- #notes
Jump to
Method 1 Using Npx Recommended For Quick Start
This is the simplest way to start the server.npxwill temporarily download and run the package. This method now supportsstdio mode, meaning you will see the FastAPI server logs directly in your terminal.
# This single command will download the package and start the server. npx notemd-mcp-server
Method 2 Local Installation With Uv Or Pip
This method is for users who want to clone the repository and manage the files locally.
git clone https://github.com/your-repo/notemd-mcp.git cd notemd-mcp
- Usinguv(Recommended):
uv venv uv pip install -r requirements.txt
python -m venv .venv # Activate the environment (e.g., source .venv/bin/activate) pip install -r requirements.txt
To integrate Notemd MCP with your Mission Control Platform (MCP) setup, add the following to themcpServersobject in yoursettings.jsonfile:
{ "mcpServers": { "notemd-mcp": { "description": "Notemd MCP Server - AI-powered text processing and knowledge management for your Markdown files.", "command": "npx", "args": [ "-y", "notemd-mcp-server" ], "env": { "OPENAI_API_KEY": "your_openai_api_key_here", "DEEPSEEK_API_KEY": "your_deepseek_api_key_here" } } } }
The best way to explore and interact with the API is through the automatically generated documentation.
- Navigate tohttp://127.0.0.1:8000/docsin your web browser.
You will see a complete, interactive Swagger UI where you can view details for each endpoint, see request models, and even send test requests directly from your browser.
All configuration is handled in theconfig.pyfile. Here you can set API keys, file paths, and other settings.
Thenotemd_core.set_settingsfunction inmain.pyinitializes the core functionalities of the server using the following parameters, primarily sourced fromconfig.py:
- DEFAULT_PROVIDERS: A list of dictionaries, each defining an LLM provider with itsname,apiKey,baseUrl,model,temperature, and optionalapiVersion(for Azure OpenAI).
- ACTIVE_PROVIDER: The name of the LLM provider to be used by default for all operations.
- CHUNK_WORD_COUNT: The maximum number of words per chunk when processing content for wiki-linking.
- MAX_TOKENS: The maximum number of tokens allowed for LLM interactions.
- ENABLE_DUPLICATE_DETECTION: Boolean to enable/disable duplicate concept detection during wiki-linking.
These settings define the directory structure for your knowledge base and logs:
- VAULT_ROOT: The absolute path to your Obsidian vault or the root directory of your Markdown files.
- CONCEPT_NOTE_FOLDER: The subfolder withinVAULT_ROOTwhere generated concept notes will be stored.
- PROCESSED_FILE_FOLDER: The subfolder where processed Markdown files will be moved.
- CONCEPT_LOG_FOLDER: The subfolder for storing concept generation logs.
- CONCEPT_LOG_FILE_NAME: The name of the log file for concept generation.
Settings related to web research and summarization:
- TAVILY_API_KEY: Your API key for Tavily, ifSEARCH_PROVIDERis set to "tavily".
- SEARCH_PROVIDER: Specifies the web search engine to use ("tavily" or "duckduckgo").
- DDG_MAX_RESULTS: Maximum number of results to fetch from DuckDuckGo.
- DDG_FETCH_TIMEOUT: Timeout in seconds for DuckDuckGo searches.
- MAX_RESEARCH_CONTENT_TOKENS: Maximum tokens for content used in research.
- ENABLE_RESEARCH_IN_GENERATE_CONTENT: Boolean to enable/disable web research when generating content from a title.
- TAVILY_MAX_RESULTS: Maximum number of results to fetch from Tavily.
- TAVILY_SEARCH_DEPTH: Search depth for Tavily ("basic" or "advanced").
These settings control the retry mechanism for LLM API calls:
- ENABLE_STABLE_API_CALL: Boolean to enable/disable stable API calls with retries.
- API_CALL_INTERVAL: Interval in seconds between API call retries.
- API_CALL_MAX_RETRIES: Maximum number of retries for a failed API call.
These settings allow for fine-grained control over which LLM provider and model are used for specific tasks:
- ADD_LINKS_PROVIDER: The LLM provider to use for theprocess_content(add links) operation.
- RESEARCH_PROVIDER: The LLM provider to use for theresearch_summarizeoperation.
- GENERATE_TITLE_PROVIDER: The LLM provider to use for thegenerate_titleoperation.
- TRANSLATE_PROVIDER: Provider fortranslate_content.
- SUMMARIZE_TO_MERMAID_PROVIDER: Provider forsummarize_as_mermaid.
- EXTRACT_CONCEPTS_PROVIDER: Provider forextract_concepts.
- EXTRACT_ORIGINAL_TEXT_PROVIDER: Provider forextract_original_text.
- DIAGRAM_PROVIDER: Provider forgenerate_diagram.
- ADD_LINKS_MODEL: Specific model to use for adding links (overrides provider's default if set).
- RESEARCH_MODEL: Specific model to use for research (overrides provider's default if set).
- GENERATE_TITLE_MODEL: Specific model to use for title generation (overrides provider's default if set).
- TRANSLATE_MODEL,SUMMARIZE_TO_MERMAID_MODEL,EXTRACT_CONCEPTS_MODEL,EXTRACT_ORIGINAL_TEXT_MODEL,DIAGRAM_MODEL: Task-specific model overrides.
- REMOVE_CODE_FENCES_ON_ADD_LINKS: Boolean to remove code fences from content after adding links.
- LANGUAGE: The default language for content processing.
- AVAILABLE_LANGUAGES: A list of supported languages.
These settings allow you to enable and define custom prompts for various operations:
- ENABLE_GLOBAL_CUSTOM_PROMPTS: Boolean to enable/disable the use of custom prompts globally.
- CUSTOM_PROMPT_ADD_LINKS: Custom prompt string for theprocess_content(add links) operation.
- CUSTOM_PROMPT_GENERATE_TITLE: Custom prompt string for thegenerate_titleoperation.
- CUSTOM_PROMPT_RESEARCH_SUMMARIZE: Custom prompt string for theresearch_summarizeoperation.
- CUSTOM_PROMPT_TRANSLATE: Custom prompt string fortranslate_content.
- CUSTOM_PROMPT_SUMMARIZE_TO_MERMAID: Custom prompt string forsummarize_as_mermaid.
- CUSTOM_PROMPT_GENERATE_DIAGRAM: Custom prompt string forgenerate_diagram.
- CUSTOM_PROMPT_EXTRACT_CONCEPTS: Custom prompt string forextract_concepts.
- CUSTOM_PROMPT_EXTRACT_ORIGINAL_TEXT: Custom prompt string forextract_original_text.
Use this one-line command to bump one shared version and publish both npm and PyPI in sync:
npm run release:sync-publish -- 0.6.1 --dry-run
- The command updates npm version (package.json+package-lock.json), and syncs Python/server versions insetup.py,main.py, andcli.js.
- Make sure npm auth is ready (npm loginorNPM_TOKEN) and PyPI auth is ready (~/.pypircorTWINE_USERNAME+TWINE_PASSWORD).
- It builds Python artifacts and runstwine checkbefore upload.
This project is licensed under the MIT License. See theLICENSEfile for details.
Create notes, search, & think with your Fabric AI workspace
A Markdown-based second brain with a hosted MCP server. Your AI reads, searches, creates, and links your notes. Free tier included.
Centralized note store across AI clients: Claude, ChatGPT, Cursor, Codex, Windsurf. Save in one client, access in another instantly. Across devices — phone, desktop, everywhere. Cross-session context: 'catch me up' surfaces plans and findings from any prior session. AES-256-GCM encryption at rest, per-user key isolation. Soft delete with 30-day recovery window. Pin notes to exempt from cleanup and prioritize. Tag notes for categorization and filtering ('tag: auth'). Your mctx account is your identity — instant access from any AI tool.
An Obsidian plugin that embeds an MCP server to interact with your notes using AI.
Let AI read, search, and summarize your UpNote notes — and create new ones — right from your chat.
Prompt Buddy MCP exposes a public, searchable catalog of reusable AI skills.
Portable, cloud-hosted AI memory you own - structured memories, tasks, goals, and notes that work across Claude, ChatGPT, Gemini, and any MCP client.
Interact with your Anytype data through its API, enabling AI assistants to access your information.
MCP server for Apple Notes with semantic search and CRUD operations. Claude searches, reads, creates, updates, and manages your Apple Notes through natural language.
Notemd MCP (Mission Control Platform) Server
================================================== _ _ _ _ ___ __ __ ___ | \ | | ___ | |_| |___| | \/ |___ \ | \| |/ _ \| __| |___| | |\/| | | | | |\ | (_) | |_| |___ | | | |___| | |_| \_|\___/ \__|_|___| | | | |____/ ================================================== AI-Powered Backend for Your Knowledge Base ==================================================
Welcome to the Notemd MCP Server! This project provides a powerful, standalone backend server that exposes the core AI-powered text processing and knowledge management functionalities of theNotemd Obsidian Plugin.
Built with Python and FastAPI, this server allows you to offload heavy computational tasks from the client and provides a robust API to interact with your knowledge base programmatically.
- AI-Powered Content Enrichment: Automatically processes Markdown content to identify key concepts and create[[wiki-links]], building a deeply interconnected knowledge graph.
- Automated Documentation Generation: Generates comprehensive, structured documentation from a single title or keyword, optionally using web research for context.
- Integrated Web Research & Summarization: Performs web searches using Tavily or DuckDuckGo and uses an LLM to provide concise summaries on any topic.
- Diagram Workflows (Canonical + Compatibility Alias): Supportsgenerate_diagramas the canonical flow plusgenerate_experimental_diagramas a legacy compatibility alias aligned with modern NotEMD command surfaces.
- Translation & Extraction Utilities: Adds first-class translation, concept extraction, and verbatim original-text extraction operations for automation pipelines.
- Knowledge Graph Integrity: Includes endpoints to automatically update or remove backlinks when files are renamed or deleted, preventing broken links.
- Syntax Correction: Provides a utility to batch-fix common Mermaid.js and LaTeX syntax errors often found in LLM-generated content.
- Highly Configurable: All major features, API keys, file paths, and model parameters are easily managed in a centralconfig.pyfile.
- Multi-LLM Support: Compatible with any OpenAI-compliant API, including local models via LMStudio and Ollama, and cloud providers like DeepSeek, Anthropic, Google, and more.
- Interactive API Docs: Comes with automatically generated, interactive API documentation via Swagger UI.
The server is built on a simple and logical architecture:
- main.py(API Layer): Defines all API endpoints using theFastAPIframework. It handles incoming requests, validates data using Pydantic, and calls the appropriate functions from the core logic layer.
- notemd_core.py(Logic Layer): The engine of the application. It contains all the business logic for interacting with LLMs, processing text, performing web searches, and managing files within your knowledge base.
- config.py(User-Defined Space): The central configuration hub. This is where you define your file paths, API keys, and tune the behavior of the server to fit your needs.
- cli.js(MCP Bridge): A Node.js-based command-line interface that acts as a bridge to the Python server. It uses the@modelcontextprotocol/sdkto create a server that can be called by other tools. It starts the FastAPI server and then communicates with it via HTTP requests.
Follow these steps to get the Notemd MCP server up and running on your local machine.
- For Python execution: Python 3.8+ andpiporuv.
- For NPX execution: Node.js andnpx.
Choose the method that best fits your workflow.
Method 1: Usingnpx(Recommended for Quick Start)
This is the simplest way to start the server.npxwill temporarily download and run the package. This method now supportsstdio mode, meaning you will see the FastAPI server logs directly in your terminal.
# This single command will download the package and start the server. npx notemd-mcp-server
Method 2: Local Installation withuvorpip
This method is for users who want to clone the repository and manage the files locally.
git clone https://github.com/your-repo/notemd-mcp.git cd notemd-mcp
- Usinguv(Recommended):
uv venv uv pip install -r requirements.txt
python -m venv .venv # Activate the environment (e.g., source .venv/bin/activate) pip install -r requirements.txt
To integrate Notemd MCP with your Mission Control Platform (MCP) setup, add the following to themcpServersobject in yoursettings.jsonfile:
{ "mcpServers": { "notemd-mcp": { "description": "Notemd MCP Server - AI-powered text processing and knowledge management for your Markdown files.", "command": "npx", "args": [ "-y", "notemd-mcp-server" ], "env": { "OPENAI_API_KEY": "your_openai_api_key_here", "DEEPSEEK_API_KEY": "your_deepseek_api_key_here" } } } }
The best way to explore and interact with the API is through the automatically generated documentation.
- Navigate tohttp://127.0.0.1:8000/docsin your web browser.
You will see a complete, interactive Swagger UI where you can view details for each endpoint, see request models, and even send test requests directly from your browser.
All configuration is handled in theconfig.pyfile. Here you can set API keys, file paths, and other settings.
Thenotemd_core.set_settingsfunction inmain.pyinitializes the core functionalities of the server using the following parameters, primarily sourced fromconfig.py:
- DEFAULT_PROVIDERS: A list of dictionaries, each defining an LLM provider with itsname,apiKey,baseUrl,model,temperature, and optionalapiVersion(for Azure OpenAI).
- ACTIVE_PROVIDER: The name of the LLM provider to be used by default for all operations.
- CHUNK_WORD_COUNT: The maximum number of words per chunk when processing content for wiki-linking.
- MAX_TOKENS: The maximum number of tokens allowed for LLM interactions.
- ENABLE_DUPLICATE_DETECTION: Boolean to enable/disable duplicate concept detection during wiki-linking.
These settings define the directory structure for your knowledge base and logs:
- VAULT_ROOT: The absolute path to your Obsidian vault or the root directory of your Markdown files.
- CONCEPT_NOTE_FOLDER: The subfolder withinVAULT_ROOTwhere generated concept notes will be stored.
- PROCESSED_FILE_FOLDER: The subfolder where processed Markdown files will be moved.
- CONCEPT_LOG_FOLDER: The subfolder for storing concept generation logs.
- CONCEPT_LOG_FILE_NAME: The name of the log file for concept generation.
Settings related to web research and summarization:
- TAVILY_API_KEY: Your API key for Tavily, ifSEARCH_PROVIDERis set to "tavily".
- SEARCH_PROVIDER: Specifies the web search engine to use ("tavily" or "duckduckgo").
- DDG_MAX_RESULTS: Maximum number of results to fetch from DuckDuckGo.
- DDG_FETCH_TIMEOUT: Timeout in seconds for DuckDuckGo searches.
- MAX_RESEARCH_CONTENT_TOKENS: Maximum tokens for content used in research.
- ENABLE_RESEARCH_IN_GENERATE_CONTENT: Boolean to enable/disable web research when generating content from a title.
- TAVILY_MAX_RESULTS: Maximum number of results to fetch from Tavily.
- TAVILY_SEARCH_DEPTH: Search depth for Tavily ("basic" or "advanced").
These settings control the retry mechanism for LLM API calls:
- ENABLE_STABLE_API_CALL: Boolean to enable/disable stable API calls with retries.
- API_CALL_INTERVAL: Interval in seconds between API call retries.
- API_CALL_MAX_RETRIES: Maximum number of retries for a failed API call.
These settings allow for fine-grained control over which LLM provider and model are used for specific tasks:
- ADD_LINKS_PROVIDER: The LLM provider to use for theprocess_content(add links) operation.
- RESEARCH_PROVIDER: The LLM provider to use for theresearch_summarizeoperation.
- GENERATE_TITLE_PROVIDER: The LLM provider to use for thegenerate_titleoperation.
- TRANSLATE_PROVIDER: Provider fortranslate_content.
- SUMMARIZE_TO_MERMAID_PROVIDER: Provider forsummarize_as_mermaid.
- EXTRACT_CONCEPTS_PROVIDER: Provider forextract_concepts.
- EXTRACT_ORIGINAL_TEXT_PROVIDER: Provider forextract_original_text.
- DIAGRAM_PROVIDER: Provider forgenerate_diagram.
- ADD_LINKS_MODEL: Specific model to use for adding links (overrides provider's default if set).
- RESEARCH_MODEL: Specific model to use for research (overrides provider's default if set).
- GENERATE_TITLE_MODEL: Specific model to use for title generation (overrides provider's default if set).
- TRANSLATE_MODEL,SUMMARIZE_TO_MERMAID_MODEL,EXTRACT_CONCEPTS_MODEL,EXTRACT_ORIGINAL_TEXT_MODEL,DIAGRAM_MODEL: Task-specific model overrides.
- REMOVE_CODE_FENCES_ON_ADD_LINKS: Boolean to remove code fences from content after adding links.
- LANGUAGE: The default language for content processing.
- AVAILABLE_LANGUAGES: A list of supported languages.
These settings allow you to enable and define custom prompts for various operations:
- ENABLE_GLOBAL_CUSTOM_PROMPTS: Boolean to enable/disable the use of custom prompts globally.
- CUSTOM_PROMPT_ADD_LINKS: Custom prompt string for theprocess_content(add links) operation.
- CUSTOM_PROMPT_GENERATE_TITLE: Custom prompt string for thegenerate_titleoperation.
- CUSTOM_PROMPT_RESEARCH_SUMMARIZE: Custom prompt string for theresearch_summarizeoperation.
- CUSTOM_PROMPT_TRANSLATE: Custom prompt string fortranslate_content.
- CUSTOM_PROMPT_SUMMARIZE_TO_MERMAID: Custom prompt string forsummarize_as_mermaid.
- CUSTOM_PROMPT_GENERATE_DIAGRAM: Custom prompt string forgenerate_diagram.
- CUSTOM_PROMPT_EXTRACT_CONCEPTS: Custom prompt string forextract_concepts.
- CUSTOM_PROMPT_EXTRACT_ORIGINAL_TEXT: Custom prompt string forextract_original_text.
Use this one-line command to bump one shared version and publish both npm and PyPI in sync:
npm run release:sync-publish -- 0.6.1 --dry-run
- The command updates npm version (package.json+package-lock.json), and syncs Python/server versions insetup.py,main.py, andcli.js.
- Make sure npm auth is ready (npm loginorNPM_TOKEN) and PyPI auth is ready (~/.pypircorTWINE_USERNAME+TWINE_PASSWORD).
- It builds Python artifacts and runstwine checkbefore upload.
This project is licensed under the MIT License. See theLICENSEfile for details.
Create notes, search, & think with your Fabric AI workspace
A Markdown-based second brain with a hosted MCP server. Your AI reads, searches, creates, and links your notes. Free tier included.
Centralized note store across AI clients: Claude, ChatGPT, Cursor, Codex, Windsurf. Save in one client, access in another instantly. Across devices — phone, desktop, everywhere. Cross-session context: 'catch me up' surfaces plans and findings from any prior session. AES-256-GCM encryption at rest, per-user key isolation. Soft delete with 30-day recovery window. Pin notes to exempt from cleanup and prioritize. Tag notes for categorization and filtering ('tag: auth'). Your mctx account is your identity — instant access from any AI tool.
An Obsidian plugin that embeds an MCP server to interact with your notes using AI.
Let AI read, search, and summarize your UpNote notes — and create new ones — right from your chat.
Prompt Buddy MCP exposes a public, searchable catalog of reusable AI skills.
Portable, cloud-hosted AI memory you own - structured memories, tasks, goals, and notes that work across Claude, ChatGPT, Gemini, and any MCP client.
Interact with your Anytype data through its API, enabling AI assistants to access your information.
MCP server for Apple Notes with semantic search and CRUD operations. Claude searches, reads, creates, updates, and manages your Apple Notes through natural language.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





