proposal-generator-mcp
Proposal Generator MCP Server
Claude Desktop용 자동 제안서 생성 서버입니다. Google Drive에서 회사의 템플릿, 서비스 프로필, 요금표를 읽어 완전히 브랜딩된 차트와 표가 풍부한 .docx 제안서를 생성합니다 — 수동 서식 지정 없이.
1. 종속성 설치
cd proposal-mcp-server
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -e .Related MCP server: MCP Dataset Onboarding Server
2. Google 서비스 계정 만들기 (1회, 약 5분)
console.cloud.google.com으로 이동 → 프로젝트 생성/선택.
Google Drive API 활성화 (APIs & Services → Library → "Drive API" 검색 → Enable).
APIs & Services → Credentials → Create Credentials → Service Account.
이름 지정 (예:
proposal-bot) → Create → Done (프로젝트 수준에서 역할은 필요 없음).새 서비스 계정 클릭 → Keys 탭 → Add Key → JSON → 파일 다운로드.
service_account.json으로 이름을 바꾸고proposal-mcp-server/secrets/에 배치.서비스 계정 이메일을 기록 — 다음과 같은 형식:
proposal-bot@your-project.iam.gserviceaccount.com
3. 서비스 계정과 Drive 폴더 3개 공유
Google Drive에서 Template, Resources, Output 각각을 마우스 오른쪽 버튼으로 클릭 → Share → 서비스 계정 이메일 붙여넣기 → Editor 권한 부여 (Output은 쓰기 권한이 필요하고, Template/Resources는 Viewer만 필요하지만 Editor가 가장 간단합니다). 이것이 유일한 수동 Drive 단계입니다 — 이후에는 OAuth 로그인이 필요 없습니다.
4. 환경 구성
cp .env.example .envTEMPLATE_FOLDER_ID, RESOURCES_FOLDER_ID, OUTPUT_FOLDER_ID를 입력하세요 (각 폴더 URL에서 /folders/ 뒤의 문자열).
.env의 COMPANY_PROFILE_FILENAME 및 RATE_CARD_FILENAME과 일치하도록 Resources 파일을 확인/이름 변경하세요 (또는 실제 파일 이름에 맞게 해당 변수를 편집하면 됩니다).
5. Claude Desktop에 서버 등록
Claude Desktop 구성 파일을 편집하세요:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"proposal-generator": {
"command": "/absolute/path/to/proposal-mcp-server/venv/bin/python",
"args": ["-m", "proposal_mcp.server"],
"cwd": "/absolute/path/to/proposal-mcp-server/src",
"env": {
"SERVICE_ACCOUNT_FILE": "/absolute/path/to/proposal-mcp-server/secrets/service_account.json",
"TEMPLATE_FOLDER_ID": "...",
"RESOURCES_FOLDER_ID": "...",
"OUTPUT_FOLDER_ID": "..."
}
}
}
}Claude Desktop을 다시 시작하세요. 🔌 커넥터/도구 아이콘 아래에 "proposal-generator"가 표시될 것입니다.
6. 사용 방법
새 채팅에서 그냥 요청하세요:
클라우드 기술로 전환하려는 XYZ Bank를 위한 제안서를 작성해 주세요. 국가: 인도.
Claude가 자체적으로 다음을 수행합니다:
get_mandatory_sections를 호출하여 필수 섹션을 확인.get_company_profile을 호출하여 실제 역량에 기반한 콘텐츠 구성.브리프 또는 신뢰할 수 있는 회사 조사에서 제안 대상 회사의 국가를 확인한 후
resolve_rate_card_country(country)호출.관련 역할에 대해서만
get_rate_card(country, [...])호출. 응답에는 정확히 선택된 탭과 통화가 포함되며, 워크북에 국가 탭이 없으면 Constants/USD 일일 요금 폴백을 명확히 보고.9개 섹션 각각 초안 작성 (실제 표/불릿/차트와 간결한 기술 워크플로 포함).
generate_proposal(...)을 한 번 호출하여 브랜딩된 .docx를 렌더링하고 Output 폴더에 업로드 — Drive 링크 반환.
나중에 새 템플릿 추가
새 .docx (예: template_rfp.docx)를 Template 폴더에 업로드하고, 같은 폴더의 template_registry.json에 항목을 추가하세요 (assets/template_registry.example.json 참조), 예:
{ "default": "template.docx", "rfp": "template_rfp.docx" }그러면 Claude가 list_templates()를 호출하고 template_id: "rfp"를 전달할 수 있습니다.
프로젝트 구조
src/proposal_mcp/
config.py # env config + the 9 mandatory sections (hardcoded)
drive_client.py # Google Drive service-account wrapper
cache.py # TTL cache to avoid redundant Drive downloads
rate_card.py # multi-sheet (per-country) rate card parser
company_profile.py # extracts condensed text from services doc
charts.py # bar / pie / gantt chart and workflow-diagram PNG generation
proposal_sections.py # Pydantic schema Claude's content must follow
docx_generator.py # merges content into the branded template
server.py # MCP tool definitions (the public API)토큰 효율성 참고 사항
모든 도구는 요청된 특정 데이터만 반환합니다 (필터링된 요금 행, 요약된 프로필) — 전체 파일의 원시 바이트/행은 절대 반환하지 않습니다.
차트/표/문서 렌더링은 전적으로 Python에서 수행됩니다; Claude는 레이아웃, XML 또는 이미지 인코딩에 대해 추론할 필요가 없습니다.
요금표 선택은 정확한 일치 또는 명시적 국가 별칭(예:
United Kingdom→UK)을 사용합니다; 위험한 부분 문자열 일치는 절대 사용하지 않습니다. 전용 테이블이 없는 국가는 자동으로 Constants 시트의 USD 기본 일일 요금을 사용하며 결과에 그렇게 표시됩니다.요금표/프로필 다운로드는
CACHE_TTL_SECONDS동안 캐시되므로 한 세션에서 여러 제안서를 생성해도 매번 Drive에 다시 접근하지 않습니다.generate_proposal은 단일 호출입니다 — Claude가 문서를 조각조각 조립하기 위해 여러 번의 왕복이 필요하지 않습니다.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -licenseBqualityNot gradedmaintenanceAutomates the creation of standardized documentation by extracting information from source files and applying templates, with integration capabilities for GitHub, Google Drive, and Perplexity AI.33
- AlicenseNot gradedqualityDmaintenanceEnables automated dataset processing and onboarding using Google Drive integration. Provides metadata extraction, data quality assessment, and contract generation for CSV/Excel files through natural language interactions.1MIT
- FlicenseBqualityNot gradedmaintenanceGenerates professional, AI-powered freelance project proposals including executive summaries, scopes of work, and pricing structures. It leverages Claude to create tailored proposals based on specific project descriptions, budgets, and timelines.1
- FlicenseBqualityCmaintenanceEnables creating professional Word documents from markdown or structured content with fast, customized formatting via natural language.71
Related MCP Connectors
Deterministic, fully editable PowerPoint from typed slide intents. 200+ layouts, brand templates.
Turn a description into a shareable, editable PDF — invoices, certificates, reports, resumes.
Make videos and docs with your AI agent — describe what you need, every output stays editable.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Shiva-Matangulu/proposal-generator-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server