๐ SourceSage MCP
๐ ๊ฐ์
SourceSage๋ ํ๋ก์ ํธ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์๋ฆ๋ค์ด ๋งํฌ๋ค์ด ํ์์ผ๋ก ์๊ฐํํ๋ MCP ์๋ฒ์ ๋๋ค. TypeScript๋ก ๊ตฌํ๋์ด ๊ณ ๊ธ ์ฌ์ฉ์ ์ ์ ๋ฐ ์ ์ฐํ ์ ์ธ ํจํด ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ํ ๊ฐ ํ์ผ์ ๋ด์ฉ์ ์๋์ผ๋ก ๋ฌธ์ํํ์ฌ ํ๋ก์ ํธ์ ์ ์ฒด์ ์ธ ๋ชจ์ต์ ํ์ ํ๊ธฐ ์ฝ๊ฒ ํฉ๋๋ค.
Related MCP server: Simple Files Vector Store Server
๐ฏ ์ฃผ์ ํน์ง
๐ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ ๋งํฌ ๋ค์ด ํ์์ผ๋ก ์ถ๋ ฅ
๐จ ์๋ฆ๋ค์ด ๋๋ฌด ๊ตฌ์กฐ ํ์ (ASCII art)
๐ ํ์ผ ๋ด์ฉ ์๋ ๋ฌธ์ํ(์ธ์ด๋ณ ๊ตฌ๋ฌธ ๊ฐ์กฐํ์ ํฌํจ)
๐ ์ ์ฐํ ์ ์ธ ํจํด(.SourceSageignore)
๐ ES2022 ๋ฐ Node16 ๋ชจ๋ ์์คํ ์ผ๋ก ์ต์ ๊ตฌํ
๐ซ ์๊ฒฉํ ์ ํ ๊ฒ์ฌ๋ก ๋์ ์ ๋ขฐ์ฑ
๐ ๏ธ ๊ธฐ์ ์คํ
๐ท TypeScript (ES2022 ํ๊ฒ)
๐ฆ Model Context Protocol SDK (v0.6.0)
๐ Node.js (Node16 ๋ชจ๋ ์์คํ )
๐ glob (v11.0.0) - ํ์ผ ํจํด ๋งค์นญ
๐ญ ignore (v6.0.2) - ์ ์ฐํ ํ์ผ ์ ์ธ ๊ธฐ๋ฅ
๐ ํ๋ก์ ํธ ๊ตฌ์กฐ
source-sage/
โโโ assets/
โ โโโ header.svg # ใใญใธใงใฏใใใใใผ็ปๅ
โโโ src/
โ โโโ index.ts # ใกใคใณใตใผใใผๅฎ่ฃ
โโโ build/ # ใณใณใใคใซๆธใฟJavaScriptใใกใคใซ
โโโ .gitignore # Gitใฎ้คๅค่จญๅฎ
โโโ .SourceSageignore # SourceSageๅบๆใฎ้คๅค่จญๅฎ
โโโ package.json # ใใญใธใงใฏใ่จญๅฎใปไพๅญ้ขไฟ
โโโ README.md # ใใญใธใงใฏใใใญใฅใกใณใ
โโโ tsconfig.json # TypeScript่จญๅฎโ๏ธ TypeScript ์ค์
{
"compilerOptions": {
"target": "ES2022", // ๆๆฐใฎECMAScriptๆฉ่ฝใๆดป็จ
"module": "Node16", // Node.js 16ใฎๆๆฐใขใธใฅใผใซใทในใใ ใไฝฟ็จ
"moduleResolution": "Node16",
"outDir": "./build", // ใณใณใใคใซๆธใฟใใกใคใซใฎๅบๅๅ
"rootDir": "./src", // ใฝใผในใใกใคใซใฎใซใผใใใฃใฌใฏใใช
"strict": true, // ๅณๆ ผใชๅใใงใใฏใๆๅนๅ
"esModuleInterop": true, // CommonJSใขใธใฅใผใซใจใฎ็ธไบ้็จๆงใ็ขบไฟ
"skipLibCheck": true, // ๅๅฎ็พฉใใกใคใซใฎใใงใใฏใในใญใใ
"forceConsistentCasingInFileNames": true // ใใกใคใซๅใฎๅคงๆๅญๅฐๆๅญใๅณๆ ผใซ็ฎก็
}
}โ๏ธ ์ค์น
npm์์ ์ค์น
npm install -g @sunwood-ai-labs/source-sage-mcp-server์์ค์์ ๋น๋
git clone https://github.com/sunwood-ai-labs/source-sage-mcp-server.git
cd source-sage-mcp-server
npm install
npm run build๐ง ์ฌ์ฉ๋ฒ
MCP ์๋ฒ๋ก ์ค์
MCP ๊ตฌ์ฑ ํ์ผ์ ๋ค์์ ์ถ๊ฐํฉ๋๋ค.
{
"mcpServers": {
"source-sage": {
"command": "node",
"args": ["C:/path/to/source-sage/build/index.js"]
}
}
}๐ฎ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ
generate_structure
ํ๋ก์ ํธ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๊ณ ํ์ผ ๋ด์ฉ์ ํฌํจํ ์์ธํ ๋ฌธ์๋ฅผ ๋ง๋ญ๋๋ค.
interface GenerateStructureArgs {
// ๆง้ ใ็ๆใใใใฃใฌใฏใใชใฎใใน๏ผๅฟ
้ ๏ผ
// ๅฟ
ใ็ตถๅฏพใในใงๆๅฎใใฆใใ ใใ
path: string;
// .SourceSageignoreใใกใคใซใฎใใน๏ผใชใใทใงใณ๏ผ
// ๆๅฎใใๅ ดๅใฏ็ตถๅฏพใในใงๆๅฎใใฆใใ ใใ
ignorePath?: string;
}์ฌ์ฉ ์
// ็ตถๅฏพใในใงใฎไฝฟ็จ๏ผๆจๅฅจ๏ผ
const result = await mcpClient.callTool('source-sage', 'generate_structure', {
path: 'C:/Users/your-name/path/to/your-project',
ignorePath: 'C:/Users/your-name/path/to/your-project/.SourceSageignore'
});์ถ๋ ฅ ์ํ
์ค์ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ์ถ๋ ฅ ์:
# ๐ Project: source-sage
## ๐ณ ใใฃใฌใฏใใชๆง้
OS: win32
Directory: C:\Users\your-name\source-sage
โโ source-sage/
โโ src/
โ โโ index.ts # MCPใตใผใใผใฎไธป่ฆใชๅฎ่ฃ
โโ package.json # ใใญใธใงใฏใใฎไพๅญ้ขไฟใจ่จญๅฎ
โโ README.md # ใใญใธใงใฏใใฎ่ฉณ็ดฐใช่ชฌๆ
โโ tsconfig.json # TypeScriptใฎใณใณใใคใซ่จญๅฎ์ด ์ถ๋ ฅ์๋ ๋ค์ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
๐ ํ๋ก์ ํธ ์ด๋ฆ ๋ฐ OS ์ ๋ณด
๐ณ ๋๋ ํ ๋ฆฌ ํธ๋ฆฌ ๊ตฌ์กฐ
๐ ๊ฐ ํ์ผ์ ์ญํ ๊ณผ ์ค๋ช
๐ .SourceSageignore๋ก ๋ถํ์ํ ํ์ผ ์ ์ธ
๐ .SourceSageignore ์ค์
ํ๋ก์ ํธ์ ๋ฃจํธ์ .SourceSageignore ํ์ผ์ ๋ง๋ค๊ณ ์ ์ธํ๋ ค๋ ํจํด์ ์ค๋ช
ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ ์ธ ํจํด์ด ํฌํจ๋ฉ๋๋ค.
# ใใผใธใงใณ็ฎก็ใทในใใ ้ข้ฃ
.git
.gitignore
# ใญใฃใใทใฅใใกใคใซ
__pycache__
.pytest_cache
**/__pycache__/**
*.pyc
# ใใซใใป้
ๅธ้ข้ฃ
build
dist
*.egg-info
# ไธๆใใกใคใซใปๅบๅ
output
output.md
test_output
.SourceSageAssets
.SourceSageAssetsDemo
# ใขใปใใ
*.png
*.svg
assets
# ใใฎไป
LICENSE
example
folder
package-lock.json๐ ์ถ๋ ฅ ์
# ๐ Project: my-project
## ๐ณ ใใฃใฌใฏใใชๆง้
OS: win32
Directory: C:\path\to\my-project
โโ my-project/
โโ src/
โ โโ index.ts
โ โโ utils/
โ โโ helper.ts
โโ package.json
## ๐ ใใกใคใซๅ
ๅฎน
### ๐ `src/index.ts`
**Type**: TypeScript Source File
๐จโ๐ป ๊ฐ๋ฐ์ ์ ๋ณด
์ฃผ์ ๊ตฌํ ์ธ๋ถ์ฌํญ
Server Class :
SourceSageServerํด๋์ค๊ฐ MCP ์๋ฒ์ ํต์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตTree Building :
buildTree๋ฉ์๋๊ฐ ์ฌ๊ท์ ์ผ๋ก ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ ์ ํ๊ฒ ์ ๋ ฌํ๊ณ ํ์
ํ์ผ ํํฐ๋ง :
ignoreํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฐํ ํ์ผ ์ ์ธ ์คํํ๋ถํ ๊ธฐ๋ณธ ์ ์ธ ํจํด ๋ฐ ๋ง์ถค ์ค์ ์ง์
Content Generation :
ํ์ผ ํ์์ ๋ฐ๋ผ ์ ์ ํ ๊ตฌ๋ฌธ ๊ฐ์กฐํ์
ํ์ผ ํ์์ ๋ฐ๋ผ ์ถ๊ฐ ์ ๋ณด ์ ๊ณต
Async Processing :
globํจํค์ง๋ฅผ ์ฌ์ฉํ ํจ์จ์ ์ธ ํ์ผ ์ค์บ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํตํ ๋๊ท๋ชจ ํ๋ก์ ํธ ์ง์
๊ฐ๋ฐ ํ๊ฒฝ ์ค์
# ใชใใธใใชใฎใฏใญใผใณ
git clone https://github.com/sunwood-ai-labs/source-sage-mcp-server.git
# ไพๅญ้ขไฟใฎใคใณในใใผใซ
npm install
# ้็บ็จใใซใ
npm run build
# ้็บใตใผใใผใฎ่ตทๅ
npm run inspector์ฌ์ฉ ๊ฐ๋ฅํ npm ์คํฌ๋ฆฝํธ
npm run build: TypeScript ์ปดํ์ผ ๋ฐ ์คํ ๊ถํ ์ค์ npm run prepare: ์ค์น์ ์๋ ๋น๋npm run watch: ๊ฐ๋ฐ ์ ์๋ ์ปดํ์ผnpm run inspector: MCP Inspector ์์
๐ค ๊ธฐ์ฌ
์ด ์ ์ฅ์๋ฅผ ํฌํฌ
์๋ก์ด ๋ธ๋์น ๋ง๋ค๊ธฐ (
git checkout -b feature/amazing-feature)๋ณ๊ฒฝ ์ปค๋ฐ (
git commit -m 'โจ feat: ็ด ๆดใใใๆฉ่ฝใ่ฟฝๅ ')๋ธ๋์น์ ํธ์ (
git push origin feature/amazing-feature)๋์ด์ค๊ธฐ ์์ฒญ ๋ง๋ค๊ธฐ
๐ ๋ผ์ด์ผ์ค
MIT License - ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ญ์์ค.
๐ ๊ด๋ จ ๋งํฌ
๐ฅ ์ ์ง๋ณด์
Sunwood AI Labs Team