使用说明
查询Blogger MCP服务器
MCP服务器
- 仅查询 (不修改),
- 仅限您的白名单博客 (没有其他)托管在Blogger上](https://www.blogger.com/)平台。
为什么查询Blogger MCP服务器来阅读Blogger平台上的公共博客文章?
- 配置简单,您就可以开始了。
- 此服务器设计为安全、高效且易于与LLM一起使用。
参考项目:
1.如何使用这个图书馆?
1.1.获取Blogger API密钥
- 首选 Google 云控制台.
- 创建一个新项目(或选择一个现有项目)。
- 导航到
APIs & Services > Library.- 搜索“Blogger API”并启用它。
- 首选
APIs & Services > Credentials.- 单击“创建凭据”并选择“API密钥”。
- 复制生成的API密钥。
- 至关重要的是, 限制您的API密钥! 编辑API密钥:
- 在...之下
API restrictions,选择Restric key并选择Blogger API从下拉列表中。这确保了这个密钥只能调用Blogger API。 - 在...之下
Application restrictions,您可以选择添加HTTP referrers如果您的核心代理始终从特定域调用,或者如果您的MCP服务器始终在特定IP上运行,则为“IP地址”。- 对于大多数企业内部使用,API限制可能就足够了,但引用者或IP限制会增加另一层。
- 在...之下
1.2.设置 Query Blogger MCP Server
1.2.1克隆存储库
```bash
git clone https://github.com/karthiks/query_blogger_mcp_server
```
1.2.2 无容器方法: 安装了Python的主机
-
设置环境:
先决条件:pyenv已安装,用于安装python 3.10.16版本。
cd query_blogger_mcp_server python -m venv .venv pyenv versions pyenv local 3.10.16 pyenv version # python --version python -m venv .venv source .venv/bin/activate pip install . # pip install query_blogger_mcp_server -
配置此MCP服务器
#Copy .env.example to .env: cp .env.example .env # Edit the .env file and fill in BLOGGER_API_KEY, ALLOWED_DOMAINS, and optionally adjust MCP_SERVER_NAME, MCP_SERVER_VERSION, UVICORN_HOST, UVICORN_PORT. # On Windows (in cmd or PowerShell before starting server.py) #$env:BLOGGER_API_KEY="YOUR_ACTUAL_BLOGGER_API_KEY" # On Linux/macOS #export BLOGGER_API_KEY="YOUR_ACTUAL_BLOGGER_API_KEY"最终用户只需修改
.env文件(或直接在部署管道中设置环境变量)来配置MCP服务器,提供更流畅、更安全的体验。 -
运行此MCP服务器
# Run MCP Server in STDIO mode python -m query_blogger_mcp_server.server --stdio # Run MCP Server in HTTP mode python -m query_blogger_mcp_server.server # Or, the production-ready way if you have `query_blogger_mcp_server` installed: # uvicorn query_blogger_mcp_server.server:mcp.app --host 0.0.0.0 --port 8000 --workers 1 # Add workers for production这将启动您的MCP服务器,通常在http://0.0.0.0:8000.
1.2.2 容器化方法: 安装了Docker的主机
-
设置环境:
cd query_blogger_mcp_server # Build Docker Image: This command reads your Dockerfile and creates a Docker image for your application. Wait for the build process to complete. You should see output indicating each step of the Dockerfile being executed. docker build -t query-blogger-mcp-server . -
运行Docker容器以启动MCP服务器
docker run -d \ --name blogger_mcp_instance \ -p 8000:8000 \ -e BLOGGER_API_KEY="your_actual_google_blogger_api_key_here" \ -e ALLOWED_DOMAINS="kartzontech.blogspot.com,blog.codonomics.com" \ query-blogger-mcp-serverdocker run:创建和运行容器的命令。-d:以“分离”模式(在后台)运行容器,因此您的终端保持空闲。--name blogger_mcp_instance:分配一个唯一的名称blogger_mcp_instance到你的跑步容器。这使得以后更容易参考(例如,用于停止或查看日志)。-p 8000:8000:这是端口映射。它将主机(计算机)上的端口8000映射到Docker容器内的端口8000。-e BLOGGER_API_KEY="...":这将在容器中设置一个名为BLOGGER_API_KEY的环境变量。query-blogger-mcp-server:这是您在上一步中构建的Docker镜像的名称。
您的MCP服务器现在应该在Docker容器中运行,可以通过以下方式访问http://localhost:8000从您的主机!
-
验证Docker容器是否已启动并正在运行
docker ps # You should see a list of running containers, and blogger_mcp_instance should be among them, with 0.0.0.0:8000->8000/tcp in the PORTS column. -
查看容器日志(用于调试/监控)
docker logs blogger_mcp_instance -
停止并移除容器(完成后)
docker stop blogger_mcp_instance docker rm blogger_mcp_instance完成后,最好停止并删除容器以释放资源。
1.3.配置核心代理(LLM系统)
然后,您的核心代理(例如Ollama部署的Qwen2.5应用程序)将被配置为:
- 指向您的MCP服务器的URL(http://your-mcp-server-ip:8000).
- 提供以下工具定义
FastMCP自动生成get_blog_info_by_url和get_latest_posts_by_blog_url.
当用户询问博客内容时,LLM将学习调用这些工具。
1.3.1将本地托管的Query Blogger MCP服务器集成到Claude桌面
Claude Desktop似乎还不支持与MCP服务器的HTTP传输集成,因此我向以STDIO模式运行的本地MCP服务器展示了集成配置
您的claude桌面配置文件 claude_desktop_config.json 将有以下代码段
{
"mcpServers": {
"query_blogger": {
"command": "wsl",
"args": [
"bash", "-c",
"cd /absolute/path/to/your/query_blogger_mcp_server/in/wsl && source .venv/bin/activate && python -m query_blogger_mcp_server.server --stdio"
]
}
}
}
更改此配置文件后,重新启动claude桌面以检查 query_blogger 工具已成功集成,如下图所示:
如果启用了此工具,您可以检查正在运行的工具,如下图所示:
下面是利用Query Blogger MCP的对话截图中的链接:
2.使用法学硕士进行测试:
当您向连接到此MCP服务器的LLM发送提示时:
-
允许的域: “你能告诉我关于博客的事吗
https://blog.codonomics.com?"- 预期: LLM电话
get_blog_info_by_url到您的MCP服务器。MCP服务器调用Blogger API,返回信息。LLM生成摘要。
- 预期: LLM电话
-
允许的域名、帖子: “最近有什么帖子
https://blog.codonomics.com?"- 预期: LLM电话
get_latest_posts_by_blog_url到您的MCP服务器。MCP服务器调用Blogger API,返回帖子。LLM总结。
- 预期: LLM电话
-
不允许的域: “什么新闻
https://disallowed-website.com?"- 预期: LLM可能还会打电话
get_blog_info_by_url但是你的MCP服务器_is_allowed_domain检查将触发。它将返回一条错误消息:"Access denied: This tool can only query blogs from pre-approved domains"。然后,LLM应将此消息中继给用户。
- 预期: LLM可能还会打电话
-
修改尝试: 如果你不小心暴露了
create_post工具,并且LLM尝试使用它,Blogger API本身可能会拒绝API密钥(因为它仅用于只读访问),并且MCP服务器将返回错误。但是,通过仅定义只读工具,您可以抢先一步。
演示客户端LLM代理利用此QueryBloggerMCPServer
# Terminal 1
# First Start MCP Server
cd query_blogger_mcp_server
source .venv/bin/activate
python -m query_blogger_mcp_server.server
# Terminal 2
# Pre-requisite: You have qwenqwen2.5:0.5b model installed via Ollama
ollama run qwen2.5:0.5b
# Terminal 3
# Start LLM Agent that calls the MCP server
python -m query_blogger_mcp_server.server
cd query_blogger_mcp_server/demo/
source .venv/bin/activate
python ollama_mcp_agent.py
# Prompt:
# YOU: Tell me about our blog?
# AI: **Summary:** The provided blog is called **Codonomics** and it was published on April 26, 2010. It's an online platform focused on democratizing knowledge and experience.
发展与贡献
感谢您对Query Blogger MCP Server开发工作的考虑!
我鼓励社区发布问题并创建拉取请求。
在您开始之前,请查看我们的 贡献指南.
ToDos
[X] MVP: Allow Single Domain
[X] Allow Multiple Domains
[X] User Oboarding with README.md
[X] User onboarding with demo client llm agent leveraging this mcp server
[X] Dev Onboarding with README-DEV.md
[X] Externalize configurations
[X] Containerize with Docker
[X] Integration with Claude Desktop
[X] Security Fix: Upgrade to Vulnerable free Docker Image version (3.10 images have 2 critical vulnerabilityes) - Python-v3.14??
[ ] Unit Test Cases
[ ] Features
- [X] Get Blog Information by URL (get_blog_info_by_url)
- [X] Get Latest Posts by Blog URL (get_latest_posts_by_blog_url)
- Return response in Markdown format instead of raw HTML.
- [X] Search posts for query terms