MCP 서버,
손으로 만들지 마세요.
문서만 주세요. 코드는 Forge가 만듭니다.
안 되는 건 안 된다고 말해요.
자연어 템플릿과 OpenAPI로 MCP 서버 소스를 만드는 로컬 도구예요. 외부에 등록하지도, 알아서 배포하지도 않아요. Python 3.11+만 있으면 돼요.
git clone https://github.com/aldol2678/aldol-mcp-forge.gitForge는 내 컴퓨터에서 돌아가는 로컬 도구예요. 이 웹사이트에서 MCP 서버가 돌아가지는 않아요. 소스는 GitHub에서 받고, 로컬에서 실행하세요.
빠른 시작
세 단계면 돼요. 클론하고, 실행하고, 예제를 돌려보세요.
클론
공개 저장소를 그대로 받아요.
git clone https://github.com/aldol2678/aldol-mcp-forge.git
cd aldol-mcp-forge실행
Forge를 실행하고, 테스트를 돌려요.
python3 forge.py
python3 -m unittest discover -s tests -v첫 생성
OpenAPI 데모로 첫 MCP 서버를 만들어요.
python3 examples/run_openapi_demo.py실제 클라이언트에서 Forge 자체를 stdio 서버로 쓰려면, MCP 설정에 아래를 등록하세요. 경로는 내 환경의 절대 경로로 바꿔야 해요.
{
"mcpServers": {
"aldol-mcp-forge": {
"command": "python3",
"args": ["/ABSOLUTE/PATH/aldol-mcp-forge/forge.py"]
}
}
}지금 상태는 이래요
숫자는 확인된 것만 적었어요. 안 된 건 안 됐다고 적어요.
CI · success
공식 GitHub Actions run 39315805343, 두 작업 모두 success예요. 공개 저장소 aldol2678/aldol-mcp-forge, main 커밋 769bd658.
오프라인 회귀 · 25 통과 / 1 건너뜀
26개 중 25개 통과, 1개는 건너뛰었어요. (Python 3.12, Ubuntu 24.04) OK (skipped=1)은 26개 전부 통과와 달라요.
공식 SDK 2.0.0 · 2/2 통과
mcp==2.0.0 기준, 예제 두 개가 인메모리·stdio 모두 통과했어요. aldol-openapi-pets, aldol-game-html-audit. 테스트할 땐 외부 API 요청을 꺼뒀어요.
아직 안 되는 것도 있어요
ChatGPT/Claude 실제 연결, 낯선 MCP 코드 격리, 실제 운영 API 호출, 완전한 보안 샌드박스는 아직 미검증이에요.
하는 일
세 가지 원칙으로만 움직여요.
OpenAPI → MCP GET 도구
OpenAPI 3.0/3.1 JSON을 붙여 넣으면, operationId마다 공식 Python MCP SDK v2용 @app.tool() 함수를 만들어요. GET만, 최대 12개. 문자열·정수·불리언만 받아요. POST/PUT/PATCH/DELETE는 만들지 않아요.
안전한 기본 모드
기본은 아무것도 보내지 않아요. dry_run이라, 호출해도 경로와 매개변수만 돌려줘요. 공개 HTTPS 주소와 허용 호스트를 둘 다 적었을 때만 원격 GET을 허용해요. 리다이렉트, 비공개 주소, 일반 HTTP, 너무 큰 응답은 막아요. 인증은 아직 없어요.
꼼꼼한 패키징 · 검증
스펙과 소스의 SHA-256을 확인하고, 다시 만들어보고, 이상한 파일이 있는지 봐요. 새 프로젝트는 임시 폴더에서 검증부터 하고 만들어요. 격리가 안 되면 strict 모드는 그냥 거부해요.
도구, 여덟 개예요
조회부터 OpenAPI 가져오기까지, Forge가 가진 도구예요.
forge_list_templates
기존 템플릿 세 개를 보여줘요. 읽기만 해요.
forge_preview
자연어 템플릿이 맞는지 미리 봐요.
forge_create
HTML/JSON/텍스트 도구 프로젝트를 만들어요.
forge_add_tool
기존 프로젝트에 도구를 안전하게 추가해요. 백업도 만들어요.
forge_test
소스가 온전한지, 잘 돌아가는지 확인해요. SDK가 있으면 인메모리 검증까지 해요.
forge_package
로컬 ZIP으로 묶어요. 같은 버전은 덮어쓰지 않아요.
forge_preview_openapi
OpenAPI에서 만들 수 있는 GET과 못 만드는 작업을 미리 보여줘요.
forge_import_openapi
project_name, spec_json, 그리고 원하면 isolation으로 새 프로젝트를 만들어요.
예제 JSON은 examples/pets_openapi.json에 있어요. YAML, 서버 URL 직접 가져오기, $ref/요청 바디/고급 인코딩/인증/쓰기 작업 자동 생성은 아직 안 돼요.
보안, 이렇게 해요
기본은 아무것도 보내지 않는 거예요.
생성된 도구는 기본으로 dry_run이에요. 실제 읽기 요청을 허용하려면, 생성된 프로젝트의 서버 프로세스 환경에서 아래 값을 설정해야 해요. 실제 API 주소를 정확히 알고, 믿을 때만 하세요.
ALDOL_API_BASE_URL='https://api.example.com/v1'
ALDOL_API_ALLOWED_HOST='api.example.com'실제 연결 모드에서는 공개 IP로 해석되는 HTTPS:443으로만, 리다이렉트 없이, 정해진 크기 안에서 JSON만 받아요. DNS 재바인딩이나 프록시 환경을 완전히 막아주는 경계는 아니에요. OAuth나 API 키도 아직 없어요. 외부 실행은 직접 승인하고 설정해야 해요. 믿을 수 없는 코드나 문서는 운영 환경에 바로 올리지 마세요.
참고
- Forge 자체의
forge.py는 가벼운 stdio JSON-RPC 런타임이에요. 아직 공식 SDK 기반으로 바꾸지는 않았어요. 공식 SDK PASS는 Forge가 만든 예제 서버 얘기예요. - 공식 Python MCP SDK v2 문서: py.sdk.modelcontextprotocol.io/v2
- 라이선스: MIT