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
license - permissive license
A
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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