mcp_js

huntkil/mcp_js

3.2

If you are the rightful owner of mcp_js and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The Markdown MCP Server is a Model Context Protocol server designed to manage Obsidian Vaults and Markdown files, providing access to all Obsidian/Markdown functionalities via an HTTP API.

Markdown MCP Server

Obsidian Vault์™€ Markdown ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๋Š” Model Context Protocol (MCP) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. HTTP API๋ฅผ ํ†ตํ•ด ๋ชจ๋“  Obsidian/Markdown ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿš€ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ“Š Obsidian Vault ๊ด€๋ฆฌ

  • Vault ํ†ต๊ณ„ ์ƒ์„ฑ: ์ „์ฒด ๋…ธํŠธ ์ˆ˜, ํฌ๊ธฐ, ๋‹จ์–ด ์ˆ˜, ๋งํฌ ์ˆ˜ ๋“ฑ
  • ๋…ธํŠธ ๋ชฉ๋ก ์กฐํšŒ: ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„, ์ตœ๊ทผ ์ˆ˜์ •/์ƒ์„ฑ ์ˆœ ์ •๋ ฌ
  • ๋งํฌ ์ถ”์ถœ: ๋‚ด๋ถ€ ๋งํฌ, ์™ธ๋ถ€ ๋งํฌ, ์ž„๋ฒ ๋“œ, ํƒœ๊ทธ ์ถ”์ถœ
  • ๋ฐฑ๋งํฌ ์ฐพ๊ธฐ: ํŠน์ • ๋…ธํŠธ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ ๋…ธํŠธ๋“ค
  • ํƒœ๊ทธ ๊ด€๋ฆฌ: ๋ชจ๋“  ํƒœ๊ทธ ๋ชฉ๋ก, ํƒœ๊ทธ๋ณ„ ๋…ธํŠธ ๊ฒ€์ƒ‰

๐Ÿ“ ๋ฐ์ผ๋ฆฌ ๋…ธํŠธ & ํ…œํ”Œ๋ฆฟ

  • ๋ฐ์ผ๋ฆฌ ๋…ธํŠธ ์ƒ์„ฑ: ๋‚ ์งœ๋ณ„ ์ž๋™ ๋…ธํŠธ ์ƒ์„ฑ
  • ํ…œํ”Œ๋ฆฟ ๊ด€๋ฆฌ: ์ƒ์„ฑ, ์กฐํšŒ, ๋ชฉ๋ก, ์‚ญ์ œ
  • ๋ฐ์ผ๋ฆฌ ๋…ธํŠธ ๋ชฉ๋ก: ๊ธฐ๊ฐ„๋ณ„ ๋ฐ์ผ๋ฆฌ ๋…ธํŠธ ์กฐํšŒ

๐Ÿ” ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰

  • Frontmatter ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•„๋“œ๋กœ ๋…ธํŠธ ๊ฒ€์ƒ‰
  • ๋‚ด์šฉ ๊ฒ€์ƒ‰: ํ…์ŠคํŠธ, ํ‚ค์›Œ๋“œ, ์ •๊ทœ์‹ ๊ฒ€์ƒ‰
  • ํŒŒ์ผ๋ช… ํŒจํ„ด ๊ฒ€์ƒ‰: ์™€์ผ๋“œ์นด๋“œ, ์ •๊ทœ์‹ ์ง€์›

๐Ÿ“‹ TODO ๊ด€๋ฆฌ

  • TODO ์ถ”์ถœ: ๋ชจ๋“  ๋…ธํŠธ์—์„œ TODO ์ž‘์—… ์ถ”์ถœ
  • TODO ์ถ”๊ฐ€: ํŠน์ • ๋…ธํŠธ์— TODO ์ž‘์—… ์ถ”๊ฐ€
  • TODO ๊ฒ€์ƒ‰: ์ƒํƒœ๋ณ„, ์šฐ์„ ์ˆœ์œ„๋ณ„ ๊ฒ€์ƒ‰

