headless-obsidian-mcp
Headless HTTP MCP server for an Obsidian-flavored Markdown vault
Install
uv sync
Run from PyPI without installing into the current project:
uvx headless-obsidian-mcp run --host 127.0.0.1 --port 8000
Configure
export HEADLESS_OBSIDIAN_MCP_VAULT_ROOT="$HOME/path/to/vault"
export HEADLESS_OBSIDIAN_MCP_AUTH_TOKEN="change-me"
Optional OpenAI-compatible embeddings:
export HEADLESS_OBSIDIAN_MCP_OPENAI_API_KEY="sk-..."
export HEADLESS_OBSIDIAN_MCP_OPENAI_BASE_URL="https://openrouter.ai/api/v1"
export HEADLESS_OBSIDIAN_MCP_EMBEDDING_MODEL="text-embedding-3-small"
Run
uv run headless-obsidian-mcp run --host 127.0.0.1 --port 8000
MCP endpoint:
http://127.0.0.1:8000/mcp
Daemon commands:
uv run headless-obsidian-mcp start
uv run headless-obsidian-mcp status
uv run headless-obsidian-mcp logs -f
uv run headless-obsidian-mcp stop
Tools
vault_listvault_readvault_searchvault_create_notevault_update_notevault_move_pathvault_delete_pathvault_backlinksvault_reindex
Tool results return Markdown text for agents and structuredContent for programmatic clients.
The Markdown content is the compatibility path and should contain everything an agent needs. structuredContent is useful for clients that expose it, but some MCP clients still treat it as secondary metadata.
Development
uv sync --extra dev
uv run ruff format --check .
uv run ruff check .
uv run python -m unittest -v
Metadata
Release files for headless-obsidian-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| headless_obsidian_mcp-0.1.0.tar.gz | 78.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| headless_obsidian_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 123.7 kB
Release files / headless_obsidian_mcp-0.1.0.tar.gz
| Download URL | headless_obsidian_mcp-0.1.0.tar.gz |
|---|---|
| Size | 78.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2f0f95b9e67b4772dd4bba198cf7e065fb1eb168e4364aac39f4cb66819d02be
|
|
BLAKE2b-256 checksum How to use checksums |
d46e7b847c17953ada53be329903d71695ec1bd0c452c1a0e4c4b7257fe15562
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 2, 2026.
Transparency logRelease files / headless_obsidian_mcp-0.1.0-py3-none-any.whl
| Download URL | headless_obsidian_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 45.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ec3684e9f106b6df1e670862c4f59728d99247a094ec47960e4b48fe8d46c32d
|
|
BLAKE2b-256 checksum How to use checksums |
ffd90cadd175aacc663fc0a8611970e8fa981335e3e251906c09fab66b9aedb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 2, 2026.
Transparency log