Skip to main content
Glama

๐ŸŒŸ 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 ์„œ๋ฒ„๋กœ ์„ค์ •

  1. 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 ์‹œ์ž‘

๐Ÿค ๊ธฐ์—ฌ

  1. ์ด ์ €์žฅ์†Œ๋ฅผ ํฌํฌ

  2. ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ ( git checkout -b feature/amazing-feature )

  3. ๋ณ€๊ฒฝ ์ปค๋ฐ‹ ( git commit -m 'โœจ feat: ็ด ๆ™ดใ‚‰ใ—ใ„ๆฉŸ่ƒฝใ‚’่ฟฝๅŠ ' )

  4. ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ ( git push origin feature/amazing-feature )

  5. ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ ๋งŒ๋“ค๊ธฐ

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

MIT License - ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

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

๐Ÿ‘ฅ ์œ ์ง€๋ณด์ˆ˜

  • Sunwood AI Labs Team


Install Server
A
security โ€“ no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sunwood-ai-labs/source-sage-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server