๐Ÿ“ ํŒŒ์ผ ๊ด€๋ฆฌ

  • ํŒŒ์ผ ๋ชฉ๋ก: ๋””๋ ‰ํ† ๋ฆฌ๋ณ„, ์žฌ๊ท€์  ๊ฒ€์ƒ‰
  • ํŒŒ์ผ ํ†ต๊ณ„: ํฌ๊ธฐ, ๋‹จ์–ด ์ˆ˜, ๋งํฌ ์ˆ˜ ๋“ฑ
  • ์ฒจ๋ถ€ํŒŒ์ผ ๊ด€๋ฆฌ: ์ด๋ฏธ์ง€, PDF ๋“ฑ ์ฒจ๋ถ€ํŒŒ์ผ ๋ชฉ๋ก

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

  • Node.js: ์„œ๋ฒ„ ๋Ÿฐํƒ€์ž„
  • Express.js: HTTP ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ
  • ObsidianManager: Obsidian Vault ๊ด€๋ฆฌ ํด๋ž˜์Šค
  • MarkdownManager: Markdown ํŒŒ์ผ ๊ด€๋ฆฌ ํด๋ž˜์Šค
  • gray-matter: Frontmatter ํŒŒ์‹ฑ
  • glob: ํŒŒ์ผ ํŒจํ„ด ๋งค์นญ

๐Ÿ“ฆ ์„ค์น˜ ๋ฐ ์‹คํ–‰

1. ์˜์กด์„ฑ ์„ค์น˜

npm install

2. ์„œ๋ฒ„ ์‹คํ–‰

npm start

์„œ๋ฒ„๊ฐ€ http://localhost:8080์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๐ŸŒ API ์—”๋“œํฌ์ธํŠธ

๊ธฐ๋ณธ ์ •๋ณด

  • GET / - ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ
  • GET /tools - ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํˆด ๋ชฉ๋ก

Obsidian ํˆด

  • POST /tools/obsidian/getAllTags - ๋ชจ๋“  ํƒœ๊ทธ ๋ชฉ๋ก
  • POST /tools/obsidian/generateVaultStats - Vault ํ†ต๊ณ„
  • POST /tools/obsidian/getRecentlyModifiedNotes - ์ตœ๊ทผ ์ˆ˜์ •๋œ ๋…ธํŠธ
  • POST /tools/obsidian/getRecentlyCreatedNotes - ์ตœ๊ทผ ์ƒ์„ฑ๋œ ๋…ธํŠธ
  • POST /tools/obsidian/extractTodos - TODO ์ž‘์—… ์ถ”์ถœ
  • POST /tools/obsidian/extractLinks - ๋…ธํŠธ์—์„œ ๋งํฌ ์ถ”์ถœ
  • POST /tools/obsidian/createDailyNote - ๋ฐ์ผ๋ฆฌ ๋…ธํŠธ ์ƒ์„ฑ

Markdown ํˆด

  • POST /tools/markdown/listFiles - ํŒŒ์ผ ๋ชฉ๋ก ์กฐํšŒ
  • POST /tools/markdown/searchContent - ๋‚ด์šฉ ๊ฒ€์ƒ‰
  • POST /tools/markdown/manageFrontmatter - Frontmatter ๊ด€๋ฆฌ

๐Ÿ“– ์‚ฌ์šฉ ์˜ˆ์ œ

1. ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ

curl http://localhost:8080

2. Vault ํ†ต๊ณ„ ๊ฐ€์ ธ์˜ค๊ธฐ

curl -X POST http://localhost:8080/tools/obsidian/generateVaultStats \
  -H "Content-Type: application/json" \
  -d '{}'

3. ์ตœ๊ทผ ์ˆ˜์ •๋œ ๋…ธํŠธ ๋ชฉ๋ก

curl -X POST http://localhost:8080/tools/obsidian/getRecentlyModifiedNotes \
  -H "Content-Type: application/json" \
  -d '{"days": 7, "limit": 10}'

4. ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ์˜ ํŒŒ์ผ ๋ชฉ๋ก

curl -X POST http://localhost:8080/tools/markdown/listFiles \
  -H "Content-Type: application/json" \
  -d '{"directory": "Health", "recursive": true}'

