μ΄ μ μ₯μλ GitHub MCP(Mixed Computational Platform) μλ²μ κΈ°λ₯μ μνν΄λ³΄κΈ° μν ν μ€νΈ μ μ₯μμ λλ€. GitHub APIμ LLMμ νμ©νμ¬ λ€μν μμ€ κ΄λ¦¬ λ° μν¬νλ‘μ° κΈ°λ₯μ ν μ€νΈνκ³ νμ©νλ λ°©λ²μ 보μ¬μ€λλ€.
-
μ μ₯μ κ΄λ¦¬ ν΅μ¬ κΈ°λ₯
- μ μ₯μ λͺ©λ‘ μ‘°ν
- νΉμ μ μ₯μ λ΄μ© νμΈ
- μ΅κ·Ό μ»€λ° νμΈ
- νμΌ μμ± λ° μμ
- λΈλμΉ κ΄λ¦¬
-
νμΌ κ΄λ¦¬
- νμΌ μμ± λ° μμ
- νμΌ λ΄μ© μ‘°ν/λΆμ
- νμΌ μμ
- μ½λ λΆμ λ° κ°μ
-
λΈλμΉ κ΄λ¦¬
- λΈλμΉ μμ±
- λΈλμΉ κ° λ³ν©
- λΈλμΉ μ λ΅
-
μ΄μ λ° PR(Pull Request) κ΄λ¦¬
- μ΄μ μμ± λ° κ΄λ¦¬
- PR μμ± λ° λ³ν©
- μ½λ 리뷰 컀λ©νΈ μμ±
-
μν¬νλ‘μ° μλν
- GitHub Actions ꡬμ±
- μν¬νλ‘μ° μ€ν¬λ¦½νΈ μμ±
- λ°°ν¬ νμ΄νλΌμΈ μ€μ
LLMμ νμ©νμ¬ GitHub MCP κΈ°λ₯μ νμ©νλ λ°©λ²μ μμμ λλ€. μλλ κ° κΈ°λ₯λ³ ν μ€νΈ μμμ λλ€:
λ΄ GitHub κ³μ μ μ μ₯μ λͺ©λ‘μ 보μ¬μ£Όκ³ , κ° μ μ₯μμ μ£Όμ μ 보(μΈμ΄, λ³ μ, μ΅κ·Ό μ
λ°μ΄νΈ λ μ§)λ₯Ό μμ½ν΄μ€.
iworkist/test_github_mcp μ μ₯μμ νμΌ κ΅¬μ‘°λ₯Ό 보μ¬μ£Όκ³ , ν΅μ¬ νμΌλ€μ λ΄μ©κ³Ό λͺ©μ μ κ°λ΅ν μ€λͺ
ν΄μ€.
iworkist/test_github_mcp μ μ₯μμ μ΅κ·Ό 5κ° μ»€λ° λ΄μμ 보μ¬μ£Όκ³ , κ° μ»€λ°μμ μ΄λ€ λ³κ²½μ¬νμ΄ μμλμ§ μμ½ν΄μ€.
temp.txt νμΌμ λ§λ€μ΄μ€. ν
μ€νΈμ©μ΄μΌ.
iworkist/test_github_mcp μ μ₯μμμ λΆνμν temp.txt νμΌμ μμ ν΄μ€. μ»€λ° λ©μμ§λ "Remove temporary test file"λ‘ μ€μ ν΄μ€.
PythonμΌλ‘ μμ±λ μΉ μ€ν¬λνΌλ₯Ό λ§λ€μ΄μ λ΄ test_github_mcp μ μ₯μμ webscraper.py νμΌλ‘ μΆκ°ν΄μ€. BeautifulSoupκ³Ό requests λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ μ½λλ‘ μμ±ν΄μ€.
iworkist/test_github_mcp μ μ₯μμ helloworld.py νμΌμ μλ‘μ΄ ν¨μ goodbye()λ₯Ό μΆκ°ν΄μ€. μ΄ ν¨μλ "Goodbye, GitHub MCP World!"λ₯Ό λ°ννλλ‘ ν΄μ€.
νμ¬ helloworld.py νμΌμλ hello() ν¨μμ μλ‘ μΆκ°λ goodbye() ν¨μκ° μμΌλ©°, main() ν¨μμμλ λ ν¨μμ κ²°κ³Όλ₯Ό λͺ¨λ μΆλ ₯ν©λλ€:
def hello():
"""Simple function that returns a greeting message"""
return "Hello, GitHub MCP World!"
def goodbye():
"""Simple function that returns a farewell message"""
return "Goodbye, GitHub MCP World!"
def main():
"""Main function to print the greeting"""
message = hello()
print(message)
# Also print the goodbye message
farewell = goodbye()
print(farewell)iworkist/test_github_mcp μ μ₯μμ 'update-readme' λΈλμΉλ₯Ό μλ‘ λ§λ€μ΄μ€. μ΄ λΈλμΉλ main λΈλμΉλ₯Ό κΈ°μ€μΌλ‘ μμ±ν΄μ€.
iworkist/test_github_mcp μ μ₯μμ 'update-readme' λΈλμΉλ₯Ό main λΈλμΉλ‘ λ³ν©ν΄μ€. λ³ν© μ μΆ©λμ΄ μμΌλ©΄ μλμΌλ‘ ν΄κ²°νκ³ , λ³ν© μ»€λ° λ©μμ§λ "Merge updated README into main"μΌλ‘ μ€μ ν΄μ€.
iworkist/test_github_mcp μ μ₯μμμ 'development' λΈλμΉλ‘ λΆκΈ°ν λ€μ, config.json νμΌμ μμ ν΄μ debug λͺ¨λλ₯Ό trueλ‘ λ³κ²½ν΄μ€. λ³κ²½ ν ν΄λΉ λ΄μ©μ 컀λ°νκ³ 'development' λΈλμΉμ νΈμν΄μ€.
test_github_mcp μ μ₯μμ "API κΈ°λ₯ νμ₯ νμ" μ λͺ©μΌλ‘ μ μ΄μλ₯Ό μμ±ν΄μ€. μ΄μ λ΄μ©μλ νμ¬ API νΈνμ±κ³Ό νμ₯μ΄ νμν λΆλΆμ 3κ°μ§ νλͺ©μΌλ‘ μ 리ν΄μ€.
iworkist/test_github_mcp μ μ₯μμ μ΄μ #3μ μ½λ©νΈλ₯Ό μΆκ°ν΄μ€. μ΄μμ μ§νμνμ λν μ
λ°μ΄νΈ λ΄μ©μ μμ±νκ³ , μμΌλ‘ μΈμ PRμ λ³΄λΌ μ μλμ§ μΈκΈν΄μ€.
iworkist/test_github_mcp μ μ₯μμ μ PRμ λ§λ€μ΄μ€. 'update-readme' λΈλμΉμ λ³κ²½μ¬νμ main λΈλμΉλ‘ λ³ν©νλ PRμ΄λ©°. PR μ λͺ©μ "Update README.md to match current functionality"λ‘ νκ³ , μ€λͺ
μλ λ³κ²½μ¬ν μμ½κ³Ό ν
μ€νΈ λ°©λ²μ ν¬ν¨ν΄μ€.
iworkist/test_github_mcp μ μ₯μμ PR #3μ κ²ν νκ³ , μ½λ νμ§μ λν κ²ν μ½λ©νΈλ₯Ό μμ±ν΄μ€. νΉν μλ¬ μ²λ¦¬, λ³μλͺ
μ ν, μκ³ λ¦¬μ¦ μ±λ₯ μ΅μ ν λ± μΈ‘λ©΄μμ κ°μ μ μ μ§μ ν΄μ€.
iworkist/test_github_mcp μ μ₯μμ GitHub Actions μν¬νλ‘μ° νμΌμ μΆκ°ν΄μ€. Python μ½λμ λν κΈ°λ³Έμ μΈ ν
μ€νΈμ μ½λ νμ§μ νμΈνλ CI μν¬νλ‘μ°λ₯Ό λ§λ€μ΄μ€. main λΈλμΉμ PRμμ νΈλ¦¬κ±°λλλ‘ μ€μ ν΄μ€.
iworkist/test_github_mcp μ μ₯μμ μλ webscraper.py νμΌμ λν μν¬νλ‘μ° ν
μ€νΈ μ€ν¬λ¦½νΈλ₯Ό test_webscraper.py νμΌλ‘ λ§λ€μ΄μ€. νΉν μ΄ ν
μ€νΈκ° λ§€μΌ μλμΌλ‘ μ€νλλλ‘ GitHub Actions μ€μΌμ€ μν¬νλ‘μ°λ λ§λ€μ΄μ€.
iworkist/test_github_mcp μ μ₯μμ λ°°ν¬ μν¬νλ‘μ° μ€ν¬λ¦½νΈλ₯Ό λ§λ€μ΄μ€. main λΈλμΉμ μ νκ·Έκ° μμ±λ λ μλμΌλ‘ Python ν¨ν€μ§λ₯Ό λΉλνκ³ GitHub Releasesμ μ
λ‘λνλ μν¬νλ‘μ°λ₯Ό μμ±ν΄μ€.
iworkist/test_github_mcp μ μ₯μμμ λ€μ μμ
μ μμ°¨μ μΌλ‘ μνν΄μ€:
1. 'feature/data-analysis' λΈλμΉλ₯Ό μλ‘ λ§λ€κΈ°
2. κ°λ¨ν λ°μ΄ν° λΆμμ μν Python μ€ν¬λ¦½νΈ(data_analyzer.py)λ₯Ό μμ±
3. ν΄λΉ μ€ν¬λ¦½νΈμ λν ν
μ€νΈ νμΌλ μΆκ°
4. μ΄ λ³κ²½μ¬νμ PRλ‘ μμ±νμ¬ main λΈλμΉλ‘ λ³ν© μμ²νκΈ°
test_github_mcp μ μ₯μμ μ½λλ₯Ό λΆμνκ³ , μ½λ ꡬ쑰, μ£Όμ κΈ°λ₯, κ°μ κ°λ₯ν λΆλΆμ λν λ³΄κ³ μλ₯Ό μμ±ν΄μ€. νΉν Python μ½λ© κ΄νμ μ€μνκ³ μλμ§ νμΈνκ³ , κ°μ λ°©μμ μ΄μλ‘ λ±λ‘ν΄μ€.
- LLMκ³Ό λνν λ μ μμ ν둬ννΈλ₯Ό μ¬μ©νμ¬ GitHub κ΄λ ¨ μμ μ μνν μ μμ΅λλ€.
- LLMμ GitHub APIλ₯Ό ν΅ν΄ μμ²λ μμ μ μννκ³ κ²°κ³Όλ₯Ό λ³΄κ³ ν©λλ€.
- 볡μ‘ν μμ μ κ²½μ°, λ¨κ³λ³λ‘ λλ μ μννλ©΄ λ ν¨κ³Όμ μ λλ€.
μ§λ μ»€λ° λ΄μ:
μ΅κ·Ό μ»€λ° λ΄μ (2025-04-06):
1. "Add goodbye() function to helloworld.py"
- hello() ν¨μμ ν¨κ» goodbye() ν¨μ μΆκ°
- main() ν¨μκ° λ λ©μμ§λ₯Ό λͺ¨λ μΆλ ₯νλλ‘ μμ
2. "Remove temporary test file"
- temp.txt νμΌ μμ μλ (νμ¬ API μ νμΌλ‘ μΈν΄ μ§μ μμ λ λΆκ°λ₯)
3. "Add temp.txt for testing"
- ν
μ€νΈμ© μμ νμΌ μμ±
4. "READMEμ λͺ¨λ μν κ°λ₯ κΈ°λ₯μ λν μμ μΆκ°"
- README.md νμΌμ ν¬κ΄μ μΈ μ¬μ© μμ μΆκ°
- λΈλμΉ, PR, μλν μν¬νλ‘μ° κ΄λ ¨ μ€λͺ
μΆκ°
- κΆνμ΄ μλ μ μ₯μλ 보νΈλ λΈλμΉλ μ΄ λ°©μμΌλ‘ λ³κ²½νμ§ λͺ»ν μ μμ΅λλ€.
- λκ·λͺ¨ νλ‘μ νΈμ κ²½μ°, 볡μ‘ν μ½λλ² μ΄μ€λ₯Ό LLMμ΄ μ΄ν΄νλ λ° νκ³κ° μμ μ μμ΅λλ€.
- λ―Όκ°ν λ³κ²½μ¬νμ μ§μ κ²ν μμ€μΌλ‘ κ²ν ν ν μ μ©νλ κ²μ΄ μμ ν©λλ€.
- μν¬νλ‘μ° μλν μ GitHub κ³μ μ ν λΉλ μ¬μ©λμ νμΈνμΈμ.