Project Info MCP
Serves a single resource (project_info.md) as text/markdown over MCP HTTP transport, for use by MCP-aware clients like Claude Desktop.
README
Project Info MCP — HTTP Transport + Docker Setup
This repository contains a minimal FastMCP 2.x server that exposes a single resource: the file project_info.md (served as text/markdown).
It now uses FastMCP's built‑in HTTP transport (no separate FastAPI server). The service listens on port 8000 and speaks the Model Context Protocol over HTTP. This is intended for MCP‑aware clients (e.g., Claude Desktop, dev tools), not as a generic REST API.
Below you will find instructions to:
- Build and run the server with Docker Desktop
- Configure Claude Desktop to launch the server inside Docker and communicate with it over stdio (MCP command transport)
Prerequisites
- Docker Desktop installed and running
- Optional (local testing without Docker): Python 3.13+ with
fastmcp>=2,<3 - Claude Desktop (with MCP support)
Build the Docker image
Run these commands from the project root (where the Dockerfile lives).
docker build -t project-info-mcp:latest .
Notes:
- The image uses
python:3.13-slimand installsfastmcp>=2,<3. - The container’s working directory is
/appand it runspython main.pyby default.
Run the container (manual test)
The MCP server runs over HTTP on port 8000. You can run the container interactively to see logs:
docker run --rm -it project-info-mcp:latest
If you want the container to serve your current local project_info.md (so edits are reflected live), mount it read-only, and publish port 8000:
# Windows PowerShell (from project root)
docker run --rm -i -p 8000:8000 -v "$PWD/project_info.md:/app/project_info.md:ro" project-info-mcp:latest
# macOS/Linux
docker run --rm -i -p 8000:8000 -v "${PWD}/project_info.md:/app/project_info.md:ro" project-info-mcp:latest
Tip (Windows CMD): replace $PWD with %CD%.
Run as a service with Docker Compose (optional)
docker compose up --build
# stop with
docker compose down
This is useful for keeping the container running while you exec/attach for debugging. The Compose file maps 8000:8000 for HTTP transport.
Using FastMCP HTTP transport
The server code follows the FastMCP HTTP transport pattern:
from fastmcp import FastMCP
mcp = FastMCP("My MCP Server")
@mcp.tool
def greet(name: str) -> str:
return f"Hello, {name}!"
if __name__ == "__main__":
mcp.run(transport="http", port=8000)
In this repository, we expose a resource instead of a tool. See main.py for the concrete implementation. Start the server locally with:
pip install -e .
python main.py
# MCP is listening on http://127.0.0.1:8000
Note: MCP over HTTP is not a human‑friendly REST API. Use an MCP‑capable client to connect.
Configure Claude Desktop to use the container
Claude Desktop can launch MCP servers via a command transport. We will point it to docker run ... so it starts the container on-demand and communicates over stdio.
You have two configuration methods. Pick one.
Option A: Configure via Claude Desktop UI
- Open Claude Desktop
- Go to Settings → Developer → Model Context Protocol (MCP) Servers
- Add new MCP server:
- Name:
project-info-mcp - Command:
docker - Arguments:
run --rm -i project-info-mcp:latest - Save
- Name:
If you want the server to read your host project_info.md, add a bind mount in Arguments (be careful with quoting on Windows):
run --rm -i
-v ${PWD}/project_info.md:/app/project_info.md:ro
project-info-mcp:latest
On Windows PowerShell, ${PWD} expands to the current directory. In CMD, use %CD%. If quoting is problematic in the UI, you can instead use the JSON file method below where multi-arg arrays are clearer.
Option B: Configure via claude_desktop_config.json
Create or edit the config file at the platform path below and add an entry under mcpServers.
- Windows:
%APPDATA%/Claude/claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Minimal config (no bind mount):
{
"mcpServers": {
"project-info-mcp": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"project-info-mcp:latest"
]
}
}
}
Config with bind mount to serve your local project_info.md read-only:
Windows (PowerShell uses $PWD; for CMD replace with %CD%):
{
"mcpServers": {
"project-info-mcp": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "${PWD}/project_info.md:/app/project_info.md:ro",
"project-info-mcp:latest"
]
}
}
}
macOS/Linux:
{
"mcpServers": {
"project-info-mcp": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "${PWD}/project_info.md:/app/project_info.md:ro",
"project-info-mcp:latest"
]
}
}
}
After saving the config, restart Claude Desktop.
Verify in Claude Desktop
- Open or start a new chat
- Ensure the MCP server
project-info-mcpappears in the tools list (depending on UI version) - Ask Claude to list MCP resources. You should see one resource with URI:
mcp://project-info-mcp/project_infoandmime_type: text/markdown
- Ask Claude to read the
project_inforesource; it should return the contents ofproject_info.md.
Troubleshooting
- Docker command not found: ensure Docker Desktop is installed and running.
- Permission/volume errors on Windows: try running PowerShell as Administrator, or use
%CD%(CMD) or a full path for the-vmount. - No resources listed in Claude: check Claude’s developer settings and logs; confirm the container starts (you should see logs in the Claude console). Try running the container manually to confirm it works:
docker run --rm -it project-info-mcp:latest. project_info.mdchanges not reflected: verify you added the-vmount to bind the host file into/app/project_info.mdin the container.
Local (non-Docker) run
If you prefer to test locally without Docker:
pip install -e .
python main.py
Claude Desktop config (command transport) would then point to python with args ["main.py"] instead of docker run ....
Reference
- Resource URI exposed by the server:
mcp://project-info-mcp/project_info - MIME type:
text/markdown - Base image:
python:3.13-slim - Main entrypoint:
python main.py
Test with MCP Inspector (npx @modelcontextprotocol/inspector)
Use the official MCP Inspector to validate and debug the server. This works with the Dockerized server or a local Python run.
Prerequisites
- Node.js 18+ (includes
npx). Install from https://nodejs.org if needed. - Your server code from this repo (already set up).
- Optional: Docker Desktop if you want to run the containerized server.
Option A — Inspect the Dockerized server
-
Build the image (from the project root):
docker build -t project-info-mcp:latest . -
Start the MCP Inspector UI:
npx -y @modelcontextprotocol/inspector- This opens the Inspector in your browser (or prints a local URL). If a browser doesn’t open automatically, copy the URL from the terminal and paste it in your browser.
-
Connect the Inspector to your server using Command (stdio):
- Click “Connect”.
- Transport: choose “Command”.
- Command:
docker - Arguments (no bind mount):
run --rm -i project-info-mcp:latest - Click “Connect”. The Inspector will launch the container and communicate over stdio.
Optional: If you want live reads of your host file
project_info.md, add a bind mount (adjust path syntax for your shell/OS):- Windows PowerShell:
run --rm -i -v ${PWD}/project_info.md:/app/project_info.md:ro project-info-mcp:latest - Windows CMD (use
%CD%instead of${PWD}) or macOS/Linux (use${PWD}):run --rm -i -v ${PWD}/project_info.md:/app/project_info.md:ro project-info-mcp:latest
-
Exercise the server in the Inspector:
- Use the Resources panel to “List” resources.
- You should see
mcp://project-info-mcp/project_infowithmime_type: text/markdown. - Click/execute a “Read Resource” action and select that URI. The Inspector will show the contents of
project_info.md.
Option B — Inspect a locally-run server (no Docker)
-
Install deps and run the server locally:
pip install -e . python main.py(Or with
uv:uv run python main.py)Note: You don’t have to start the server first if you use Inspector’s Command transport—Inspector can launch it for you. See next step.
-
Start the MCP Inspector UI:
npx -y @modelcontextprotocol/inspector -
Connect via Command (stdio):
- Click “Connect”.
- Transport: “Command”.
- Command:
python - Arguments:
main.py - Click “Connect”. The Inspector will launch
python main.pyand speak MCP over stdio.
-
List and read resources as above.
What you should see/verify
- A single resource listed:
mcp://project-info-mcp/project_info. - Reading the resource returns the contents of your
project_info.md. - If
project_info.mdis missing, the server returns a short markdown message asking you to create it.
Tips and troubleshooting (Inspector)
- Docker flags:
- Use
-i(interactive stdin). Do not add-twhen launching via Inspector, as a TTY can interfere with stdio framing.
- Use
- Windows paths/quoting:
- PowerShell uses
${PWD}; CMD uses%CD%. If quoting is tricky in the Inspector UI, try the local (non‑Docker) path first to confirm connectivity.
- PowerShell uses
- If no resources appear:
- Check the Inspector’s connection log (left/bottom panel) for startup errors.
- Try running the server outside Inspector to ensure it starts:
docker run --rm -it project-info-mcp:latestorpython main.py.
- Node requirement:
- If
npxisn’t found, install Node.js. On corporate machines, you may need a proxy configured fornpm.
- If
- FastMCP CLI (alternative):
- If you have
fastmcpinstalled, it offers a dev helper that shells out to the Inspector and wires a proxy for you. Example (syntax may vary across versions):python -m fastmcp dev -- command python main.py - This is optional; using
npx @modelcontextprotocol/inspectordirectly is sufficient.
- If you have
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。