درس ۴ از ۳۳

راه‌اندازی پروژه (Project setup)

عنوان اصلی: Project setup

هدف یادگیری: راه‌اندازی یک پروژه Python (یا TypeScript) که از SDK رسمی MCP استفاده می‌کند، آماده برای نوشتن اولین server.

مفاهیم کلیدی: uv، پکیج mcp[cli]، npm @modelcontextprotocol/server، virtualenv، ساختار پروژه.

SDK Python با نام mcp روی PyPI منتشر شده؛ extra به نام [cli] ابزار CLI توسعه mcp را که برای راه‌اندازی Inspector استفاده می‌شود، می‌آورد. installer پیشنهادی uv است چون سریع است و مفسر مخصوص پروژه را pin می‌کند. SDK TypeScript، server و client را به دو پکیج تقسیم می‌کند: @modelcontextprotocol/server و @modelcontextprotocol/client، به‌علاوه middleware اختیاری برای Express، Hono و ماژول HTTP داخلی Node.

ساختار حداقلی پروژه: pyproject.toml، server.py، و اختیاری client.py. پس از نصب، entry point یک فایل Python است که یک نمونه FastMCP می‌سازد و mcp.run() را صدا می‌زند.

مثال عملی — نصب

# Python
uv add "mcp[cli]"
# or
pip install "mcp[cli]"

# TypeScript
npm install @modelcontextprotocol/server
npm install @modelcontextprotocol/client

مثال عملی — Python (server خالی FastMCP، آماده توسعه)

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Demo")

if __name__ == "__main__":
    mcp.run()  # defaults to stdio transport

مثال عملی — TypeScript (server خالی، آماده توسعه)

import { McpServer, StdioServerTransport } from '@modelcontextprotocol/server';

const server = new McpServer({ name: 'demo', version: '1.0.0' });

async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
}

main();

اشتباهات رایج

  • فراموش کردن [cli] و بعد تعجب از اینکه mcp dev server.py یافت نمی‌شود.
  • مخلوط کردن sync و async در Python — FastMCP هر دو را پشتیبانی می‌کند، اما یک tool طولانی باید async def باشد اگر I/O انجام می‌دهد، تا STDIO loop بلاک نشود.