Markdown Source Graph MCP
by sungreong
README.md
# Markdown Source Graph MCP
## ๐ ์น์ฌ์ดํธ์์ ๋ณด๊ธฐ
**์ฒ์ ๋ฐฉ๋ฌธํ๋ค๋ฉด ์ฌ๊ธฐ๋ถํฐ ์์ํ์ธ์:**
[ํ๋ก์ ํธ ์๊ฐยท๋๊ตฌ ๋ชฉ๋กยท์ค์น ์์ ์ด๊ธฐ โ](https://sungreong.github.io/markdown-source-graph-mcp/)

[Agent Docs for Markdown](https://marketplace.visualstudio.com/items?itemName=datanewbie-labs.markdown-agent-docs)์ด
๋ง๋ ๋ก์ปฌ Source Graph๋ฅผ Codex, Claude Code, Gemini CLI์์ ๊ฒ์ ๋๊ตฌ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋
Docker ๊ธฐ๋ฐ MCP ์๋ฒ์
๋๋ค.

Markdown ์๋ฌธ๊ณผ `.mps/source-graph.sqlite`๋ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง์ดํธ๋ฉ๋๋ค. ์๋ฒ๋ ๋ฌธ์๋ฅผ ์์ ํ์ง
์๊ณ , ๊ฒ์์ฉ ์บ์๋ง ๋ณ๋์ Docker ๋ณผ๋ฅจ์ ์ ์ฅํฉ๋๋ค.
## ๋จผ์ ์ฝ์ ๋ฌธ์
- ์ฒ์ ์ค์น๋ถํฐ Codex ๋ฑ๋ก๊น์ง: [GETTING_STARTED.md](GETTING_STARTED.md)
- Single, Hub, ์ค๋ฅ ๋ฐ ์ค์ E2E ๊ฒ์ฆ: [SCENARIOS.md](SCENARIOS.md)
- ์ ์ฅ์์์ ์์
ํ๋ ์์ด์ ํธ ์ง์นจ: [AGENTS.md](AGENTS.md)
- GitHub Pages ์๋ด ์ฌ์ดํธ ์ด์: [docs/github-pages.md](docs/github-pages.md)
## ์ ๊ณตํ๋ ๊ธฐ๋ฅ
| MCP ๋๊ตฌ | ์ฉ๋ |
|---|---|
| `search_markdown` | ์ ๋ชฉ๊ณผ ๋ณธ๋ฌธ์ ๊ฒ์ํ๊ณ ๊ฒฝ๋ก, excerpt, heading์ ๋ฐํ |
| `search_all_markdown` | ์ฌ๋ฌ ์ํฌ์คํ์ด์ค๋ฅผ ๋์์ ๊ฒ์ |
| `find_relevant_markdown_roots` | ์ง๋ฌธ์ ๊ฐ ๋ฃจํธ์ ๋์
ํด ์ ํฉํ ์ํฌ์คํ์ด์ค ํ๋ณด์ ๊ทผ๊ฑฐ ๋ฐํ |
| `read_markdown` | ๊ฒ์ ๊ฒฐ๊ณผ์ Markdown์ ์ง์ ํ ์ค ๋ฒ์๋ง ์ฝ๊ธฐ |
| `get_markdown_links` | ๋ฌธ์์ ๋งํฌ์ backlink๋ฅผ Source Graph์์ ์กฐํ |
| `list_markdown_roots` | ์ฐ๊ฒฐ๋ ์ํฌ์คํ์ด์ค์ ์ธ๋ฑ์ค ์ํ ํ์ธ |
| `get_source_graph_status` | Source Graph ์ข
๋ฅ, ๋ฌธ์ ์, ์บ์ ์ต์ ์ฑ ํ์ธ |
| `refresh_markdown_root` | ํ์ฌ `.mps` ์ธ๋ฑ์ค๋ฅผ MCP ๊ฒ์ ์บ์๋ก ๋ค์ ๊ฐ์ ธ์ค๊ธฐ |
๊ฒ์ํ ๋ Source Graph ํ์ผ์ด ๋ฐ๋ ๊ฒ์ด ๊ฐ์ง๋๋ฉด ๊ฒ์ ์บ์๋ ์๋์ผ๋ก ๊ฐฑ์ ๋ฉ๋๋ค.
## ์ ์ฒด ํ๋ฆ

๊ฐ ์ํฌ์คํ์ด์ค์ `Agent Docs for Markdown`์ด ์์ฒด `.mps/source-graph.sqlite`๋ฅผ ๋ง๋ญ๋๋ค.
์ฌ๋ฌ ๊ทธ๋ํ๋ฅผ ํ๋์ MCP์์ ์ฌ์ฉํ๋ ค๋ฉด ์๋์ **Hub** ๋๋ **Named Multi-root** ๋ชจ๋๋ก
ํ์ฉํ ์ํฌ์คํ์ด์ค๋ฅผ ์ค์ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ `root_id`๋ก ํ๋๋ฅผ ๊ณ ๋ฅด๊ฑฐ๋
`search_all_markdown`์ผ๋ก ์ฌ๋ฌ ๋ฃจํธ๋ฅผ ํจ๊ป ๊ฒ์ํ ์ ์์ต๋๋ค.
## ์ค๋น ์ฌํญ
- Docker Desktop ๋๋ Docker Engine + Compose
- VS Code
- [Agent Docs for Markdown ํ์ฅ](https://marketplace.visualstudio.com/items?itemName=datanewbie-labs.markdown-agent-docs)
- ๊ฒ์ํ Markdown ์ํฌ์คํ์ด์ค
## 1. Agent Docs ํ์ฅ ์ค์น์ Source Graph ์์ฑ
VS Code์์ Marketplace๋ฅผ ์ด๊ณ `Agent Docs for Markdown`์ ์ค์นํ๊ฑฐ๋ ๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค.
```powershell
code --install-extension datanewbie-labs.markdown-agent-docs
```
๊ทธ๋ค์ ๊ฒ์ํ Markdown ํด๋๋ฅผ VS Code์ ์ํฌ์คํ์ด์ค๋ก ์ฝ๋๋ค.
1. Activity Bar์์ **Agent Docs**๋ฅผ ์ฝ๋๋ค.
2. **Open Graph** ๋๋ ๋ช
๋ น ํ๋ ํธ์ `Agent Docs: Open Source Graph`๋ฅผ ์คํํฉ๋๋ค.
3. ์ฒ์์ด๋ผ๋ฉด `Agent Docs: Initialize Source Graph`๋ฅผ ์คํํฉ๋๋ค.
4. **Start Graph**๋ก ์ฒซ ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค.
5. ์ํฌ์คํ์ด์ค์ ์๋ ํ์ผ์ด ์๊ฒผ๋์ง ํ์ธํฉ๋๋ค.
```text
<markdown-workspace>/.mps/source-graph.sqlite
```
๋ถํ์ํ ํด๋๋ `.mps/.mpsignore`์์ ์ ์ธํ ์ ์์ต๋๋ค. ํ์ฅ์ Markdown ์ ์ฅ ์ Source Graph๋ฅผ
์๋ ๊ฐฑ์ ํ ์ ์์ผ๋ฉฐ, ์ด MCP๋ ๊ฐฑ์ ๋ SQLite์ ๋ณ๊ฒฝ ์๊ฐ์ ๊ฐ์งํด ๋ค์ ๊ฒ์ ์ ์ ์บ์๋ฅผ ๋ค์
๊ฐ์ ธ์ต๋๋ค.
## 2. ์ ์ฅ์ ํด๋ก
```powershell
git clone https://github.com/sungreong/markdown-source-graph-mcp.git
cd markdown-source-graph-mcp
```
## 3. ์ํฌ์คํ์ด์ค ๊ฒฝ๋ก ์ค์
`.env.example`์ `.env`๋ก ๋ณต์ฌํฉ๋๋ค.
```powershell
Copy-Item .env.example .env
```
`.env`์ ๊ฒฝ๋ก๋ฅผ ์ค์ Markdown ์ํฌ์คํ์ด์ค๋ก ๋ฐ๊ฟ๋๋ค. Windows์์๋ ์ญ์ฌ๋์๋ณด๋ค `/`๋ฅผ
๊ถ์ฅํฉ๋๋ค.
```dotenv
MARKDOWN_MCP_MODE=single
MARKDOWN_MOUNT_SOURCE=C:/Users/you/Documents/my-markdown-workspace
MARKDOWN_PUBLIC_PATH=C:/Users/you/Documents/my-markdown-workspace
MCP_PORT=8811
```
- `MARKDOWN_MCP_MODE`: ์ํฌ์คํ์ด์ค ํ๋๋ `single`, ์์ ํด๋ ํ๋์์ ๋์ ์ผ๋ก ๊ณ ๋ฅด๋ฉด `hub`
- `MARKDOWN_MOUNT_SOURCE`: Docker์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง์ดํธํ ์ค์ ํด๋
- `MARKDOWN_PUBLIC_PATH`: MCP ์๋ต์ ํ์ํ ํธ์คํธ ๊ฒฝ๋ก
- `MCP_PORT`: ๋ก์ปฌ MCP ํฌํธ
Single ๋ชจ๋์์๋ ์ํฌ์คํ์ด์ค ์์ฒด๋ฅผ ์ง์ ํด์ผ ํ๋ฉฐ `.mps` ํด๋๋ฅผ ์ง์ ์ง์ ํ๋ฉด ์ ๋ฉ๋๋ค.
Compose๋ฅผ ์คํํ๊ธฐ ์ ์ ๊ฒฝ๋ก์ ์ธ๋ฑ์ค๋ฅผ ๊ฒ์ฌํ ์ ์์ต๋๋ค.
```powershell
python scripts/check_workspace.py "C:/Users/you/Documents/my-markdown-workspace"
```
๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์ค๋ฅ ๋ฉ์์ง์ ํจ๊ป ์ข
๋ฃ ์ฝ๋ `2`๋ฅผ ๋ฐํํฉ๋๋ค.
## 4. Docker Compose ์คํ
```powershell
docker compose up -d --build
docker compose ps
```
์ํ๋ฅผ ํ์ธํฉ๋๋ค.
```powershell
Invoke-RestMethod http://127.0.0.1:8811/healthz
```
`status`๊ฐ `ok`์ด๊ณ `mps_index_present`๊ฐ `true`์ด๋ฉด ์ค๋น๊ฐ ๋๋ฌ์ต๋๋ค. ๊ฒฝ๋ก๊ฐ ์๋ชป๋๊ฑฐ๋
์ง์๋๋ `.mps`๊ฐ ์์ผ๋ฉด `/healthz`๋ HTTP 503์ ๋ฐํํ๊ณ ์ปจํ
์ด๋๋ `unhealthy`๋ก ํ์๋ฉ๋๋ค.
๋ธ๋ผ์ฐ์ ๋์๋ณด๋:
```text
http://127.0.0.1:8811/
```
## 5. ์น ๋์๋ณด๋์์ ํ์ธํ๊ณ ๊ฒ์ํ๊ธฐ

๋์๋ณด๋๋ ์ธ๋ถ ๋ฆฌ์์ค ์์ด ๋ก์ปฌ MCP ์๋ฒ์์๋ง ์ ๊ณต๋ฉ๋๋ค. ์ฐ๊ฒฐ๋ ์ํฌ์คํ์ด์ค์ ๋ฌธ์ ์,
์ธ๋ฑ์ค ์ํ, ์ต๊ทผ MCP ํธ์ถ์ ํ๋์ ํ์ธํ ์ ์๊ณ ์ํ๋ 10์ด๋ง๋ค ์๋ ๊ฐฑ์ ๋ฉ๋๋ค.
### Markdown ์ง์ ๊ฒ์

1. **์ง์ ๊ฒ์** ํญ์ ์ฝ๋๋ค.
2. ์ง๋ฌธ์ด๋ ํค์๋๋ฅผ ์
๋ ฅํฉ๋๋ค.
3. **์ ์ฒด ์ํฌ์คํ์ด์ค** ๋๋ ํน์ ์ํฌ์คํ์ด์ค๋ฅผ ์ ํํฉ๋๋ค.
4. **๊ฒ์**์ ๋๋ฅด๋ฉด ์ ๋ชฉ, ๊ด๋ จ ๋ณธ๋ฌธ, ํ์ผ ๊ฒฝ๋ก, ์ํฌ์คํ์ด์ค๊ฐ ํ์๋ฉ๋๋ค.
5. ๊ฒฐ๊ณผ๊ฐ ๋ง์ผ๋ฉด ํ๋ฉด ์๋ ํ์ด์ง ๋ฒํผ์ผ๋ก ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ํ์ํฉ๋๋ค.
๊ฒ์ ์ํ๋ฅผ URL์ ๋ด์ ๊ณต์ ํ๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ์ฆ๊ฒจ์ฐพ๊ธฐ๋ก ์ ์ฅํ ์๋ ์์ต๋๋ค.
```text
http://127.0.0.1:8811/?tab=search&q=์ง์%20์ฐ์ ์์&root_id=career-signal
```
### MCP ๋๊ตฌ ์ดํดํ๊ธฐ

**๋๊ตฌ ์๋ด** ํญ์๋ MCP๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ๋๊ตฌ์ ์ฉ๋, ์ฃผ์ ํ๋ผ๋ฏธํฐ๊ฐ ์ ๋ฆฌ๋์ด ์์ต๋๋ค.
์ฒ์ ์ฌ์ฉํ ๋๋ `list_markdown_roots` โ `find_relevant_markdown_roots` โ
`search_markdown` ๋๋ `search_all_markdown` ์์๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋ฉ๋๋ค.
### ํด๋ผ์ด์ธํธ๋ณ ํ๋กฌํํธ ๋ณต์ฌํ๊ธฐ

**ํ๋กฌํํธ** ํญ์์ Codex, Claude Code, Gemini CLI๋ฅผ ์ ํํ๋ฉด ์ค์น์ ์ฌ์ฉ ํ๋กฌํํธ๊ฐ ๋๋์ด
ํ์๋ฉ๋๋ค. **๋ณต์ฌ** ๋ฒํผ์ผ๋ก ์ํ๋ ํ๋กฌํํธ๋ฅผ ๋ณต์ฌํ ๋ค ํด๋น ํด๋ผ์ด์ธํธ์ ๊ทธ๋๋ก ๋ถ์ฌ ๋ฃ์ ์
์์ต๋๋ค. **์ฌ์ฉ ์ด๋ ฅ**๊ณผ **์ง๋ฌธ ํจํด** ํญ์ ๊ฒ์ยทํํฐยทํ์ด์ง ์ด๋์ ์ง์ํ๋ฏ๋ก ํธ์ถ์ด ๋ง์ด
์์ฌ๋ ํ์ํ ๊ธฐ๋ก๊ณผ ์์ฃผ ์ฐ๋ ํ๋ผ๋ฏธํฐ ์กฐํฉ์ ์ฐพ์ ์ ์์ต๋๋ค.

๋์๋ณด๋ ๊ธฐ๋ฅ๊ณผ ๋ก์ปฌ ๊ฐ์ฌ ๋ก๊ทธ ๋ณด์กด ์ค์ ์ [docs/dashboard.md](docs/dashboard.md)๋ฅผ ์ฐธ๊ณ ํ์ธ์.
MCP endpoint:
```text
http://127.0.0.1:8811/mcp
```
๋ก๊ทธ์ ์ข
๋ฃ ๋ช
๋ น:
```powershell
docker compose logs -f markdown-source-graph-mcp
docker compose down
```
## 6. AI ํด๋ผ์ด์ธํธ์ MCP ๋ฑ๋ก
ํด๋ผ์ด์ธํธ๋ณ ์์ธ ๊ฐ์ด๋์ ๋ณต์ฌ ๊ฐ๋ฅํ ์ค์ ํ์ผ์ ๋ถ๋ฆฌํด ๋์์ต๋๋ค.
| ํด๋ผ์ด์ธํธ | ๊ฐ์ด๋ | ์์ ์ค์ |
|---|---|---|
| Codex | [docs/clients/codex.md](docs/clients/codex.md) | [examples/clients/codex/config.toml](examples/clients/codex/config.toml) |
| Claude Code | [docs/clients/claude-code.md](docs/clients/claude-code.md) | [examples/clients/claude-code/.mcp.json](examples/clients/claude-code/.mcp.json) |
| Gemini CLI | [docs/clients/gemini-cli.md](docs/clients/gemini-cli.md) | [examples/clients/gemini-cli/settings.json](examples/clients/gemini-cli/settings.json) |
### Codex ๋น ๋ฅธ ๋ฑ๋ก
```powershell
codex mcp add markdownSourceGraph --url http://127.0.0.1:8811/mcp
codex mcp list
```
### Claude Code ๋น ๋ฅธ ๋ฑ๋ก
```powershell
claude mcp add --transport http markdown-source-graph --scope project http://127.0.0.1:8811/mcp
claude mcp list
```
### Gemini CLI ๋น ๋ฅธ ๋ฑ๋ก
```powershell
gemini mcp add --transport http --scope project markdown-source-graph http://127.0.0.1:8811/mcp
gemini mcp list
```
## 7. ์ฌ์ฉ ์์
์ฐ๊ฒฐํ ํด๋ผ์ด์ธํธ์์ ๋ค์๊ณผ ๊ฐ์ด ์์ฒญํฉ๋๋ค.
```text
markdown-source-graph MCP๋ฅผ ์ฌ์ฉํด "agent evaluation"์ ๊ฒ์ํด์ค.
๊ด๋ จ ๋ฌธ์ 5๊ฐ์ ๊ฒฝ๋ก, ์ ๋ชฉ, ๊ด๋ จ heading๊ณผ ํต์ฌ ๊ทผ๊ฑฐ๋ฅผ ์ ๋ฆฌํด์ค.
```
```text
"MCP tooling"๊ณผ ๊ฐ์ฅ ๊ด๋ จ ์๋ ๊ธฐ์ค ๋ฌธ์๋ฅผ ์ฐพ๊ณ ,
get_markdown_links๋ก ๋งํฌ์ backlink๋ฅผ ์กฐ์ฌํด์ ํจ๊ป ์ฝ์ด์ผ ํ ๋ฌธ์๋ฅผ ์๋ ค์ค.
```
```text
docs/architecture.md๋ฅผ ์์ ํ๊ธฐ ์ ์ ์ด ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๋ ๋ฌธ์์
์ด ๋ฌธ์๊ฐ ์ฐธ์กฐํ๋ ๋ฌธ์๋ฅผ ์ฐพ์ ๋ณ๊ฒฝ ์ํฅ ๋ฒ์๋ฅผ ์ ๋ฆฌํด์ค.
```
๋ ๋ง์ ๋ณต์ฌยท๋ถ์ฌ๋ฃ๊ธฐ ์์๋ [examples/prompts/markdown-search.md](examples/prompts/markdown-search.md)์ ์์ต๋๋ค.
์์ด์ ํธ๊ฐ ๊ฒฝ๋ก๋ฅผ ์ง๋ฌธํ๋ฉฐ ์ค์นํ๋๋ก ๋งก๊ธฐ๋ ํ๋กฌํํธ์ ํด๋ผ์ด์ธํธ๋ณ ์ค์นยท๋ค์ค ๊ฒ์ยท์ด์ ์ ๊ฒ
ํ๋กฌํํธ๋ [Prompt Pack](docs/prompt-pack.md)์ ๋ชจ์ ๋์์ต๋๋ค.
## ์ฌ๋ฌ ์ํฌ์คํ์ด์ค ์ฌ์ฉ
๊ฐ Markdown ์ํฌ์คํ์ด์ค์๋ ๊ฐ์์ `.mps` ์ธ๋ฑ์ค๊ฐ ์๊น๋๋ค. ์ํฌ์คํ์ด์ค๋ณ๋ก Compose ํ๋ก์ ํธ
์ด๋ฆ, ํ๊ฒฝ ํ์ผ, ํฌํธ๋ฅผ ๋ถ๋ฆฌํ๋ฉด ์ฌ๋ฌ MCP๋ฅผ ๋์์ ์คํํ ์ ์์ต๋๋ค.
```powershell
docker compose --project-name markdown-research --env-file .env.research up -d --build
docker compose --project-name markdown-wiki --env-file .env.wiki up -d --build
```
์์ธํ ์์๋ [docs/multiple-workspaces.md](docs/multiple-workspaces.md)๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๊ณตํต ์์ ํด๋๊ฐ ์๋ ์ํฌ์คํ์ด์ค๋ง ์ ํํ ๊ณจ๋ผ ์ฐ๊ฒฐํ๋ ค๋ฉด Named Multi-root ๋ชจ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด `C:/app/AI_MONITORING`๊ณผ `C:/app/interset_monitoring/my_carrer_signal`๋ง ๊ฐ๊ฐ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก
์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ค์ ๊ณผ ์ง๋ฌธ๋ณ ์๋ ์ ํ ํ๋ฆ์ [docs/multi-root.md](docs/multi-root.md)๋ฅผ ์ฐธ๊ณ ํ์ธ์.
### ํ๋์ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๊ฐ ์ํฌ์คํ์ด์ค ์ ํํ๊ธฐ
Hub ๋ชจ๋๋ ํ์ฉ๋ ์์ ํด๋ ํ๋๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง์ดํธํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋
`list_markdown_roots`๋ก ๋ฐ๊ฒฌ๋ `root_id`๋ฅผ ๋ฐ์ ๋ค, ๊ฒ์ํ ๋ ๊ทธ ๊ฐ์ ๋ฐ๊ฟ ์ฌ์ฉํฉ๋๋ค.
```dotenv
MARKDOWN_MCP_MODE=hub
MARKDOWN_MOUNT_SOURCE=C:/Users/you/Documents/ProjectCode
MARKDOWN_PUBLIC_PATH=C:/Users/you/Documents/ProjectCode
MARKDOWN_MCP_DISCOVERY_MAX_DEPTH=4
MCP_PORT=8811
```
```text
list_markdown_roots๋ฅผ ํธ์ถํด ์ฌ์ฉ ๊ฐ๋ฅํ ์ํฌ์คํ์ด์ค๋ฅผ ๋ณด์ฌ์ค.
๊ทธ์ค root_id="01_2026_EXP/markdown-pattern-studio"์์ "MCP"๋ฅผ ๊ฒ์ํด์ค.
```
์ปจํ
์ด๋ ์คํ ํ ํด๋ผ์ด์ธํธ๊ฐ ์์์ ํธ์คํธ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์๋ก ๋ง์ดํธํ๋ ๋ฐฉ์์ Docker์ ๋ณด์์
์ง์ํ์ง ์์ต๋๋ค. ๋ฐ๋์ ๋ฏธ๋ฆฌ ํ์ฉํ Hub ๊ฒฝ๋ก ์๋์ ์๋ `root_id`๋ง ์ ํํ ์ ์์ต๋๋ค.
์ค์ ๊ณผ ๋ณด์ ๋ฒ์๋ [docs/hub-mode.md](docs/hub-mode.md)๋ฅผ ์ฐธ๊ณ ํ์ธ์.
## ์ธ๋ฑ์ค ๊ฐฑ์ ๋ฐฉ์
1. VS Code์์ Markdown์ ์์ ํ๊ณ ์ ์ฅํฉ๋๋ค.
2. Agent Docs๊ฐ `.mps/source-graph.sqlite`๋ฅผ ๊ฐฑ์ ํฉ๋๋ค.
3. ๋ค์ `search_markdown` ํธ์ถ์์ MCP๊ฐ ๋ณ๊ฒฝ ์๊ฐ์ ๊ฐ์งํฉ๋๋ค.
4. MCP๊ฐ Docker ๋ณผ๋ฅจ์ ๊ฒ์ ์บ์๋ฅผ ์๋ ์ฌ์์ฑํฉ๋๋ค.
์ฆ์ ๊ฐ์ ๊ฐฑ์ ํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ์์ ๋ค์๊ณผ ๊ฐ์ด ์์ฒญํฉ๋๋ค.
```text
refresh_markdown_root๋ฅผ root_id="workspace"๋ก ์คํํด์ค.
```
์ด ์์
์ Markdown์ด๋ `.mps`๋ฅผ ์์ ํ์ง ์์ต๋๋ค.
## ํธํ์ฑ
๋ค์ Source Graph ์๋ณ์๋ฅผ ๋ชจ๋ ์ง์ํฉ๋๋ค.
- `markdown-agent-docs.source-graph`
- `markdown-pattern-studio.source-graph` โ ์ด์ Markdown Pattern Studio ์ธ๋ฑ์ค
์ง์ ์คํค๋ง ๋ฒ์ ์ ํ์ฌ `1`์
๋๋ค.
## ๋ณด์ ๋ชจ๋ธ
- ํฌํธ๋ `127.0.0.1`์๋ง ๊ณต๊ฐ๋ฉ๋๋ค.
- Markdown ์ํฌ์คํ์ด์ค๋ ์ปจํ
์ด๋์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
- ์๋ฒ์๋ Markdown ์์ฑยท์ญ์ ๋๊ตฌ๊ฐ ์์ต๋๋ค.
- ๋ณ๋์ ์ธ์ฆ์ ์์ผ๋ฏ๋ก ํฌํธ๋ฅผ `0.0.0.0`์ด๋ LAN์ ๊ณต๊ฐํ์ง ๋ง์ธ์.
- ๊ฒ์ ๊ฒฐ๊ณผ์ Markdown ๋ด์ฉ์ ์ฐ๊ฒฐ๋ AI ํด๋ผ์ด์ธํธ์ ์ปจํ
์คํธ๋ก ์ ๋ฌ๋ ์ ์์ต๋๋ค.
- MCP ํธ์ถ ๋ฉํ๋ฐ์ดํฐ์๋ ๊ฒ์์ด์ ํ์ผ ๊ฒฝ๋ก๊ฐ ํฌํจ๋ ์ ์์ผ๋ฉฐ ๋ก์ปฌ `/data/audit.sqlite3`์
์ ํ๋ ๊ฐ์๋ง ์ ์ฅ๋ฉ๋๋ค. ๋ณธ๋ฌธ๊ณผ ๊ฒ์ ๊ฒฐ๊ณผ ์ ๋ฌธ์ ์ ์ฅํ์ง ์์ต๋๋ค.
๋์๋ณด๋ ํญ๊ณผ ํธ์ถ ์ด๋ ฅยท๋ณด์กด ์ค์ ์ [docs/dashboard.md](docs/dashboard.md)๋ฅผ ์ฐธ๊ณ ํ์ธ์.
## ๋ฌธ์ ํด๊ฒฐ
### `waiting_for_index` ๋๋ `mps_index_present: false`
- `.env`์ `MARKDOWN_MOUNT_SOURCE`๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํฉ๋๋ค.
- `<์ํฌ์คํ์ด์ค>/.mps/source-graph.sqlite`๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
- Agent Docs์์ `Initialize Source Graph`์ `Start Graph`๋ฅผ ๋ค์ ์คํํฉ๋๋ค.
- Docker Desktop์์ ํด๋น ๋๋ผ์ด๋ธ๊ฐ ๊ณต์ ๊ฐ๋ฅํ์ง ํ์ธํฉ๋๋ค.
### Docker Compose๊ฐ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ง ๋ชปํจ
Windows ๊ฒฝ๋ก๋ ๋ค์์ฒ๋ผ ์์ฑํฉ๋๋ค.
```dotenv
MARKDOWN_MOUNT_SOURCE=C:/Users/you/Documents/notes
```
### MCP ํด๋ผ์ด์ธํธ์ ๋๊ตฌ๊ฐ ๋ณด์ด์ง ์์
1. `http://127.0.0.1:8811/healthz`๋ฅผ ํ์ธํฉ๋๋ค.
2. MCP URL ๋์ `/mcp`๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
3. ํด๋ผ์ด์ธํธ์ MCP ๋ชฉ๋ก ๋ช
๋ น์ ์คํํฉ๋๋ค.
4. ํด๋ผ์ด์ธํธ๋ฅผ ์์ ํ ์ฌ์์ํฉ๋๋ค.
### ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ ๋ด์ฉ์
- Agent Docs Source Graph๊ฐ ๋จผ์ ๊ฐฑ์ ๋๋์ง ํ์ธํฉ๋๋ค.
- `get_source_graph_status`์์ `source_updated_at`๊ณผ `stale`์ ํ์ธํฉ๋๋ค.
- `refresh_markdown_root`๋ฅผ ์คํํฉ๋๋ค.
## ๊ฐ๋ฐ
```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements-dev.txt
pytest
```
Docker ์ค์ ๊ฒ์ฆ:
```powershell
docker compose config
docker compose build
```
## ํ๋ก์ ํธ ๊ตฌ์กฐ
```text
.
โโ src/markdown_source_graph_mcp/ # MCP ์๋ฒ์ Source Graph ์๋น์ค
โโ tests/ # SQLite ํธํ์ฑ๊ณผ ๊ฒฝ๋ก ์์ ์ฑ ํ
์คํธ
โโ docs/clients/ # Codex, Claude Code, Gemini CLI ๊ฐ์ด๋
โโ docs/dashboard.md # ์ํ ํ๋ฉด๊ณผ MCP ํธ์ถ ๊ฐ์ฌ ์ด๋ ฅ
โโ docs/prompt-pack.md # ์ค์นยท์ฌ์ฉ ํ๋กฌํํธ ์์ธ
โโ docs/github-pages.md # ๊ณต๊ฐ ํ๋ก์ ํธ ์๋ด ์ฌ์ดํธ์ ๋ฐฐํฌ ๋ฐฉ์
โโ examples/clients/ # ํด๋ผ์ด์ธํธ๋ณ ์ค์ ํ์ผ
โโ examples/prompts/setup/ # ๊ณตํตยทํด๋ผ์ด์ธํธ๋ณ ์ค์น ํ๋กฌํํธ
โโ examples/prompts/usage/ # ๋ค์ค ๊ฒ์ยท์กฐ์ฌยท์ด์ ํ๋กฌํํธ
โโ scripts/check_workspace.py # Compose ์คํ ์ ๊ฒฝ๋กยท์ธ๋ฑ์ค ๊ฒ์ฌ
โโ assets/ # README ๋ํ ์ด๋ฏธ์ง์ ์ค์นยท๊ฒ์ ํ๋ฆ๋
โโ AGENTS.md # ์์
์์ด์ ํธ์ฉ ํ์ ์ง์นจ
โโ GETTING_STARTED.md # ์ค์น๋ถํฐ ์ฒซ ์ฌ์ฉ๊น์ง
โโ SCENARIOS.md # ์คํยท์ค๋ฅยทE2E ๊ฒ์ฆ ์๋๋ฆฌ์ค
โโ LICENSE # MIT License
โโ index.html # GitHub Pages ํ๋ก์ ํธ ์๊ฐ ์ฌ์ดํธ
โโ site/ # ์๊ฐ ์ฌ์ดํธ ์คํ์ผ๊ณผ ๋์
โโ Dockerfile
โโ docker-compose.yml
โโ docker-compose.multi.yml # ์๋ก ๋จ์ด์ง ์ฌ๋ฌ ๊ฒฝ๋ก์ ๋ช
์์ ๋ง์ดํธ
โโ .env.example # Single ๋ชจ๋ ์์
โโ .env.hub.example # Hub ๋ชจ๋ ์์
โโ .env.multi.example # Named Multi-root ์์
```
## ๊ด๋ จ ๋ฌธ์
- [Agent Docs for Markdown Marketplace](https://marketplace.visualstudio.com/items?itemName=datanewbie-labs.markdown-agent-docs)
- [Codex MCP ์ค์ ์ฐธ๊ณ ](https://developers.openai.com/learn/docs-mcp)
- [Claude Code MCP ๋ฌธ์](https://code.claude.com/docs/en/mcp)
- [Gemini CLI MCP ์๋ฒ ๋ฌธ์](https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md)
## ๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ [MIT License](LICENSE)๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues