Heroku MCP文档阅读器(HTML/PDF-->Markdown)
- 自动部署 - 手动部署 - 从Heroku CLI设置所需的环境变量 - 局部测试 - 本地流式HTTP、SSE - 本地流式HTTP、SSE-请求示例 - 本地STDIO - 1.本地STDIO-Python STDIO客户端示例 - 2.本地STDIO-直拨电话 - 远程测试 - 远程SSE - 远程STDIO - 1.远程STDIO-在服务器上运行的Python STDIO客户端示例 - 2.远程STDIO-直接呼叫一次性Dyno - 3.即将推出-Heroku MCP网关!
自动部署

手动部署
从Heroku CLI设置所需的环境变量
使用Heroku CLI提取正确的值,而不是手动设置每个变量。
export APP_NAME=
heroku create $APP_NAME
heroku buildpacks:set heroku/python -a $APP_NAME
# set a private API key that you create, for example:
heroku config:set API_KEY=$(openssl rand -hex 32) -a $APP_NAME
heroku config:set STDIO_MODE_ONLY= -a $APP_NAME
# set the remote server type (module) that your web process will use (only relevant for web deployments)
heroku config:set REMOTE_SERVER_TRANSPORT_MODULE=如果你 *仅* 希望本地部署 STDIO 能力(否 SSE server),运行:
heroku ps:scale web=0 -a $APP_NAME如果您确实希望部署 SSE 服务器,运行:
heroku ps:scale web=1 -a $APP_NAME
heroku config:set WEB_CONCURRENCY=1 -a $APP_NAME(可选)将这些配置变量放入本地.env文件中进行本地开发:
heroku config -a $APP_NAME --shell | tee .env > /dev/null接下来,将您的应用程序连接到git仓库:
heroku git:remote -a $APP_NAME并部署!
git push heroku main通过以下方式查看日志:
heroku logs --tail -a $APP_NAME局部测试
一次性软件包安装:
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt本地流式HTTP、SSE
如果您正在测试(无状态)可流式HTTP或SSE,则需要在一个终端窗格中启动服务器:
source venv/bin/activate
export API_KEY=$(heroku config:get API_KEY -a $APP_NAME)
# Either run src.streamable_http_server or src.sse_server, here:
uvicorn src.streamable_http_server:app --reload*跑步 --reload 是可选的,但对当地发展很有帮助*
接下来,在一个新窗格中,您可以尝试对服务器运行一些查询:
本地流式HTTP、SSE-请求示例
第一轮:
export API_KEY=$(heroku config:get API_KEY -a $APP_NAME)在以下命令中,使用 example_clients/streamable_http_client.py 如果您运行了上面的流式HTTP服务器,或者 example_clients/sse_client.py 如果您正在运行SSE服务器。
列出工具:
python example_clients/streamable_http_client.py mcp list_tools | jq示例工具调用请求-HTML: *注意:如果您已设置,这将故意不起作用 STDIO_MODE_ONLY 到 true.*
python example_clients/streamable_http_client.py mcp call_tool --args '{
"name": "html_to_markdown",
"arguments": {
"url": "https://example.com"
}
}' | jq示例工具调用请求-PDF:
python example_clients/streamable_http_client.py mcp call_tool --args '{
"name": "pdf_to_markdown",
"arguments": {
"url": "https://arxiv.org/pdf/1706.03762"
}
}' | jq本地STDIO
有两种方法可以在STDIO模式下轻松测试MCP服务器:
1.本地STDIO-Python STDIO客户端示例
列出工具:
python example_clients/stdio_client.py mcp list_tools | jq示例工具调用请求-HTML: *注意:如果您已设置,这将故意不起作用 STDIO_MODE_ONLY 到 true.*
python example_clients/stdio_client.py mcp call_tool --args '{
"name": "html_to_markdown",
"arguments": {
"url": "https://example.com"
}
}' | jq示例工具调用请求-PDF:
python example_clients/stdio_client.py mcp call_tool --args '{
"name": "pdf_to_markdown",
"arguments": {
"url": "https://arxiv.org/pdf/1706.03762"
}
}' | jq2.本地STDIO-直拨电话
示例工具调用请求:
cat logs.txt" <<EOF
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"0.1.0","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"html_to_markdown","arguments":{"url":"https://example.com"}}}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"pdf_to_markdown","arguments":{"url":"https://arxiv.org/pdf/1706.03762"}}}
EOF再次注意,由于我们通过单个命令运行请求,因此无法模拟客户端的关闭请求。
3.即将推出-Heroku MCP网关!
很快,您还可以将MCP仓库连接到Heroku的MCP网关,这将使一次性MCP dynos的流式请求和响应变得简单!
Heroku MCP网关实现了会合协议,因此您可以通过无缝的来回通信轻松地与MCP服务器进行一次性dynos(代码执行隔离!)通信。
之后 部署和注册 您在heroku上的MCP应用程序,向heroku的请求 v1/mcp/servers 将向您展示您注册的MCP工具以及向 v1/agents/heroku 将能够通过一次性dynos自动执行您的MCP工具。
