راهاندازی پروژه (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 بلاک نشود.