5. ๋‚ด์šฉ ๊ฒ€์ƒ‰

curl -X POST http://localhost:8080/tools/markdown/searchContent \
  -H "Content-Type: application/json" \
  -d '{"query": "๋งˆ๋ผํ†ค", "caseSensitive": false}'

6. TODO ์ž‘์—… ์ถ”์ถœ

curl -X POST http://localhost:8080/tools/obsidian/extractTodos \
  -H "Content-Type: application/json" \
  -d '{"status": "pending"}'

๐Ÿ”ง ์„ค์ •

ํ™˜๊ฒฝ ๋ณ€์ˆ˜

  • BASE_PATH: Obsidian Vault ๊ฒฝ๋กœ (๊ธฐ๋ณธ๊ฐ’: /Users/gukho/Library/Mobile Documents/iCloud~md~obsidian/Documents/My Card)
  • PORT: ์„œ๋ฒ„ ํฌํŠธ (๊ธฐ๋ณธ๊ฐ’: 8080)

์˜ˆ์‹œ

export BASE_PATH="/path/to/your/obsidian/vault"
export PORT=3000
npm start

๐Ÿ“Š ํ˜„์žฌ Vault ํ†ต๊ณ„

  • ์ด ๋…ธํŠธ ์ˆ˜: 332๊ฐœ
  • ์ด ํฌ๊ธฐ: 1.5MB
  • ์ด ๋‹จ์–ด ์ˆ˜: 172,203๊ฐœ
  • ์ด ๋งํฌ ์ˆ˜: 1,958๊ฐœ
  • ์ด ํƒœ๊ทธ ์ˆ˜: 1,006๊ฐœ

์ฃผ์š” ์นดํ…Œ๊ณ ๋ฆฌ

  • Health (๊ฑด๊ฐ•): 30๊ฐœ ๋…ธํŠธ
  • 9. Diary (์ผ๊ธฐ): 60๊ฐœ ๋…ธํŠธ
  • Projects: 16๊ฐœ ๋…ธํŠธ
  • 3. Study/Data Science: 25๊ฐœ ๋…ธํŠธ

๐Ÿ—๏ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

mcp_js/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.js          # ์„œ๋ฒ„ ์ง„์ž…์ 
โ”‚   โ”œโ”€โ”€ server.js         # Express.js HTTP ์„œ๋ฒ„
โ”‚   โ”œโ”€โ”€ ObsidianManager.js # Obsidian Vault ๊ด€๋ฆฌ
โ”‚   โ””โ”€โ”€ MarkdownManager.js # Markdown ํŒŒ์ผ ๊ด€๋ฆฌ
โ”œโ”€โ”€ tests/                # ํ…Œ์ŠคํŠธ ํŒŒ์ผ๋“ค
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ README.md

๐Ÿงช ํ…Œ์ŠคํŠธ

npm test

๐Ÿ“ ๊ฐœ๋ฐœ ํžˆ์Šคํ† ๋ฆฌ

v1.0.0 (2025-07-09)

  • โœ… MCP SDK ๊ธฐ๋ฐ˜ ์„œ๋ฒ„ ๊ตฌํ˜„
  • โœ… HTTP ๊ธฐ๋ฐ˜ ์„œ๋ฒ„๋กœ ์ „ํ™˜ (Express.js)
  • โœ… ๋ชจ๋“  Obsidian/Markdown ๊ธฐ๋Šฅ API ๋…ธ์ถœ
  • โœ… ์‹ค์‹œ๊ฐ„ Vault ํ†ต๊ณ„ ๋ฐ ๋…ธํŠธ ๊ด€๋ฆฌ
  • โœ… TODO ๊ด€๋ฆฌ, ๋ฐ์ผ๋ฆฌ ๋…ธํŠธ, ํ…œํ”Œ๋ฆฟ ๊ธฐ๋Šฅ
  • โœ… ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰ ๋ฐ Frontmatter ๊ด€๋ฆฌ

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ ๋ผ์ด์„ ์Šค

MIT License

๐Ÿ”— ๊ด€๋ จ ๋งํฌ