
作为一个开发了多个AI Agent应用的工程师,我经常遇到一个尴尬场景:AI助手能聊天、能推理,但它就是无法访问你内部系统的数据。公司的工单系统、数据库、SaaS工具都在那里,模型却没有任何方式调用它们。
这正是MCP(Model Context Protocol)要解决的痛点。到了2026年,MCP已经成为生产环境AI Agent与外界通信的默认方式。如果你正在构建需要真实数据、而不是只会聊天的AI Agent,你一定会需要搭建MCP服务器。下面这份实战指南,带你从零开始,用Python写出一个可运行的MCP服务器。
## MCP:AI Agent的“万能插座”
MCP是一个基于JSON-RPC 2.0的协议,它标准化了AI应用连接外部工具、资源和提示词的方式。你可以把它理解为AI世界的USB-C接口——一个标准连接器,兼容千种设备。
MCP出现之前,每个Agent集成都是一堆零散的胶水代码:对接OpenAI函数调用写一套,对接LangChain工具写一套,再为自研Agent框架写一套。模型或框架一变,这些代码立刻作废。
2026年的今天,生态已经高度整合,局面大不一样:
所有主流Agent框架——Claude、OpenAI Agents、LangGraph、Cursor、Windsurf——都内置了原生MCP客户端。协议规范保持稳定(JSON-RPC 2.0,三种能力面:工具、资源、提示词)。传输方式回归简单可靠:本地用stdio,远程用Streamable HTTP。服务端SDK已相当成熟,Python的mcp包加上FastMCP帮助类,约20行代码就能搭建一个完整服务器。
这意味着:你只要写一次服务器,全球任何兼容MCP的AI助手都能直接使用你的工具。这就是MCP的核心价值,也是它在短短不到一年内从极客玩具变成行业标配的原因。
## 三种能力面:工具、资源、提示词
一个MCP服务器本质上是一个通过传输层讲JSON-RPC 2.0的程序,它向外界暴露三种能力:
工具(Tools):模型可以调用的函数,可带副作用或不带副作用,例如get_weather(city)、create_issue(repo, title)。
资源(Resources):模型可以加载的只读数据,例如file:///logs/app.log、db://users/42。
提示词(Prompts):客户端可以渲染的可复用提示模板,例如带占位符的“总结这个PR”。
工具负责做事,资源提供数据,提示词是配方。理解了这层心智模型,你就掌握了95%的构建场景。
## 20行代码快速上手FastMCP
最快的上手方式是用官方Python SDK配合FastMCP帮助类。直接安装:
```python
pip install "mcp[fastmcp]"
```
这是一个完整可运行的服务器示例,包装了一个虚构的REST API——就假设是你公司的工单系统吧:
```python
from mcp.server.fastmcp import FastMCP
import httpx
mcp = FastMCP("ticket-server", log_level="WARNING")
@mcp.tool()
async def get_ticket(ticket_id: str) -> str:
"""按ID获取一条支持工单。返回JSON格式的状态、优先级和负责人信息。"""
async with httpx.AsyncClient(timeout=10) as client:
resp = await client.get(f"https://api.example.com/tickets/{ticket_id}")
resp.raise_for_status()
return resp.text
@mcp.tool()
async def search_tickets(query: str, limit: int = 5) -> str:
"""按全文搜索支持工单,返回匹配结果的JSON数组。"""
async with httpx.AsyncClient(timeout=10) as client:
resp = await client.get(
"https://api.example.com/tickets/search",
params={"q": query, "limit": limit}
)
resp.raise_for_status()
return resp.text
```
注意看这段代码做了什么:
引入FastMCP类,创建名为“ticket-server”的服务器实例。用@mcp.tool()装饰器把普通Python异步函数变成Agent可调用的工具。使用httpx库发起异步HTTP请求,把外部API的JSON响应原样返回给模型。
整个过程这就是标准的API集成,只需要确保http包已安装:
```python
pip install "mcp[fastmcp]" httpx
```
## 集成到你的Agent
服务器写好后,你根本不需要关心传输层细节。FastMCP自动处理了所有协议装卸。要启动这个服务器,只需要一个Python脚本入口:
```python
if __name__ == "__main__":
mcp.run()
```
默认情况,mcp.run()使用stdio传输——适合本地开发和测试。如果你的Agent跑在远程服务器,想通过HTTP暴露的话,可以改成:
```python
mcp.run(transport="streamable-http")
```
这样任何一个支持MCP客户端的外部Agent,只要知道你的服务地址,就能直接调用你定义的get_ticket和search_tickets工具。
在这里注意一个细节:在你的Python环境中,手工代码中使用的是mcp.run(),但部署到生产环境时,更推荐用官方CLI命令mcp run ticket_server.py。它同时负责与客户端握手和任务管理,避免了长期运行进程时资源泄漏的问题。
## 实用场景与组合拳
一旦你掌握了MCP服务器的写法,就会发现它不只是用来包装一个API的玩具。它可以做很多实际的事情:
调用内部数据分析平台,自动生成报表并推送到钉钉群。作为一个抽象层,接上企业内部身份验证,让AI Agent安全地操作数据库或工单系统。把SaaS工具的网页操作封装成可调用的API工具,例如自动在美团上订餐、在美团外卖中跟踪配送状态。
一个MCP服务器可以暴露多个工具,它们共享同一个传输通道。你还可以在async代码里自由组合多个第三方API,统一呈现在Agent面前,极大提升自动化能做的事。
## 把你的技能变成副业
现在,掌握了这个技能,你可以做什么?
由于MCP已经成为行业标准,所有主流AI Agent框架都原生支持。所以技术门槛并不高,但在中文互联网上很少有人系统地讲清楚这件事。许多企业已经意识到:内部数据接不进来,是AI Agent在生产环境落地最大的卡点。
你在闲鱼、猪八戒、淘宝服务上面搜索“AI Agent开发”“MCP服务”这类关键词,会发现需求已经悄悄冒出来了。很多公司愿意花几百到几千元,请人把一个内部API包成一个MCP服务器,让他们的AI助手可以调通业务数据。
搭建MCP服务器不再是只属于大厂专家的技能,而是一个所有Python开发者都可以掌握的、直接能创造价值的自动化技术。结合API集成,再懂点Python,这个方向的需求会持续增长。如果你想多了解其他品类的AI Agent副业玩法,可以看看我分享的其他实战案例。
现在就可以动手试试,把你的第一个MCP服务器跑起来。