Project Info MCP

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.

Category
访问服务器

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-slim and installs fastmcp>=2,<3.
  • The container’s working directory is /app and it runs python main.py by 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

  1. Open Claude Desktop
  2. Go to Settings → Developer → Model Context Protocol (MCP) Servers
  3. Add new MCP server:
    • Name: project-info-mcp
    • Command: docker
    • Arguments:
      run --rm -i project-info-mcp:latest
      
    • Save

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

  1. Open or start a new chat
  2. Ensure the MCP server project-info-mcp appears in the tools list (depending on UI version)
  3. Ask Claude to list MCP resources. You should see one resource with URI:
    • mcp://project-info-mcp/project_info and mime_type: text/markdown
  4. Ask Claude to read the project_info resource; it should return the contents of project_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 -v mount.
  • 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.md changes not reflected: verify you added the -v mount to bind the host file into /app/project_info.md in 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

  1. Build the image (from the project root):

    docker build -t project-info-mcp:latest .
    
  2. 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.
  3. 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
      
  4. Exercise the server in the Inspector:

    • Use the Resources panel to “List” resources.
    • You should see mcp://project-info-mcp/project_info with mime_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)

  1. 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.

  2. Start the MCP Inspector UI:

    npx -y @modelcontextprotocol/inspector
    
  3. Connect via Command (stdio):

    • Click “Connect”.
    • Transport: “Command”.
    • Command: python
    • Arguments:
      main.py
      
    • Click “Connect”. The Inspector will launch python main.py and speak MCP over stdio.
  4. 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.md is 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 -t when launching via Inspector, as a TTY can interfere with stdio framing.
  • 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.
  • 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:latest or python main.py.
  • Node requirement:
    • If npx isn’t found, install Node.js. On corporate machines, you may need a proxy configured for npm.
  • FastMCP CLI (alternative):
    • If you have fastmcp installed, 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/inspector directly is sufficient.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选