内容
# 游戏资金管理服务器
游戏资金管理服务器,用于浏览 [GameFunds](https://github.com/GameDevGrzesiek/GameFunds) 目录的本地副本(出版商、资助、风险投资)并跟踪个人外联渠道。
## 功能描述
**功能:**
- 搜索和筛选 GameFunds 目录中的 200 多个资金来源
- 将您的项目(类型、预算、阶段、国家)与出版商、资助和投资者进行匹配
- 返回提交摘要、推介评估标准和确定性推介检查
- 在本地保存您的渠道状态(联系人、笔记、跟进)
**不具备功能:**
- 不了解成人/NSFW 游戏 — 上游目录几乎没有涉及这些内容;`genre_signal: none` 是诚实的,不是错误
- 不保证资助金额 — 许多条目表示“变动”或省略数字;没有预算数据的资助会显示 `confidence: low`
- 不支持英语以外的语言进行类型匹配 — 查询如“przygodowa”不会映射到目录术语
- 不取代法律或财务建议 — 它显示目录笔记,而不是交易条款
## 工具
十三项工具,按其作用对象分组。目录工具是公开的(读取范围);渠道工具是服务器所有者私有的(写入范围)。
| 工具 | 范围 | 功能 |
|------|-------|--------------|
| `match_project` | 读取 | 为项目(类型、预算、阶段、国家)匹配资金来源。返回按资金类型分组的候选者 — 参见 [评分](#评分)。 |
| `search_funding` | 读取 | 目录的全文本搜索。连字符/斜杠/`&` 是安全的(`turn-based`、`hack & slash`)。 |
| `filter_funding` | 读取 | 结构化筛选:章节、国家、预算等级、社区评级、是否有电子邮件。 |
| `get_entity` | 读取 | 某个资金来源的完整记录:链接、联系人、提交路径、笔记、金额。 |
| `get_submission_brief` | 读取 | 如何向特定资金来源推介:渠道、提交链接、所述标准、硬性筛选、作品集。 |
| `get_pitch_rubric` | 读取 | 根据目标的资金类型(出版商/风险投资/项目投资者/资助)量身定制的推介评估标准,源自上游推介教程。 |
| `review_pitch` | 读取 | 确定性推介检查:缺少的幻灯片、缺少的数字、硬性筛选违规。 它在稳固的推介中保持沉默 — 它不会填充。 |
| `gamefunds_help` | 读取 | 指导主题 + 指向概念指南的桥梁(`gamefunds://guide/*`)。 |
| `check_updates` | 读取 | 上游目录更改的廉价 SHA 检查。 |
| `set_status` | 写入 | 为资金来源设置渠道状态(`contacted`、`in_talks`、`signed`...)。 |
| `add_note` | 写入 | 向渠道条目追加有日期的笔记。 |
| `list_pipeline` | 写入 | 您的外联状态;`stale_days=N` 显示逾期的跟进。 |
| `sync_directory` | 写入 | 从上游同步目录 + 指南。 |
## 评分
`match_project` 使用 **确定性启发式 — 无 LLM**。结果按资金类型分组(`publisher`、`vc_equity`、`project_investor`、`grant`),**分数仅在同一组内可比较**:资助评分为 15 的并不比出版商评分为 66 的“差”,它们是不同的资金路径。
每个候选者都带有 `breakdown`(预算/国家/阶段/类型/社区)、`confidence`(`high`/`medium`/`low`)和人类可读的 `reasons`。两个设计选择值得注意:
- **对于出版商,类型优先于国家。** 来自美国的 cozy-game 出版商优于来自您所在国家的通用出版商 — 国家是平局决胜者(权重 5),而不是驱动因素。对于资助,国家几乎是决定性的(权重 28),因为资助是区域性的。
- **缺少的数据不是零。** `breakdown.budget: null` 和 `confidence: low` 表示目录缺少数据,而不是评分过低。`genre_signal: none` 表示没有目录条目与您的类型匹配 — 然后排名仅基于预算和阶段,并带有 `genre_warning`,您应该手动验证。
**硬性筛选** 会删除无法工作的资金来源(计入 `hard_filtered`):预算相差 2+ 级别、资助范围外或类型排斥冲突(例如 sandbox 游戏与出版商说“严格不接受 sandbox”)。这些会被删除,而不是降级。
完整的权重表位于 `data/help/scoring.md` 中,可在运行时通过 `gamefunds_help("scoring")` 访问。
## 数据归属
目录数据来自 [github.com/GameDevGrzesiek/GameFunds](https://github.com/GameDevGrzesiek/GameFunds) © Grzegorz Wątroba,遵循 MIT 许可。
`data/rubrics.json` 源自 Grzegorz 的 `PitchDeckTutorial.md`,位于同一仓库中。
Grzegorz 是一名游戏开发者 — 他的游戏是 [**Foxy Dumplings**](https://store.steampowered.com/app/4184130/Foxy_Dumplings/),在 Steam 上。如果这个工具对您有帮助,愿列表可以帮助表示感谢。
数据库 (`data/gamefunds.db`) 和同步的指南 (`data/guides/`) **不** 在 git 上 — 运行 `gamefunds sync --apply` 进行首次使用。
您的渠道(出版商联系人、笔记)仅存在于您的本地数据库中,绝不能提交。
## 本地设置(标准输入输出,无令牌)
```bash
git clone <此仓库>
cd gamefunds-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
gamefunds sync --apply
```
标准输入输出模式 **不需要** `GAMEFUNDS_TOKEN`。身份验证仅适用于 HTTP 传输。
数据库、指南和日志的路径从软件包安装位置(而非进程 cwd)解析。如果需要,请使用 `GAMEFUNDS_DATA_DIR` 进行覆盖(例如 Docker 卷在 `/app/data`)。
## 连接到代理
### Claude Code(本地,标准输入输出)
一个命令,从任意目录:
```bash
claude mcp add gamefunds -- /绝对路径/to/gamefunds-mcp/.venv/bin/python -m gamefunds.server
```
使用 **虚拟环境的 Python 绝对路径**,而不是裸 `python` — 代理启动服务器作为子进程,不会继承您的激活虚拟环境。
添加 `--scope project` 以将其写入项目的 `.mcp.json`(可与团队共享)而不是您的个人配置。
<details>
<summary>手动配置而非 CLI</summary>
在项目根目录创建 `.mcp.json`:
```json
{
"mcpServers": {
"gamefunds": {
"command": "/绝对路径/to/gamefunds-mcp/.venv/bin/python",
"args": ["-m", "gamefunds.server"]
}
}
}
```
`cwd` 是可选的 — 数据路径从软件包安装位置解析,而不是进程工作目录。
</details>
### Claude Code(远程,HTTP + 令牌)
如果您部署了服务器(参见 [HTTP 部署](#http-部署)):
```bash
claude mcp add --transport http gamefunds https://您的主机.example/mcp \
--header "Authorization: Bearer $GAMEFUNDS_TOKEN"
```
### Claude 桌面版
直接编辑配置文件,然后重启应用程序:
- macOS — `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows — `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"gamefunds": {
"command": "/绝对路径/to/gamefunds-mcp/.venv/bin/python",
"args": ["-m", "gamefunds.server"]
}
}
}
```
`cwd` 是可选的 — 数据路径从软件包安装位置解析,而不是进程工作目录。
### Cursor
与上述相同的 JSON,位于 `.cursor/mcp.json`(每个项目)或 `~/.cursor/mcp.json`(全局)。
### 验证其工作
在 Claude Code 中,运行 `/mcp` — `gamefunds` 应该作为 **connected** 显示,暴露 13 个工具和 6 个资源。如果不是,请检查 `gamefunds sync --apply` 是否已运行以及 Python 路径是否为绝对路径。
> **编辑服务器代码?** 代理启动服务器一次并保持进程活跃。代码更改 **不会** 被拾取,直到您重新连接(`/mcp` → 重新连接,或重启代理)。测试一个过时的进程是得出有效修复程序被破坏的最快方法。
### 然后询问它
工具是自我描述的,因此普通语言有效:
```
我正在制作一个 cozy pottery sim。两名开发人员,波兰,$180k 预算,完成垂直切片。 我应该在哪里寻找资金?
```
```
Team17 希望什么样的推介,他们的提交链接是什么?
```
```
使用 Markdown 审查此推介,适用于 Whitethorn Games:<粘贴您的推介文档>
```
```
记录我今天向 Anshar 发送了 Kiln,跟进日期为两周后。
```
类型匹配针对 **英文** 目录进行 — 用英文描述类型,即使您用其他语言与代理交流。如果目录中没有匹配的类型,`match_project` 会告知您(`genre_signal: none`),而不是编造一个候选列表。
## 命令行界面
| 命令 | 目的 |
|---------|---------|
| `gamefunds sync` | 上游同步的干运行 |
| `gamefunds sync --apply` | 将目录 + 指南下载到本地数据库 |
| `gamefunds check` | 上游更新的廉价 SHA 检查 |
| `gamefunds stats` | 实体和渠道计数 |
| `gamefunds token` | 生成安全的 HTTP 承载令牌 |
| `gamefunds serve --transport http` | 运行 HTTP 服务器(需要令牌) |
## HTTP 部署
**HTTPS 是必需的。** 在第一个请求上发送的承载令牌在纯 HTTP 上可见。永远不要在没有 TLS 终止的情况下公开暴露 HTTP。
服务器 **拒绝** 在没有 `GAMEFUNDS_TOKEN` 的情况下以 HTTP 模式启动:
```bash
gamefunds token # 复制输出
export GAMEFUNDS_TOKEN=...
gamefunds serve --transport http --port 8080
```
生成 `.env` 文件,从 `.env.example` 开始。可选的**共享只读**令牌:`GAMEFUNDS_TOKEN_READONLY` — 仅限目录访问;渠道数据被隐藏,渠道工具被拒绝,并附有设置说明。
### 速率限制
所有者令牌:**60 请求/分钟** (`GAMEFUNDS_RATE_LIMIT`)。共享只读令牌:**300/分钟** (`GAMEFUNDS_RATE_LIMIT_READONLY`) — 较高,因为许多论坛用户共享一个令牌。一个 LLM 对话使用约 10–50 个工具调用。限制按 Bearer 令牌的 SHA-256 哈希键入 — 原始令牌从未出现在日志或速率限制存储中。
### Docker
```bash
cp .env.example .env # 设置 GAMEFUNDS_TOKEN
docker compose up -d --build
```
- 默认绑定到 `127.0.0.1:8080` — 在前面放置 **nginx、Caddy 或 Traefik** 以启用 TLS
- `GAMEFUNDS_DATA_DIR`(默认为镜像中的 `/app/data`)保存数据库、同步的指南和日志 — 将其作为卷挂载
- 新容器自动运行 `gamefunds sync --apply` 如果不存在数据库
- 内存限制:256 MB
### 范围
| 范围 | 工具 |
|-------|-------|
| `read` | 搜索、筛选、获取实体(仅限目录,不包括渠道块)、匹配项目、简介、评估标准、推介审查、帮助、检查更新 |
| `write` | 设置状态、添加笔记、列出渠道、同步目录;获取实体包括渠道 |
调用渠道工具的只读令牌会收到一条明确的消息,指向开源仓库 — 而不是 500 错误,且无私有数据。
## 开发
```bash
pip install -e ".[dev,http]"
pytest
```
## 安全检查清单
- [ ] 在 HTTP 启动前设置 `GAMEFUNDS_TOKEN`
- [ ] 在流量到达应用程序之前,TLS 终止
- [ ] `.env` 未提交(在 `.gitignore` 中)
- [ ] `data/*.db` 和 `data/guides/` 未提交
- [ ] 生产环境中使用 `GAMEFUNDS_LOG_ARGS=0`(默认 — 无参数日志)
## 许可证
MIT — 参见 [LICENSE](LICENSE)。GameFunds 目录数据 © Grzegorz Wątroba,在 MIT 许可下使用,并附有署名。